2323
2424class FunctionTrace (TimeTrace ):
2525 def __init__ (self , name , group = None , label = None , params = None , terminal = False , rollup = None , ** kwargs ):
26- parent = None
26+ parent = kwargs .pop ("parent" , None )
27+ source = kwargs .pop ("source" , None )
2728 if kwargs :
28- if len (kwargs ) > 1 :
29- raise TypeError ("Invalid keyword arguments:" , kwargs )
30- parent = kwargs ["parent" ]
31- super (FunctionTrace , self ).__init__ (parent )
29+ raise TypeError ("Invalid keyword arguments:" , kwargs )
30+
31+ super (FunctionTrace , self ).__init__ (parent = parent , source = source )
3232
3333 # Handle incorrect groupings and leading slashes. This will
3434 # cause an empty segment which we want to avoid. In that case
@@ -138,7 +138,7 @@ def dynamic_wrapper(wrapped, instance, args, kwargs):
138138 else :
139139 _params = params
140140
141- trace = FunctionTrace (_name , _group , _label , _params , terminal , rollup , parent = parent )
141+ trace = FunctionTrace (_name , _group , _label , _params , terminal , rollup , parent = parent , source = wrapped )
142142
143143 if wrapper : # pylint: disable=W0125,W0126
144144 return wrapper (wrapped , trace )(* args , ** kwargs )
@@ -157,7 +157,7 @@ def literal_wrapper(wrapped, instance, args, kwargs):
157157
158158 _name = name or callable_name (wrapped )
159159
160- trace = FunctionTrace (_name , group , label , params , terminal , rollup , parent = parent )
160+ trace = FunctionTrace (_name , group , label , params , terminal , rollup , parent = parent , source = wrapped )
161161
162162 if wrapper : # pylint: disable=W0125,W0126
163163 return wrapper (wrapped , trace )(* args , ** kwargs )
0 commit comments