Panda3D
Classes | Functions | Variables
direct.showbase.PythonUtil Namespace Reference

Classes

class  AlphabetCounter
 
class  Averager
 
class  Default
 
class  DelayedCall
 
class  DelayedFunctor
 
class  Enum
 
class  EnumIter
 
class  FrameDelayedCall
 
class  Functor
 
class  GoldenRectangle
 
class  HierarchyException
 
class  MiniLog
 
class  MiniLogSentry
 
class  PriorityCallbacks
 
class  PStatScope
 
class  Queue
 
class  ScratchPad
 
class  SerialMaskedGen
 
class  SerialNumGen
 
class  Singleton
 
class  SingletonError
 
class  Stack
 
class  StackTrace
 
class  StdoutCapture
 
class  StdoutPassthrough
 
class  SubframeCall
 
class  Sync
 

Functions

def addListsByValue (a, b)
 
def adjust (command=None, dim=1, parent=None, **kw)
 
def appendStr (obj, st)
 
def average (*args)
 
def boolEqual (a, b)
 
def bound (value, bound1, bound2)
 
def callerInfo (baseFileName=1, howFarBack=0)
 
def clampScalar (value, a, b)
 
def closestDestAngle (src, dest)
 
def closestDestAngle2 (src, dest)
 
def configIsToday (configName)
 
def contains (whole, sub)
 
def convertTree (objTree, idList)
 
def deeptype (obj, maxLen=100, _visitedIds=None)
 
def difference (a, b)
 
def disjoint (L1, L2)
 
def doc (obj)
 
def endSuperLog ()
 
def exceptionLogged (append=True)
 
def extractProfile (*args, **kArgs)
 
def fastRepr (obj, maxLen=200, strFactor=10, _visitedIds=None)
 
def findPythonModule (module)
 
def fitDestAngle2Src (src, dest)
 
def fitSrcAngle2Dest (src, dest)
 
def flywheel (*args, **kArgs)
 
def formatElapsedSeconds (seconds)
 
def formatTimeCompact (seconds)
 
def formatTimeExact (seconds)
 
def getAnnounceGenerateTime (stat)
 
def getBase ()
 
def getNumberedTypedSortedString (items, maxLen=5000, numPrefix='')
 
def getNumberedTypedString (items, maxLen=5000, numPrefix='')
 
def getProfileResultString ()
 
def getRepository ()
 
def getSetter (targetObj, valueName, prefix='set')
 
def getSetterName (valueName, prefix='set')
 
def getShortestRotation (start, end)
 
def getTotalAnnounceTime ()
 
def histogramDict (l)
 
def import_module (name, package=None)
 
def indent (stream, numIndents, str)
 
def intersection (a, b)
 
def invertDict (D, lossy=False)
 
def invertDictLossless (D)
 
def isDefaultValue (x)
 
def itype (obj)
 
def lerp (v0, v1, t)
 
def lineInfo (baseFileName=1)
 
def lineTag (baseFileName=1, verbose=0, separator=':')
 
def lineupPos (i, num, spacing)
 
def list2dict (L, value=None)
 
def listToIndex2item (L)
 
def listToItem2index (L)
 
def logBlock (id, msg)
 
def loopGen (l)
 
def makeFlywheelGen (objects, countList=None, countFunc=None, scale=None)
 
def makeList (x)
 
def makeTuple (x)
 
def mostDerivedLast (classList)
 
def normalDistrib (a, b, gauss=random.gauss)
 
def nullGen ()
 
def pretty_print (tree)
 
def printListEnum (l)
 
def printListEnumGen (l)
 
def printNumberedTyped (items, maxLen=5000)
 
def printNumberedTypes (items, maxLen=5000)
 
def printNumberedTypesGen (items, maxLen=5000)
 
def printProfile (filename=PyUtilProfileDefaultFilename, lines=PyUtilProfileDefaultLines, sorts=PyUtilProfileDefaultSorts, callInfo=1)
 
def printReverseStack ()
 
def printStack ()
 
def printThisCall ()
 
def printVerboseStack ()
 
def profiled (category=None, terse=False)
 
def profileFunc (callback, name, terse, log=True)
 
def pstatcollect (scope, level=None)
 
def quickProfile (name="unnamed")
 
def r_convertTree (oldTree, newTree, idList)
 
def r_pretty_print (tree, num)
 
def randFloat (a, b=0., rng=random.random)
 
def randInt32 (rng=random.random)
 
def randUint31 (rng=random.random)
 
def reduceAngle (deg)
 
def replace (list, old, new, all=0)
 
def report (types=[], prefix='', xform=None, notifyFunc=None, dConfigParam=[])
 
def safeRepr (obj)
 
def safeReprTypeOnFail (obj)
 
def safeTypeName (o)
 
def sameElements (a, b)
 
def serialNum ()
 
def solveQuadratic (a, b, c)
 
def stackEntryInfo (depth=0, baseFileName=1)
 
def startProfile (filename=PyUtilProfileDefaultFilename, lines=PyUtilProfileDefaultLines, sorts=PyUtilProfileDefaultSorts, silent=0, callInfo=1, useDisk=False, cmd='run()')
 
def startSuperLog (customFunction=None)
 
def testAlphabetCounter ()
 
def traceFunctionCall (frame)
 
def traceParentCall ()
 
def typeName (o)
 
def unescapeHtmlString (s)
 
def union (a, b)
 
def uniqueElements (L)
 
def uniqueName (name)
 
def weightedChoice (choiceList, rng=random.random, sum=None)
 
def weightedRand (valDict, rng=random.random)
 

Variables

 appendStr
 
 bound
 
def clamp = bound
 
 classobj
 
 configIsToday
 
 deeptype
 
 Default
 
 DelayedCall
 
 DelayedFunctor
 
 dtoolSuperBase = None
 
 exceptionLogged
 
 exceptionLoggedNotify = None
 
 fastRepr
 
 flywheel
 
 FrameDelayedCall
 
def ftc = formatTimeCompact
 
def fte = formatTimeExact
 
 getBase
 
 getRepository
 
tuple GoldenRatio = (1. + math.sqrt(5.)) / 2.
 
 HierarchyException
 
 histogramDict
 
def imp = import_module('imp')
 
 import_module
 
def importlib = imp.new_module("importlib")
 
 invertDict
 
 invertDictLossless
 
 itype
 
 lerp
 
 logBlock
 
 loopGen
 
 makeList
 
 makeTuple
 
 MiniLog
 
 MiniLogSentry
 
list movedDumpFuncs = []
 
list movedLoadFuncs = []
 
list movedOpenFuncs = []
 
 nullGen
 
 printReverseStack
 
 printStack
 
 printVerboseStack
 
 profiled
 
dictionary profileFilename2file = {}
 
dictionary profileFilename2marshalData = {}
 
 profileFilenameList = Stack()
 
 profileFilenames = set()
 
 pstatcollect
 
string PyUtilProfileDefaultFilename = 'profiledata'
 
int PyUtilProfileDefaultLines = 80
 
list PyUtilProfileDefaultSorts = ['cumulative', 'time', 'calls']
 
 rad180 = math.pi
 
float rad270 = 1.5 * math.pi
 
int rad360 = 2. * math.pi
 
int rad90 = math.pi / 2.
 
 report
 
 safeRepr
 
 safeReprNotify = None
 
 safeTypeName
 
 StackTrace
 
 SubframeCall
 
 superLogFile = None
 
 typeName
 
 xrange = range
 

Detailed Description

Contains miscellaneous utility functions and classes.

Function Documentation

◆ addListsByValue()

def direct.showbase.PythonUtil.addListsByValue (   a,
  b 
)
returns a new array containing the sums of the two array arguments
(c[0] = a[0 + b[0], etc.)

◆ adjust()

def direct.showbase.PythonUtil.adjust (   command = None,
  dim = 1,
  parent = None,
**  kw 
)
adjust(command = None, parent = None, **kw)
Popup and entry scale to adjust a parameter

Accepts any Slider keyword argument.  Typical arguments include:
command: The one argument command to execute
min: The min value of the slider
max: The max value of the slider
resolution: The resolution of the slider
text: The label on the slider

These values can be accessed and/or changed after the fact
>>> vg = adjust()
>>> vg['min']
0.0
>>> vg['min'] = 10.0
>>> vg['min']
10.0

◆ appendStr()

def direct.showbase.PythonUtil.appendStr (   obj,
  st 
)
adds a string onto the __str__ output of an instance

◆ average()

def direct.showbase.PythonUtil.average ( args)
returns simple average of list of values 

◆ boolEqual()

def direct.showbase.PythonUtil.boolEqual (   a,
  b 
)
returns true if a and b are both true or both false.
returns false otherwise
(a.k.a. xnor -- eXclusive Not OR).

◆ bound()

def direct.showbase.PythonUtil.bound (   value,
  bound1,
  bound2 
)
returns value if value is between bound1 and bound2
otherwise returns bound that is closer to value

◆ callerInfo()

def direct.showbase.PythonUtil.callerInfo (   baseFileName = 1,
  howFarBack = 0 
)
returns the sourcefilename, line number, and function name of the
caller of the function that called this function
(answers the question: 'hey callerInfo, who called me?')
see stackEntryInfo, above, for info on 'baseFileName' and return types

◆ clampScalar()

def direct.showbase.PythonUtil.clampScalar (   value,
  a,
  b 
)

◆ closestDestAngle()

def direct.showbase.PythonUtil.closestDestAngle (   src,
  dest 
)

◆ closestDestAngle2()

def direct.showbase.PythonUtil.closestDestAngle2 (   src,
  dest 
)

◆ configIsToday()

def direct.showbase.PythonUtil.configIsToday (   configName)

◆ contains()

def direct.showbase.PythonUtil.contains (   whole,
  sub 
)
Return 1 if whole contains sub, 0 otherwise

◆ convertTree()

def direct.showbase.PythonUtil.convertTree (   objTree,
  idList 
)

◆ deeptype()

def direct.showbase.PythonUtil.deeptype (   obj,
  maxLen = 100,
  _visitedIds = None 
)

◆ difference()

def direct.showbase.PythonUtil.difference (   a,
  b 
)
difference(list, list):

◆ disjoint()

def direct.showbase.PythonUtil.disjoint (   L1,
  L2 
)
returns non-zero if L1 and L2 have no common elements

◆ doc()

def direct.showbase.PythonUtil.doc (   obj)

◆ endSuperLog()

def direct.showbase.PythonUtil.endSuperLog ( )

◆ exceptionLogged()

def direct.showbase.PythonUtil.exceptionLogged (   append = True)
decorator that outputs the function name and all arguments
if an exception passes back through the stack frame
if append is true, string is appended to the __str__ output of
the exception. if append is false, string is printed to the log
directly. If the output will take up many lines, it's recommended
to set append to False so that the exception stack is not hidden
by the output of this decorator.

◆ extractProfile()

def direct.showbase.PythonUtil.extractProfile ( args,
**  kArgs 
)

◆ fastRepr()

def direct.showbase.PythonUtil.fastRepr (   obj,
  maxLen = 200,
  strFactor = 10,
  _visitedIds = None 
)
caps the length of iterable types, so very large objects will print faster.
also prevents infinite recursion 

◆ findPythonModule()

def direct.showbase.PythonUtil.findPythonModule (   module)

◆ fitDestAngle2Src()

def direct.showbase.PythonUtil.fitDestAngle2Src (   src,
  dest 
)
given a src and destination angle, returns an equivalent dest angle
that is within [-180..180) of src
examples:
fitDestAngle2Src(30, 60) == 60
fitDestAngle2Src(60, 30) == 30
fitDestAngle2Src(0, 180) == -180
fitDestAngle2Src(1, 180) == 180

◆ fitSrcAngle2Dest()

def direct.showbase.PythonUtil.fitSrcAngle2Dest (   src,
  dest 
)
given a src and destination angle, returns an equivalent src angle
that is within [-180..180) of dest
examples:
fitSrcAngle2Dest(30, 60) == 30
fitSrcAngle2Dest(60, 30) == 60
fitSrcAngle2Dest(0, 180) == 0
fitSrcAngle2Dest(-1, 180) == 359
fitSrcAngle2Dest(-180, 180) == 180

◆ flywheel()

def direct.showbase.PythonUtil.flywheel ( args,
**  kArgs 
)
>>> for i in flywheel([1,2,3], countList=[10, 5, 1]):
...   print i,
...
1 2 3 1 2 1 2 1 2 1 2 1 1 1 1 1

◆ formatElapsedSeconds()

def direct.showbase.PythonUtil.formatElapsedSeconds (   seconds)
Returns a string of the form "mm:ss" or "hh:mm:ss" or "n days",
representing the indicated elapsed time in seconds.

◆ formatTimeCompact()

def direct.showbase.PythonUtil.formatTimeCompact (   seconds)

◆ formatTimeExact()

def direct.showbase.PythonUtil.formatTimeExact (   seconds)

◆ getAnnounceGenerateTime()

def direct.showbase.PythonUtil.getAnnounceGenerateTime (   stat)

◆ getBase()

def direct.showbase.PythonUtil.getBase ( )

◆ getNumberedTypedSortedString()

def direct.showbase.PythonUtil.getNumberedTypedSortedString (   items,
  maxLen = 5000,
  numPrefix = '' 
)
get a string that has each item of the list on its own line,
the items are stringwise-sorted, and each item is numbered on
the left from zero

◆ getNumberedTypedString()

def direct.showbase.PythonUtil.getNumberedTypedString (   items,
  maxLen = 5000,
  numPrefix = '' 
)
get a string that has each item of the list on its own line,
and each item is numbered on the left from zero

◆ getProfileResultString()

def direct.showbase.PythonUtil.getProfileResultString ( )

◆ getRepository()

def direct.showbase.PythonUtil.getRepository ( )

◆ getSetter()

def direct.showbase.PythonUtil.getSetter (   targetObj,
  valueName,
  prefix = 'set' 
)

◆ getSetterName()

def direct.showbase.PythonUtil.getSetterName (   valueName,
  prefix = 'set' 
)

◆ getShortestRotation()

def direct.showbase.PythonUtil.getShortestRotation (   start,
  end 
)
Given two heading values, return a tuple describing
the shortest interval from 'start' to 'end'.  This tuple
can be used to lerp a camera between two rotations
while avoiding the 'spin' problem.

◆ getTotalAnnounceTime()

def direct.showbase.PythonUtil.getTotalAnnounceTime ( )

◆ histogramDict()

def direct.showbase.PythonUtil.histogramDict (   l)

◆ import_module()

def direct.showbase.PythonUtil.import_module (   name,
  package = None 
)

◆ indent()

def direct.showbase.PythonUtil.indent (   stream,
  numIndents,
  str 
)
Write str to stream with numIndents in front of it

◆ intersection()

def direct.showbase.PythonUtil.intersection (   a,
  b 
)
intersection(list, list):

◆ invertDict()

def direct.showbase.PythonUtil.invertDict (   D,
  lossy = False 
)
creates a dictionary by 'inverting' D; keys are placed in the new
dictionary under their corresponding value in the old dictionary.
It is an error if D contains any duplicate values.

>>> old = {'key1':1, 'key2':2}
>>> invertDict(old)
{1: 'key1', 2: 'key2'}

◆ invertDictLossless()

def direct.showbase.PythonUtil.invertDictLossless (   D)
similar to invertDict, but values of new dict are lists of keys from
old dict. No information is lost.

>>> old = {'key1':1, 'key2':2, 'keyA':2}
>>> invertDictLossless(old)
{1: ['key1'], 2: ['key2', 'keyA']}

◆ isDefaultValue()

def direct.showbase.PythonUtil.isDefaultValue (   x)

◆ itype()

def direct.showbase.PythonUtil.itype (   obj)

◆ lerp()

def direct.showbase.PythonUtil.lerp (   v0,
  v1,
  t 
)
returns a value lerped between v0 and v1, according to t
t == 0 maps to v0, t == 1 maps to v1

◆ lineInfo()

def direct.showbase.PythonUtil.lineInfo (   baseFileName = 1)
returns the sourcefilename, line number, and function name of the
code that called this function
(answers the question: 'hey lineInfo, where am I in the codebase?')
see stackEntryInfo, above, for info on 'baseFileName' and return types

◆ lineTag()

def direct.showbase.PythonUtil.lineTag (   baseFileName = 1,
  verbose = 0,
  separator = ':' 
)
returns a string containing the sourcefilename and line number
of the code that called this function
(equivalent to lineInfo, above, with different return type)
see stackEntryInfo, above, for info on 'baseFileName'

if 'verbose' is false, returns a compact string of the form
'fileName:lineNum:funcName'
if 'verbose' is true, returns a longer string that matches the
format of Python stack trace dumps

returns empty string on error

◆ lineupPos()

def direct.showbase.PythonUtil.lineupPos (   i,
  num,
  spacing 
)
use to line up a series of 'num' objects, in one dimension,
centered around zero
'i' is the index of the object in the lineup
'spacing' is the amount of space between objects in the lineup

◆ list2dict()

def direct.showbase.PythonUtil.list2dict (   L,
  value = None 
)
creates dict using elements of list, all assigned to same value

◆ listToIndex2item()

def direct.showbase.PythonUtil.listToIndex2item (   L)
converts list to dict of list index->list item

◆ listToItem2index()

def direct.showbase.PythonUtil.listToItem2index (   L)
converts list to dict of list item->list index
This is lossy if there are duplicate list items

◆ logBlock()

def direct.showbase.PythonUtil.logBlock (   id,
  msg 
)

◆ loopGen()

def direct.showbase.PythonUtil.loopGen (   l)

◆ makeFlywheelGen()

def direct.showbase.PythonUtil.makeFlywheelGen (   objects,
  countList = None,
  countFunc = None,
  scale = None 
)

◆ makeList()

def direct.showbase.PythonUtil.makeList (   x)
returns x, converted to a list

◆ makeTuple()

def direct.showbase.PythonUtil.makeTuple (   x)
returns x, converted to a tuple

◆ mostDerivedLast()

def direct.showbase.PythonUtil.mostDerivedLast (   classList)
pass in list of classes. sorts list in-place, with derived classes
appearing after their bases

◆ normalDistrib()

def direct.showbase.PythonUtil.normalDistrib (   a,
  b,
  gauss = random.gauss 
)
NOTE: assumes a < b

Returns random number between a and b, using gaussian distribution, with
mean=avg(a, b), and a standard deviation that fits ~99.7% of the curve
between a and b.

For ease of use, outlying results are re-computed until result is in [a, b]
This should fit the remaining .3% of the curve that lies outside [a, b]
uniformly onto the curve inside [a, b]

------------------------------------------------------------------------
http://www-stat.stanford.edu/~naras/jsm/NormalDensity/NormalDensity.html

The 68-95-99.7% Rule
====================
All normal density curves satisfy the following property which is often
  referred to as the Empirical Rule:
68% of the observations fall within 1 standard deviation 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.

Thus, for a normal distribution, almost all values lie within 3 standard
  deviations of the mean.
------------------------------------------------------------------------

In calculating our standard deviation, we divide (b-a) by 6, since the
99.7% figure includes 3 standard deviations _on_either_side_ of the mean.

◆ nullGen()

def direct.showbase.PythonUtil.nullGen ( )

◆ pretty_print()

def direct.showbase.PythonUtil.pretty_print (   tree)

◆ printListEnum()

def direct.showbase.PythonUtil.printListEnum (   l)

◆ printListEnumGen()

def direct.showbase.PythonUtil.printListEnumGen (   l)

◆ printNumberedTyped()

def direct.showbase.PythonUtil.printNumberedTyped (   items,
  maxLen = 5000 
)
print out each item of the list on its own line,
with each item numbered on the left from zero

◆ printNumberedTypes()

def direct.showbase.PythonUtil.printNumberedTypes (   items,
  maxLen = 5000 
)
print out the type of each item of the list on its own line,
with each item numbered on the left from zero

◆ printNumberedTypesGen()

def direct.showbase.PythonUtil.printNumberedTypesGen (   items,
  maxLen = 5000 
)

◆ printProfile()

def direct.showbase.PythonUtil.printProfile (   filename = PyUtilProfileDefaultFilename,
  lines = PyUtilProfileDefaultLines,
  sorts = PyUtilProfileDefaultSorts,
  callInfo = 1 
)

◆ printReverseStack()

def direct.showbase.PythonUtil.printReverseStack ( )

◆ printStack()

def direct.showbase.PythonUtil.printStack ( )

◆ printThisCall()

def direct.showbase.PythonUtil.printThisCall ( )

◆ printVerboseStack()

def direct.showbase.PythonUtil.printVerboseStack ( )

◆ profiled()

def direct.showbase.PythonUtil.profiled (   category = None,
  terse = False 
)
decorator for profiling functions
turn categories on and off via "want-profile-categoryName 1"

e.g.

@profiled('particles')
def loadParticles():
    ...

want-profile-particles 1

◆ profileFunc()

def direct.showbase.PythonUtil.profileFunc (   callback,
  name,
  terse,
  log = True 
)

◆ pstatcollect()

def direct.showbase.PythonUtil.pstatcollect (   scope,
  level = None 
)

◆ quickProfile()

def direct.showbase.PythonUtil.quickProfile (   name = "unnamed")

◆ r_convertTree()

def direct.showbase.PythonUtil.r_convertTree (   oldTree,
  newTree,
  idList 
)

◆ r_pretty_print()

def direct.showbase.PythonUtil.r_pretty_print (   tree,
  num 
)

◆ randFloat()

def direct.showbase.PythonUtil.randFloat (   a,
  b = 0.,
  rng = random.random 
)
returns a random float in [a, b]
call with single argument to generate random float between arg and zero

◆ randInt32()

def direct.showbase.PythonUtil.randInt32 (   rng = random.random)
returns a random integer in [-2147483648..2147483647].
rng must return float in [0..1]

◆ randUint31()

def direct.showbase.PythonUtil.randUint31 (   rng = random.random)
returns a random integer in [0..2^31).
rng must return float in [0..1]

◆ reduceAngle()

def direct.showbase.PythonUtil.reduceAngle (   deg)
Reduces an angle (in degrees) to a value in [-180..180)

◆ replace()

def direct.showbase.PythonUtil.replace (   list,
  old,
  new,
  all = 0 
)
replace 'old' with 'new' in 'list'
if all == 0, replace first occurrence
otherwise replace all occurrences
returns the number of items replaced

◆ report()

def direct.showbase.PythonUtil.report (   types = [],
  prefix = '',
  xform = None,
  notifyFunc = None,
  dConfigParam = [] 
)
This is a decorator generating function.  Use is similar to
a @decorator, except you must be sure to call it as a function.
It actually returns the decorator which is then used to transform
your decorated function. Confusing at first, I know.

Decoration occurs at function definition time.

If __dev__ is not defined, or resolves to False, this function
has no effect and no wrapping/transform occurs.  So in production,
it's as if the report has been asserted out.

Parameters::
types : A subset list of ['timeStamp', 'frameCount', 'avLocation']
        This allows you to specify certain useful bits of info.

        module:     Prints the module that this report statement
                    can be found in.
        args:       Prints the arguments as they were passed to
                    this function.
        timeStamp:  Adds the current frame time to the output.
        deltaStamp: Adds the current AI synched frame time to
                    the output
        frameCount: Adds the current frame count to the output.
                    Usually cleaner than the timeStamp output.
        avLocation: Adds the localAvatar's network location
                    to the output.  Useful for interest debugging.
        interests:  Prints the current interest state after the
                    report.
        stackTrace: Prints a stack trace after the report.

prefix: Optional string to prepend to output, just before the function.
        Allows for easy grepping and is useful when merging AI/Client
        reports into a single file.

xform:  Optional callback that accepts a single parameter: argument 0 to
        the decorated function. (assumed to be 'self')
        It should return a value to be inserted into the report output string.

notifyFunc: A notify function such as info, debug, warning, etc.
            By default the report will be printed to stdout. This
            will allow you send the report to a designated 'notify'
            output.

dConfigParam: A list of Config.prc string variables.
              By default the report will always print.  If you
              specify this param, it will only print if one of the
              specified config strings resolve to True.

◆ safeRepr()

def direct.showbase.PythonUtil.safeRepr (   obj)

◆ safeReprTypeOnFail()

def direct.showbase.PythonUtil.safeReprTypeOnFail (   obj)

◆ safeTypeName()

def direct.showbase.PythonUtil.safeTypeName (   o)

◆ sameElements()

def direct.showbase.PythonUtil.sameElements (   a,
  b 
)

◆ serialNum()

def direct.showbase.PythonUtil.serialNum ( )

◆ solveQuadratic()

def direct.showbase.PythonUtil.solveQuadratic (   a,
  b,
  c 
)

◆ stackEntryInfo()

def direct.showbase.PythonUtil.stackEntryInfo (   depth = 0,
  baseFileName = 1 
)
returns the sourcefilename, line number, and function name of
an entry in the stack.
'depth' is how far back to go in the stack; 0 is the caller of this
function, 1 is the function that called the caller of this function, etc.
by default, strips off the path of the filename; override with baseFileName
returns (fileName, lineNum, funcName) --> (string, int, string)
returns (None, None, None) on error

◆ startProfile()

def direct.showbase.PythonUtil.startProfile (   filename = PyUtilProfileDefaultFilename,
  lines = PyUtilProfileDefaultLines,
  sorts = PyUtilProfileDefaultSorts,
  silent = 0,
  callInfo = 1,
  useDisk = False,
  cmd = 'run()' 
)

◆ startSuperLog()

def direct.showbase.PythonUtil.startSuperLog (   customFunction = None)

◆ testAlphabetCounter()

def direct.showbase.PythonUtil.testAlphabetCounter ( )

◆ traceFunctionCall()

def direct.showbase.PythonUtil.traceFunctionCall (   frame)
return a string that shows the call frame with calling arguments.
e.g.
foo(x=234, y=135)

◆ traceParentCall()

def direct.showbase.PythonUtil.traceParentCall ( )

◆ typeName()

def direct.showbase.PythonUtil.typeName (   o)

◆ unescapeHtmlString()

def direct.showbase.PythonUtil.unescapeHtmlString (   s)

◆ union()

def direct.showbase.PythonUtil.union (   a,
  b 
)
union(list, list):

◆ uniqueElements()

def direct.showbase.PythonUtil.uniqueElements (   L)
are all elements of list unique?

◆ uniqueName()

def direct.showbase.PythonUtil.uniqueName (   name)

◆ weightedChoice()

def direct.showbase.PythonUtil.weightedChoice (   choiceList,
  rng = random.random,
  sum = None 
)
given a list of (weight, item) pairs, chooses an item based on the
weights. rng must return 0..1. if you happen to have the sum of the
weights, pass it in 'sum'.

◆ weightedRand()

def direct.showbase.PythonUtil.weightedRand (   valDict,
  rng = random.random 
)
pass in a dictionary with a selection -> weight mapping.  Eg.
{"Choice 1": 10,
 "Choice 2": 30,
 "bear":     100}

-Weights need not add up to any particular value.
-The actual selection will be returned.

Variable Documentation

◆ appendStr

appendStr

◆ bound

bound

◆ clamp

clamp = bound

◆ classobj

classobj

◆ configIsToday

configIsToday

◆ deeptype

deeptype

◆ Default

◆ DelayedCall

◆ DelayedFunctor

◆ dtoolSuperBase

dtoolSuperBase = None

◆ exceptionLogged

exceptionLogged

◆ exceptionLoggedNotify

exceptionLoggedNotify = None

◆ fastRepr

fastRepr

◆ flywheel

flywheel

◆ FrameDelayedCall

◆ ftc

def ftc = formatTimeCompact

◆ fte

def fte = formatTimeExact

◆ getBase

getBase

◆ getRepository

getRepository

◆ GoldenRatio

tuple GoldenRatio = (1. + math.sqrt(5.)) / 2.

◆ HierarchyException

◆ histogramDict

histogramDict

◆ imp

def imp = import_module('imp')

◆ import_module

import_module

◆ importlib

def importlib = imp.new_module("importlib")

◆ invertDict

invertDict

◆ invertDictLossless

invertDictLossless

◆ itype

itype

◆ lerp

lerp

◆ logBlock

logBlock

◆ loopGen

loopGen

◆ makeList

makeList

◆ makeTuple

makeTuple

◆ MiniLog

◆ MiniLogSentry

◆ movedDumpFuncs

list movedDumpFuncs = []

◆ movedLoadFuncs

list movedLoadFuncs = []

◆ movedOpenFuncs

list movedOpenFuncs = []

◆ nullGen

nullGen

◆ printReverseStack

printReverseStack

◆ printStack

printStack

◆ printVerboseStack

printVerboseStack

◆ profiled

profiled

◆ profileFilename2file

dictionary profileFilename2file = {}

◆ profileFilename2marshalData

dictionary profileFilename2marshalData = {}

◆ profileFilenameList

profileFilenameList = Stack()

◆ profileFilenames

profileFilenames = set()

◆ pstatcollect

pstatcollect

◆ PyUtilProfileDefaultFilename

string PyUtilProfileDefaultFilename = 'profiledata'

◆ PyUtilProfileDefaultLines

int PyUtilProfileDefaultLines = 80

◆ PyUtilProfileDefaultSorts

list PyUtilProfileDefaultSorts = ['cumulative', 'time', 'calls']

◆ rad180

rad180 = math.pi

◆ rad270

float rad270 = 1.5 * math.pi

◆ rad360

int rad360 = 2. * math.pi

◆ rad90

int rad90 = math.pi / 2.

◆ report

report

◆ safeRepr

safeRepr

◆ safeReprNotify

safeReprNotify = None

◆ safeTypeName

safeTypeName

◆ StackTrace

◆ SubframeCall

◆ superLogFile

superLogFile = None

◆ typeName

typeName

◆ xrange

xrange = range