Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if parent:
self.parents.append( parent )
parent.children.append( self )
def child_cumulative_time( self, child ):
total = self.cummulative
if total:
try:
(cc,nc,tt,ct) = child.callers[ self.key ]
except TypeError as err:
ct = child.callers[ self.key ]
return float(ct)/total
return 0
class PStatGroup( BaseStat ):
"""A node/record that holds a group of children but isn't a raw-record based group"""
# if LOCAL_ONLY then only take the raw-record's local values, not cummulative values
LOCAL_ONLY = False
def __init__( self, directory='', filename='', name='', children=None, local_children=None, tree=TREE_CALLS ):
self.directory = directory
self.filename = filename
self.name = ''
self.key = (directory,filename,name)
self.children = children or []
self.parents = []
self.local_children = local_children or []
self.tree = tree
def __repr__( self ):
return '%s( %r,%r,%s )'%(self.__class__.__name__,self.directory, self.filename, self.name)
def finalize( self, already_done=None ):
"""Finalize our values (recursively) taken from our children"""
def recursive_distinct( self, already_done=None, attribute='children' ):
if already_done is None:
already_done = {}
for child in getattr(self,attribute,()):
if child not in already_done:
already_done[child] = True
yield child
for descendent in child.recursive_distinct( already_done=already_done, attribute=attribute ):
yield descendent
def descendants( self ):
return list( self.recursive_distinct( attribute='children' ))
def ancestors( self ):
return list( self.recursive_distinct( attribute='parents' ))
class PStatRow( BaseStat ):
"""Simulates a HotShot profiler record using PStats module"""
def __init__( self, key, raw ):
self.children = []
self.parents = []
file,line,func = self.key = key
try:
dirname,basename = os.path.dirname(file),os.path.basename(file)
except ValueError as err:
dirname = ''
basename = file
nc, cc, tt, ct, callers = raw
if nc == cc == tt == ct == 0:
raise ValueError( 'Null stats row' )
(
self.calls, self.recursive, self.local, self.localPer,
self.cummulative, self.cummulativePer, self.directory,