aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/reflect.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/reflect.py')
-rwxr-xr-xlib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/reflect.py827
1 files changed, 0 insertions, 827 deletions
diff --git a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/reflect.py b/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/reflect.py
deleted file mode 100755
index f5297548..00000000
--- a/lib/python2.7/site-packages/Twisted-12.2.0-py2.7-linux-x86_64.egg/twisted/python/reflect.py
+++ /dev/null
@@ -1,827 +0,0 @@
-# -*- test-case-name: twisted.test.test_reflect -*-
-# Copyright (c) Twisted Matrix Laboratories.
-# See LICENSE for details.
-
-"""
-Standardized versions of various cool and/or strange things that you can do
-with Python's reflection capabilities.
-"""
-
-import sys
-import os
-import types
-import pickle
-import traceback
-import weakref
-import re
-import warnings
-
-try:
- from collections import deque
-except ImportError:
- deque = list
-
-RegexType = type(re.compile(""))
-
-
-try:
- from cStringIO import StringIO
-except ImportError:
- from StringIO import StringIO
-
-from twisted.python.util import unsignedID
-from twisted.python.deprecate import deprecated, deprecatedModuleAttribute
-from twisted.python.deprecate import _fullyQualifiedName as fullyQualifiedName
-from twisted.python.versions import Version
-
-
-
-class Settable:
- """
- A mixin class for syntactic sugar. Lets you assign attributes by
- calling with keyword arguments; for example, C{x(a=b,c=d,y=z)} is the
- same as C{x.a=b;x.c=d;x.y=z}. The most useful place for this is
- where you don't want to name a variable, but you do want to set
- some attributes; for example, C{X()(y=z,a=b)}.
- """
-
- deprecatedModuleAttribute(
- Version("Twisted", 12, 1, 0),
- "Settable is old and untested. Please write your own version of this "
- "functionality if you need it.", "twisted.python.reflect", "Settable")
-
- def __init__(self, **kw):
- self(**kw)
-
- def __call__(self,**kw):
- for key,val in kw.items():
- setattr(self,key,val)
- return self
-
-
-class AccessorType(type):
- """
- Metaclass that generates properties automatically.
-
- This is for Python 2.2 and up.
-
- Using this metaclass for your class will give you explicit accessor
- methods; a method called set_foo, will automatically create a property
- 'foo' that uses set_foo as a setter method. Same for get_foo and del_foo.
-
- Note that this will only work on methods that are present on class
- creation. If you add methods after the class is defined they will not
- automatically become properties. Likewise, class attributes will only
- be used if they are present upon class creation, and no getter function
- was set - if a getter is present, the class attribute will be ignored.
-
- This is a 2.2-only alternative to the Accessor mixin - just set in your
- class definition::
-
- __metaclass__ = AccessorType
-
- """
-
- deprecatedModuleAttribute(
- Version("Twisted", 12, 1, 0),
- "AccessorType is old and untested. Please write your own version of "
- "this functionality if you need it.", "twisted.python.reflect",
- "AccessorType")
-
- def __init__(self, name, bases, d):
- type.__init__(self, name, bases, d)
- accessors = {}
- prefixs = ["get_", "set_", "del_"]
- for k in d.keys():
- v = getattr(self, k)
- for i in range(3):
- if k.startswith(prefixs[i]):
- accessors.setdefault(k[4:], [None, None, None])[i] = v
- for name, (getter, setter, deler) in accessors.items():
- # create default behaviours for the property - if we leave
- # the getter as None we won't be able to getattr, etc..
- if getter is None:
- if hasattr(self, name):
- value = getattr(self, name)
- def getter(this, value=value, name=name):
- if name in this.__dict__:
- return this.__dict__[name]
- else:
- return value
- else:
- def getter(this, name=name):
- if name in this.__dict__:
- return this.__dict__[name]
- else:
- raise AttributeError("no such attribute %r" % name)
- if setter is None:
- def setter(this, value, name=name):
- this.__dict__[name] = value
- if deler is None:
- def deler(this, name=name):
- del this.__dict__[name]
- setattr(self, name, property(getter, setter, deler, ""))
-
-
-class PropertyAccessor(object):
- """
- A mixin class for Python 2.2 that uses AccessorType.
-
- This provides compatability with the pre-2.2 Accessor mixin, up
- to a point.
-
- Extending this class will give you explicit accessor methods; a
- method called set_foo, for example, is the same as an if statement
- in __setattr__ looking for 'foo'. Same for get_foo and del_foo.
-
- There are also reallyDel and reallySet methods, so you can
- override specifics in subclasses without clobbering __setattr__
- and __getattr__, or using non-2.1 compatible code.
-
- There is are incompatibilities with Accessor - accessor
- methods added after class creation will *not* be detected. OTOH,
- this method is probably way faster.
-
- In addition, class attributes will only be used if no getter
- was defined, and instance attributes will not override getter methods
- whereas in original Accessor the class attribute or instance attribute
- would override the getter method.
- """
- # addendum to above:
- # The behaviour of Accessor is wrong IMHO, and I've found bugs
- # caused by it.
- # -- itamar
-
- deprecatedModuleAttribute(
- Version("Twisted", 12, 1, 0),
- "PropertyAccessor is old and untested. Please write your own version "
- "of this functionality if you need it.", "twisted.python.reflect",
- "PropertyAccessor")
- __metaclass__ = AccessorType
-
- def reallySet(self, k, v):
- self.__dict__[k] = v
-
- def reallyDel(self, k):
- del self.__dict__[k]
-
-
-class Accessor:
- """
- Extending this class will give you explicit accessor methods; a
- method called C{set_foo}, for example, is the same as an if statement
- in L{__setattr__} looking for C{'foo'}. Same for C{get_foo} and
- C{del_foo}. There are also L{reallyDel} and L{reallySet} methods,
- so you can override specifics in subclasses without clobbering
- L{__setattr__} and L{__getattr__}.
-
- This implementation is for Python 2.1.
- """
-
- deprecatedModuleAttribute(
- Version("Twisted", 12, 1, 0),
- "Accessor is an implementation for Python 2.1 which is no longer "
- "supported by Twisted.", "twisted.python.reflect", "Accessor")
-
- def __setattr__(self, k,v):
- kstring='set_%s'%k
- if hasattr(self.__class__,kstring):
- return getattr(self,kstring)(v)
- else:
- self.reallySet(k,v)
-
- def __getattr__(self, k):
- kstring='get_%s'%k
- if hasattr(self.__class__,kstring):
- return getattr(self,kstring)()
- raise AttributeError("%s instance has no accessor for: %s" % (qual(self.__class__),k))
-
- def __delattr__(self, k):
- kstring='del_%s'%k
- if hasattr(self.__class__,kstring):
- getattr(self,kstring)()
- return
- self.reallyDel(k)
-
- def reallySet(self, k,v):
- """
- *actually* set self.k to v without incurring side-effects.
- This is a hook to be overridden by subclasses.
- """
- if k == "__dict__":
- self.__dict__.clear()
- self.__dict__.update(v)
- else:
- self.__dict__[k]=v
-
- def reallyDel(self, k):
- """
- *actually* del self.k without incurring side-effects. This is a
- hook to be overridden by subclasses.
- """
- del self.__dict__[k]
-
-# just in case
-OriginalAccessor = Accessor
-deprecatedModuleAttribute(
- Version("Twisted", 12, 1, 0),
- "OriginalAccessor is a reference to class twisted.python.reflect.Accessor "
- "which is deprecated.", "twisted.python.reflect", "OriginalAccessor")
-
-
-class Summer(Accessor):
- """
- Extend from this class to get the capability to maintain 'related
- sums'. Have a tuple in your class like the following::
-
- sums=(('amount','credit','credit_total'),
- ('amount','debit','debit_total'))
-
- and the 'credit_total' member of the 'credit' member of self will
- always be incremented when the 'amount' member of self is
- incremented, similiarly for the debit versions.
- """
-
- deprecatedModuleAttribute(
- Version("Twisted", 12, 1, 0),
- "Summer is a child class of twisted.python.reflect.Accessor which is "
- "deprecated.", "twisted.python.reflect", "Summer")
-
- def reallySet(self, k,v):
- "This method does the work."
- for sum in self.sums:
- attr=sum[0]
- obj=sum[1]
- objattr=sum[2]
- if k == attr:
- try:
- oldval=getattr(self, attr)
- except:
- oldval=0
- diff=v-oldval
- if hasattr(self, obj):
- ob=getattr(self,obj)
- if ob is not None:
- try:oldobjval=getattr(ob, objattr)
- except:oldobjval=0.0
- setattr(ob,objattr,oldobjval+diff)
-
- elif k == obj:
- if hasattr(self, attr):
- x=getattr(self,attr)
- setattr(self,attr,0)
- y=getattr(self,k)
- Accessor.reallySet(self,k,v)
- setattr(self,attr,x)
- Accessor.reallySet(self,y,v)
- Accessor.reallySet(self,k,v)
-
-
-class QueueMethod:
- """
- I represent a method that doesn't exist yet.
- """
- def __init__(self, name, calls):
- self.name = name
- self.calls = calls
- def __call__(self, *args):
- self.calls.append((self.name, args))
-
-
-def funcinfo(function):
- """
- this is more documentation for myself than useful code.
- """
- warnings.warn(
- "[v2.5] Use inspect.getargspec instead of twisted.python.reflect.funcinfo",
- DeprecationWarning,
- stacklevel=2)
- code=function.func_code
- name=function.func_name
- argc=code.co_argcount
- argv=code.co_varnames[:argc]
- defaults=function.func_defaults
-
- out = []
-
- out.append('The function %s accepts %s arguments' % (name ,argc))
- if defaults:
- required=argc-len(defaults)
- out.append('It requires %s arguments' % required)
- out.append('The arguments required are: %s' % argv[:required])
- out.append('additional arguments are:')
- for i in range(argc-required):
- j=i+required
- out.append('%s which has a default of' % (argv[j], defaults[i]))
- return out
-
-
-ISNT=0
-WAS=1
-IS=2
-
-
-def fullFuncName(func):
- qualName = (str(pickle.whichmodule(func, func.__name__)) + '.' + func.__name__)
- if namedObject(qualName) is not func:
- raise Exception("Couldn't find %s as %s." % (func, qualName))
- return qualName
-
-
-def qual(clazz):
- """
- Return full import path of a class.
- """
- return clazz.__module__ + '.' + clazz.__name__
-
-
-def getcurrent(clazz):
- assert type(clazz) == types.ClassType, 'must be a class...'
- module = namedModule(clazz.__module__)
- currclass = getattr(module, clazz.__name__, None)
- if currclass is None:
- return clazz
- return currclass
-
-
-def getClass(obj):
- """
- Return the class or type of object 'obj'.
- Returns sensible result for oldstyle and newstyle instances and types.
- """
- if hasattr(obj, '__class__'):
- return obj.__class__
- else:
- return type(obj)
-
-# class graph nonsense
-
-# I should really have a better name for this...
-def isinst(inst,clazz):
- if type(inst) != types.InstanceType or type(clazz)!= types.ClassType:
- return isinstance(inst,clazz)
- cl = inst.__class__
- cl2 = getcurrent(cl)
- clazz = getcurrent(clazz)
- if issubclass(cl2,clazz):
- if cl == cl2:
- return WAS
- else:
- inst.__class__ = cl2
- return IS
- else:
- return ISNT
-
-
-def namedModule(name):
- """
- Return a module given its name.
- """
- topLevel = __import__(name)
- packages = name.split(".")[1:]
- m = topLevel
- for p in packages:
- m = getattr(m, p)
- return m
-
-
-def namedObject(name):
- """
- Get a fully named module-global object.
- """
- classSplit = name.split('.')
- module = namedModule('.'.join(classSplit[:-1]))
- return getattr(module, classSplit[-1])
-
-namedClass = namedObject # backwards compat
-
-
-
-class _NoModuleFound(Exception):
- """
- No module was found because none exists.
- """
-
-
-class InvalidName(ValueError):
- """
- The given name is not a dot-separated list of Python objects.
- """
-
-
-class ModuleNotFound(InvalidName):
- """
- The module associated with the given name doesn't exist and it can't be
- imported.
- """
-
-
-class ObjectNotFound(InvalidName):
- """
- The object associated with the given name doesn't exist and it can't be
- imported.
- """
-
-
-def _importAndCheckStack(importName):
- """
- Import the given name as a module, then walk the stack to determine whether
- the failure was the module not existing, or some code in the module (for
- example a dependent import) failing. This can be helpful to determine
- whether any actual application code was run. For example, to distiguish
- administrative error (entering the wrong module name), from programmer
- error (writing buggy code in a module that fails to import).
-
- @raise Exception: if something bad happens. This can be any type of
- exception, since nobody knows what loading some arbitrary code might do.
-
- @raise _NoModuleFound: if no module was found.
- """
- try:
- try:
- return __import__(importName)
- except ImportError:
- excType, excValue, excTraceback = sys.exc_info()
- while excTraceback:
- execName = excTraceback.tb_frame.f_globals["__name__"]
- if (execName is None or # python 2.4+, post-cleanup
- execName == importName): # python 2.3, no cleanup
- raise excType, excValue, excTraceback
- excTraceback = excTraceback.tb_next
- raise _NoModuleFound()
- except:
- # Necessary for cleaning up modules in 2.3.
- sys.modules.pop(importName, None)
- raise
-
-
-
-def namedAny(name):
- """
- Retrieve a Python object by its fully qualified name from the global Python
- module namespace. The first part of the name, that describes a module,
- will be discovered and imported. Each subsequent part of the name is
- treated as the name of an attribute of the object specified by all of the
- name which came before it. For example, the fully-qualified name of this
- object is 'twisted.python.reflect.namedAny'.
-
- @type name: L{str}
- @param name: The name of the object to return.
-
- @raise InvalidName: If the name is an empty string, starts or ends with
- a '.', or is otherwise syntactically incorrect.
-
- @raise ModuleNotFound: If the name is syntactically correct but the
- module it specifies cannot be imported because it does not appear to
- exist.
-
- @raise ObjectNotFound: If the name is syntactically correct, includes at
- least one '.', but the module it specifies cannot be imported because
- it does not appear to exist.
-
- @raise AttributeError: If an attribute of an object along the way cannot be
- accessed, or a module along the way is not found.
-
- @return: the Python object identified by 'name'.
- """
- if not name:
- raise InvalidName('Empty module name')
-
- names = name.split('.')
-
- # if the name starts or ends with a '.' or contains '..', the __import__
- # will raise an 'Empty module name' error. This will provide a better error
- # message.
- if '' in names:
- raise InvalidName(
- "name must be a string giving a '.'-separated list of Python "
- "identifiers, not %r" % (name,))
-
- topLevelPackage = None
- moduleNames = names[:]
- while not topLevelPackage:
- if moduleNames:
- trialname = '.'.join(moduleNames)
- try:
- topLevelPackage = _importAndCheckStack(trialname)
- except _NoModuleFound:
- moduleNames.pop()
- else:
- if len(names) == 1:
- raise ModuleNotFound("No module named %r" % (name,))
- else:
- raise ObjectNotFound('%r does not name an object' % (name,))
-
- obj = topLevelPackage
- for n in names[1:]:
- obj = getattr(obj, n)
-
- return obj
-
-
-
-def _determineClass(x):
- try:
- return x.__class__
- except:
- return type(x)
-
-
-
-def _determineClassName(x):
- c = _determineClass(x)
- try:
- return c.__name__
- except:
- try:
- return str(c)
- except:
- return '<BROKEN CLASS AT 0x%x>' % unsignedID(c)
-
-
-
-def _safeFormat(formatter, o):
- """
- Helper function for L{safe_repr} and L{safe_str}.
- """
- try:
- return formatter(o)
- except:
- io = StringIO()
- traceback.print_exc(file=io)
- className = _determineClassName(o)
- tbValue = io.getvalue()
- return "<%s instance at 0x%x with %s error:\n %s>" % (
- className, unsignedID(o), formatter.__name__, tbValue)
-
-
-
-def safe_repr(o):
- """
- safe_repr(anything) -> string
-
- Returns a string representation of an object, or a string containing a
- traceback, if that object's __repr__ raised an exception.
- """
- return _safeFormat(repr, o)
-
-
-
-def safe_str(o):
- """
- safe_str(anything) -> string
-
- Returns a string representation of an object, or a string containing a
- traceback, if that object's __str__ raised an exception.
- """
- return _safeFormat(str, o)
-
-
-
-## the following were factored out of usage
-
-@deprecated(Version("Twisted", 11, 0, 0), "inspect.getmro")
-def allYourBase(classObj, baseClass=None):
- """
- allYourBase(classObj, baseClass=None) -> list of all base
- classes that are subclasses of baseClass, unless it is None,
- in which case all bases will be added.
- """
- l = []
- _accumulateBases(classObj, l, baseClass)
- return l
-
-
-@deprecated(Version("Twisted", 11, 0, 0), "inspect.getmro")
-def accumulateBases(classObj, l, baseClass=None):
- _accumulateBases(classObj, l, baseClass)
-
-
-def _accumulateBases(classObj, l, baseClass=None):
- for base in classObj.__bases__:
- if baseClass is None or issubclass(base, baseClass):
- l.append(base)
- _accumulateBases(base, l, baseClass)
-
-
-def prefixedMethodNames(classObj, prefix):
- """
- A list of method names with a given prefix in a given class.
- """
- dct = {}
- addMethodNamesToDict(classObj, dct, prefix)
- return dct.keys()
-
-
-def addMethodNamesToDict(classObj, dict, prefix, baseClass=None):
- """
- addMethodNamesToDict(classObj, dict, prefix, baseClass=None) -> dict
- this goes through 'classObj' (and its bases) and puts method names
- starting with 'prefix' in 'dict' with a value of 1. if baseClass isn't
- None, methods will only be added if classObj is-a baseClass
-
- If the class in question has the methods 'prefix_methodname' and
- 'prefix_methodname2', the resulting dict should look something like:
- {"methodname": 1, "methodname2": 1}.
- """
- for base in classObj.__bases__:
- addMethodNamesToDict(base, dict, prefix, baseClass)
-
- if baseClass is None or baseClass in classObj.__bases__:
- for name, method in classObj.__dict__.items():
- optName = name[len(prefix):]
- if ((type(method) is types.FunctionType)
- and (name[:len(prefix)] == prefix)
- and (len(optName))):
- dict[optName] = 1
-
-
-def prefixedMethods(obj, prefix=''):
- """
- A list of methods with a given prefix on a given instance.
- """
- dct = {}
- accumulateMethods(obj, dct, prefix)
- return dct.values()
-
-
-def accumulateMethods(obj, dict, prefix='', curClass=None):
- """
- accumulateMethods(instance, dict, prefix)
- I recurse through the bases of instance.__class__, and add methods
- beginning with 'prefix' to 'dict', in the form of
- {'methodname':*instance*method_object}.
- """
- if not curClass:
- curClass = obj.__class__
- for base in curClass.__bases__:
- accumulateMethods(obj, dict, prefix, base)
-
- for name, method in curClass.__dict__.items():
- optName = name[len(prefix):]
- if ((type(method) is types.FunctionType)
- and (name[:len(prefix)] == prefix)
- and (len(optName))):
- dict[optName] = getattr(obj, name)
-
-
-def accumulateClassDict(classObj, attr, adict, baseClass=None):
- """
- Accumulate all attributes of a given name in a class hierarchy into a single dictionary.
-
- Assuming all class attributes of this name are dictionaries.
- If any of the dictionaries being accumulated have the same key, the
- one highest in the class heirarchy wins.
- (XXX: If \"higest\" means \"closest to the starting class\".)
-
- Ex::
-
- class Soy:
- properties = {\"taste\": \"bland\"}
-
- class Plant:
- properties = {\"colour\": \"green\"}
-
- class Seaweed(Plant):
- pass
-
- class Lunch(Soy, Seaweed):
- properties = {\"vegan\": 1 }
-
- dct = {}
-
- accumulateClassDict(Lunch, \"properties\", dct)
-
- print dct
-
- {\"taste\": \"bland\", \"colour\": \"green\", \"vegan\": 1}
- """
- for base in classObj.__bases__:
- accumulateClassDict(base, attr, adict)
- if baseClass is None or baseClass in classObj.__bases__:
- adict.update(classObj.__dict__.get(attr, {}))
-
-
-def accumulateClassList(classObj, attr, listObj, baseClass=None):
- """
- Accumulate all attributes of a given name in a class heirarchy into a single list.
-
- Assuming all class attributes of this name are lists.
- """
- for base in classObj.__bases__:
- accumulateClassList(base, attr, listObj)
- if baseClass is None or baseClass in classObj.__bases__:
- listObj.extend(classObj.__dict__.get(attr, []))
-
-
-def isSame(a, b):
- return (a is b)
-
-
-def isLike(a, b):
- return (a == b)
-
-
-def modgrep(goal):
- return objgrep(sys.modules, goal, isLike, 'sys.modules')
-
-
-def isOfType(start, goal):
- return ((type(start) is goal) or
- (isinstance(start, types.InstanceType) and
- start.__class__ is goal))
-
-
-def findInstances(start, t):
- return objgrep(start, t, isOfType)
-
-
-def objgrep(start, goal, eq=isLike, path='', paths=None, seen=None, showUnknowns=0, maxDepth=None):
- """
- An insanely CPU-intensive process for finding stuff.
- """
- if paths is None:
- paths = []
- if seen is None:
- seen = {}
- if eq(start, goal):
- paths.append(path)
- if id(start) in seen:
- if seen[id(start)] is start:
- return
- if maxDepth is not None:
- if maxDepth == 0:
- return
- maxDepth -= 1
- seen[id(start)] = start
- if isinstance(start, types.DictionaryType):
- for k, v in start.items():
- objgrep(k, goal, eq, path+'{'+repr(v)+'}', paths, seen, showUnknowns, maxDepth)
- objgrep(v, goal, eq, path+'['+repr(k)+']', paths, seen, showUnknowns, maxDepth)
- elif isinstance(start, (list, tuple, deque)):
- for idx in xrange(len(start)):
- objgrep(start[idx], goal, eq, path+'['+str(idx)+']', paths, seen, showUnknowns, maxDepth)
- elif isinstance(start, types.MethodType):
- objgrep(start.im_self, goal, eq, path+'.im_self', paths, seen, showUnknowns, maxDepth)
- objgrep(start.im_func, goal, eq, path+'.im_func', paths, seen, showUnknowns, maxDepth)
- objgrep(start.im_class, goal, eq, path+'.im_class', paths, seen, showUnknowns, maxDepth)
- elif hasattr(start, '__dict__'):
- for k, v in start.__dict__.items():
- objgrep(v, goal, eq, path+'.'+k, paths, seen, showUnknowns, maxDepth)
- if isinstance(start, types.InstanceType):
- objgrep(start.__class__, goal, eq, path+'.__class__', paths, seen, showUnknowns, maxDepth)
- elif isinstance(start, weakref.ReferenceType):
- objgrep(start(), goal, eq, path+'()', paths, seen, showUnknowns, maxDepth)
- elif (isinstance(start, types.StringTypes+
- (types.IntType, types.FunctionType,
- types.BuiltinMethodType, RegexType, types.FloatType,
- types.NoneType, types.FileType)) or
- type(start).__name__ in ('wrapper_descriptor', 'method_descriptor',
- 'member_descriptor', 'getset_descriptor')):
- pass
- elif showUnknowns:
- print 'unknown type', type(start), start
- return paths
-
-
-def filenameToModuleName(fn):
- """
- Convert a name in the filesystem to the name of the Python module it is.
-
- This is agressive about getting a module name back from a file; it will
- always return a string. Agressive means 'sometimes wrong'; it won't look
- at the Python path or try to do any error checking: don't use this method
- unless you already know that the filename you're talking about is a Python
- module.
- """
- fullName = os.path.abspath(fn)
- base = os.path.basename(fn)
- if not base:
- # this happens when fn ends with a path separator, just skit it
- base = os.path.basename(fn[:-1])
- modName = os.path.splitext(base)[0]
- while 1:
- fullName = os.path.dirname(fullName)
- if os.path.exists(os.path.join(fullName, "__init__.py")):
- modName = "%s.%s" % (os.path.basename(fullName), modName)
- else:
- break
- return modName
-
-
-
-__all__ = [
- 'InvalidName', 'ModuleNotFound', 'ObjectNotFound',
-
- 'ISNT', 'WAS', 'IS',
-
- 'Settable', 'AccessorType', 'PropertyAccessor', 'Accessor', 'Summer',
- 'QueueMethod', 'OriginalAccessor',
-
- 'funcinfo', 'fullFuncName', 'qual', 'getcurrent', 'getClass', 'isinst',
- 'namedModule', 'namedObject', 'namedClass', 'namedAny',
- 'safe_repr', 'safe_str', 'allYourBase', 'accumulateBases',
- 'prefixedMethodNames', 'addMethodNamesToDict', 'prefixedMethods',
- 'accumulateClassDict', 'accumulateClassList', 'isSame', 'isLike',
- 'modgrep', 'isOfType', 'findInstances', 'objgrep', 'filenameToModuleName',
- 'fullyQualifiedName']