class documentation

class InferenceContext: (source)

View In Hierarchy

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
Instance Variable callcontext
Instance Variable extra​_context
Instance Variable lookupname
Instance Variable path
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 = (source)

Path of visited nodes and their lookupname

Currently this key is (node, context.lookupname)

@property
inferred: MutableMapping[Tuple[NodeNG, Optional[str], Optional[str], Optional[str]], 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