trulens.core.instruments¶
trulens.core.instruments
¶
Instrumentation¶
This module contains the core of the app instrumentation scheme employed by trulens to track and record apps. These details should not be relevant for typical use cases.
Classes¶
WithInstrumentCallbacks
¶
Abstract definition of callbacks invoked by Instrument during instrumentation or when instrumented methods are called.
Needs to be mixed into App.
Functions¶
on_method_instrumented
¶
Callback to be called by instrumentation system for every function requested to be instrumented.
Given are the object of the class in which func
belongs
(i.e. the "self" for that function), the func
itself, and the path
of the owner object in the app hierarchy.
PARAMETER | DESCRIPTION |
---|---|
obj |
The object of the class in which
TYPE:
|
func |
The function that was instrumented. Expects the unbound version (self not yet bound).
TYPE:
|
path |
The path of the owner object in the app hierarchy.
TYPE:
|
get_method_path
¶
Get the path of the instrumented function func
, a member of the class
of obj
relative to this app.
PARAMETER | DESCRIPTION |
---|---|
obj |
The object of the class in which
TYPE:
|
func |
The function that was instrumented. Expects the unbound version (self not yet bound).
TYPE:
|
get_methods_for_func
¶
Get the methods (rather the inner functions) matching the given func
and the path of each.
PARAMETER | DESCRIPTION |
---|---|
func |
The function to match.
TYPE:
|
on_new_record
¶
on_new_record(func: Callable)
Called by instrumented methods in cases where they cannot find a record call list in the stack. If we are inside a context manager, return a new call list.
on_add_record
¶
on_add_record(
ctx: "RecordingContext",
func: Callable,
sig: Signature,
bindings: BoundArguments,
ret: Any,
error: Any,
perf: Perf,
cost: Cost,
existing_record: Optional[Record] = None,
)
Called by instrumented methods if they are root calls (first instrumented methods in a call stack).
PARAMETER | DESCRIPTION |
---|---|
ctx |
The context of the recording.
TYPE:
|
func |
The function that was called.
TYPE:
|
sig |
The signature of the function.
TYPE:
|
bindings |
The bound arguments of the function.
TYPE:
|
ret |
The return value of the function.
TYPE:
|
error |
The error raised by the function if any.
TYPE:
|
perf |
The performance of the function.
TYPE:
|
cost |
The cost of the function.
TYPE:
|
existing_record |
If the record has already been produced (i.e. because it was an awaitable), it can be passed here to avoid re-creating it. |
Instrument
¶
Instrumentation tools.
Attributes¶
INSTRUMENT
class-attribute
instance-attribute
¶
INSTRUMENT = '__tru_instrumented'
Attribute name to be used to flag instrumented objects/methods/others.
APPS
class-attribute
instance-attribute
¶
APPS = '__tru_apps'
Attribute name for storing apps that expect to be notified of calls.
Classes¶
Default
¶
Default instrumentation configuration.
Additional components are included in subclasses of Instrument.
Functions¶
print_instrumentation
¶
print_instrumentation() -> None
Print out description of the modules, classes, methods this class will instrument.
to_instrument_object
¶
Determine whether the given object should be instrumented.
to_instrument_class
¶
Determine whether the given class should be instrumented.
to_instrument_module
¶
Determine whether a module with the given (full) name should be instrumented.
tracked_method_wrapper
¶
Wrap a method to capture its inputs/outputs/errors.
instrument_class
¶
instrument_class(cls)
Instrument the given class cls
's new method.
This is done so we can be aware when new instances are created and is needed for wrapped methods that dynamically create instances of classes we wish to instrument. As they will not be visible at the time we wrap the app, we need to pay attention to new to make a note of them when they are created and the creator's path. This path will be used to place these new instances in the app json structure.
instrument_object
¶
Instrument the given object obj
and its components.
instrument_bound_methods
¶
Instrument functions that may be bound methods.
Some apps include either anonymous functions or manipulates methods that have self bound already. Our other instrumentation cannot handle those cases.
Warning
Experimental work in progress.
AddInstruments
¶
instrument
¶
Bases: AddInstruments
Decorator for marking methods to be instrumented in custom classes that are wrapped by App.
Functions¶
class_filter_disjunction
¶
class_filter_disjunction(
f1: ClassFilter, f2: ClassFilter
) -> ClassFilter
Create a disjunction of two class filters.
PARAMETER | DESCRIPTION |
---|---|
f1 |
The first filter.
TYPE:
|
f2 |
The second filter.
TYPE:
|
class_filter_matches
¶
Check whether given object matches a class-based filter.
A class-based filter here means either a type to match against object (isinstance if object is not a type or issubclass if object is a type), or a tuple of types to match against interpreted disjunctively.
PARAMETER | DESCRIPTION |
---|---|
f |
The filter to match against.
TYPE:
|
obj |
The object to match against. If type, uses |