This commit is contained in:
Dave Schuyler 2005-02-25 23:13:09 +00:00
parent 429a075c79
commit b78fb88cf3

View File

@ -61,7 +61,7 @@ def writeFsmTree(instance, indent = 0):
if hasattr(instance.fsm, 'state'): if hasattr(instance.fsm, 'state'):
name = instance.fsm.state.name name = instance.fsm.state.name
print "%s: %s"%(instance.fsm.name, name) print "%s: %s"%(instance.fsm.name, name)
@ -73,7 +73,7 @@ if __debug__:
that is printed as part of the trace back. that is printed as part of the trace back.
This is just to make it easier to tell what the This is just to make it easier to tell what the
stack trace is referring to. stack trace is referring to.
start is an integer number of stack frames back start is an integer number of stack frames back
from the most recent. (This is automatically from the most recent. (This is automatically
bumped up by one to skip the __init__ call bumped up by one to skip the __init__ call
to the StackTrace). to the StackTrace).
@ -141,6 +141,33 @@ def printThisCall():
return 1 # to allow "assert printThisCall()" return 1 # to allow "assert printThisCall()"
if __debug__:
def lineage(obj, verbose=0, indent=0):
"""
return instance or class name in as a multiline string.
Usage: print lineage(foo)
(Based on getClassLineage())
"""
r=""
if type(obj) == types.ListType:
r+=(" "*indent)+"python list\n"
elif type(obj) == types.DictionaryType:
r+=(" "*indent)+"python dictionary\n"
elif type(obj) == types.ModuleType:
r+=(" "*indent)+str(obj)+"\n"
elif type(obj) == types.InstanceType:
r+=lineage(obj.__class__, verbose, indent)
elif type(obj) == types.ClassType:
r+=(" "*indent)
if verbose:
r+=obj.__module__+"."
r+=obj.__name__+"\n"
for c in obj.__bases__:
r+=lineage(c, verbose, indent+2)
return r
def tron(): def tron():
sys.settrace(trace) sys.settrace(trace)
def trace(frame, event, arg): def trace(frame, event, arg):
@ -399,7 +426,7 @@ class Signature:
def aproposAll(obj): def aproposAll(obj):
""" """
Print out a list of all members and methods (including overloaded methods) Print out a list of all members and methods (including overloaded methods)
of an instance or class of an instance or class
""" """
apropos(obj, fOverloaded = 1, fTruncate = 0) apropos(obj, fOverloaded = 1, fTruncate = 0)
@ -412,14 +439,14 @@ def adjust(command = None, dim = 1, parent = None, **kw):
""" """
adjust(command = None, parent = None, **kw) adjust(command = None, parent = None, **kw)
Popup and entry scale to adjust a parameter Popup and entry scale to adjust a parameter
Accepts any Slider keyword argument. Typical arguments include: Accepts any Slider keyword argument. Typical arguments include:
command: The one argument command to execute command: The one argument command to execute
min: The min value of the slider min: The min value of the slider
max: The max value of the slider max: The max value of the slider
resolution: The resolution of the slider resolution: The resolution of the slider
text: The label on the slider text: The label on the slider
These values can be accessed and/or changed after the fact These values can be accessed and/or changed after the fact
>>> vg = adjust() >>> vg = adjust()
>>> vg['min'] >>> vg['min']
@ -565,7 +592,7 @@ def reduceAngle(deg):
Reduces an angle (in degrees) to a value in [-180..180) Reduces an angle (in degrees) to a value in [-180..180)
""" """
return (((deg + 180.) % 360.) - 180.) return (((deg + 180.) % 360.) - 180.)
def fitSrcAngle2Dest(src, dest): def fitSrcAngle2Dest(src, dest):
""" """
given a src and destination angle, returns an equivalent src angle given a src and destination angle, returns an equivalent src angle
@ -687,7 +714,7 @@ class Functor:
self._kargs = kargs self._kargs = kargs
self.__name__ = 'Functor: %s' % self._function.__name__ self.__name__ = 'Functor: %s' % self._function.__name__
self.__doc__ = self._function.__doc__ self.__doc__ = self._function.__doc__
def __call__(self, *args, **kargs): def __call__(self, *args, **kargs):
"""call function""" """call function"""
_args = list(self._args) _args = list(self._args)
@ -758,7 +785,7 @@ def formatElapsedSeconds(seconds):
if hours > 36: if hours > 36:
days = math.floor((hours + 12) / 24) days = math.floor((hours + 12) / 24)
return "%s%d days" % (sign, days) return "%s%d days" % (sign, days)
seconds -= hours * (60 * 60) seconds -= hours * (60 * 60)
minutes = (int)(seconds / 60) minutes = (int)(seconds / 60)
seconds -= minutes * 60 seconds -= minutes * 60
@ -874,7 +901,7 @@ def findPythonModule(module):
pathname = os.path.join(dir, filename) pathname = os.path.join(dir, filename)
if os.path.exists(pathname): if os.path.exists(pathname):
return pathname return pathname
return None return None
def describeException(backTrace = 4): def describeException(backTrace = 4):
@ -896,7 +923,7 @@ def describeException(backTrace = 4):
line += lnotab[i+1] line += lnotab[i+1]
return line return line
infoArr = sys.exc_info() infoArr = sys.exc_info()
exception = infoArr[0] exception = infoArr[0]
exceptionName = getattr(exception, '__name__', None) exceptionName = getattr(exception, '__name__', None)
@ -923,7 +950,7 @@ def describeException(backTrace = 4):
description = "" description = ""
for i in range(len(stack) - 1, max(len(stack) - backTrace, 0) - 1, -1): for i in range(len(stack) - 1, max(len(stack) - backTrace, 0) - 1, -1):
description += stack[i] description += stack[i]
description += "%s: %s" % (exceptionName, extraInfo) description += "%s: %s" % (exceptionName, extraInfo)
return description return description
@ -1000,10 +1027,10 @@ def normalDistrib(a, b, gauss=random.gauss):
==================== ====================
All normal density curves satisfy the following property which is often All normal density curves satisfy the following property which is often
referred to as the Empirical Rule: referred to as the Empirical Rule:
68% of the observations fall within 1 standard deviation of the mean. 68% of the observations fall within 1 standard deviation of the mean.
95% of the observations fall within 2 standard deviations of the mean. 95% of the observations fall within 2 standard deviations of the mean.
99.7% of the observations fall within 3 standard deviations of the mean. 99.7% of the observations fall within 3 standard deviations of the mean.
Thus, for a normal distribution, almost all values lie within 3 standard Thus, for a normal distribution, almost all values lie within 3 standard
deviations of the mean. deviations of the mean.
------------------------------------------------------------------------ ------------------------------------------------------------------------
@ -1063,7 +1090,7 @@ class Enum:
starting value. starting value.
Example: Example:
>>> colors = Enum('red, green, blue') >>> colors = Enum('red, green, blue')
>>> colors.red >>> colors.red
0 0
@ -1134,7 +1161,7 @@ class Enum:
return 1 return 1
############################################################ ############################################################
# class: Singleton # class: Singleton
# Purpose: This provides a base metaclass for all classes # Purpose: This provides a base metaclass for all classes
# that require one and only one instance. # that require one and only one instance.
# #
@ -1158,7 +1185,7 @@ class Enum:
# #
# This causes problems because myNewClassX is a # This causes problems because myNewClassX is a
# New-Style class that inherits from only a # New-Style class that inherits from only a
# Classic-Style base class. There are two ways # Classic-Style base class. There are two ways
# simple ways to resolve this issue. # simple ways to resolve this issue.
# #
# First, if possible, make myClassX a # First, if possible, make myClassX a
@ -1180,4 +1207,4 @@ class Singleton(type):
class SingletonError(ValueError): class SingletonError(ValueError):
""" Used to indicate an inappropriate value for a Singleton.""" """ Used to indicate an inappropriate value for a Singleton."""