class documentation

Provide context for inference

Store already inferred nodes to save time Account for already visited nodes to stop infinite recursion

Method __init__ Undocumented
Method __str__ Undocumented
Method clone Clone inference path
Method nodes_inferred.setter Undocumented
Method push Push node into inference path
Method restore_path Undocumented
Class Variable __slots__ Undocumented
Class Variable max_inferred Undocumented
Instance Variable boundnode The bound node of the given context
Instance Variable callcontext The call arguments and keywords for the given context
Instance Variable extra_context Context that needs to be passed down through call stacks for call arguments
Instance Variable lookupname The original name of the node
Instance Variable path Path of visited nodes and their lookupname
Property inferred Inferred node contexts to their mapped results
Property nodes_inferred Number of nodes inferred in this context and all its clones/descendents
Instance Variable _nodes_inferred Undocumented
def __init__(self, path=None, nodes_inferred=None): (source)

Undocumented

def __str__(self): (source)

Undocumented

def clone(self): (source)

Clone inference path

For example, each side of a binary operation (BinOp) starts with the same context but diverge as each side is inferred so the InferenceContext will need be cloned

@nodes_inferred.setter
def nodes_inferred(self, value): (source)

Undocumented

def push(self, node): (source)

Push node into inference path

Allows one to see if the given node has already been looked at for this inference context

Returns
boolTrue if node is already in context path else False
@contextlib.contextmanager
def restore_path(self): (source)

Undocumented

__slots__: tuple[str, ...] = (source)

Undocumented

max_inferred: int = (source)

Undocumented

boundnode = (source)

The bound node of the given context

e.g. the bound node of object.__new__(cls) is the object node

callcontext = (source)

The call arguments and keywords for the given context

extra_context: dict = (source)

Context that needs to be passed down through call stacks for call arguments

lookupname = (source)

The original name of the node

e.g. foo = 1 The inference of 'foo' is nodes.Const(1) but the lookup name is 'foo'

Path of visited nodes and their lookupname

Currently this key is (node, context.lookupname)

@property
inferred: MutableMapping[tuple[NodeNG, str | None, str | None, str | None], Sequence[NodeNG]] = (source)

Inferred node contexts to their mapped results

Currently the key is (node, lookupname, callcontext, boundnode) and the value is tuple of the inferred results

@property
nodes_inferred = (source)

Number of nodes inferred in this context and all its clones/descendents

Wrap inner value in a mutable cell to allow for mutating a class variable in the presence of __slots__

_nodes_inferred: list[int] = (source)

Undocumented