X7ROOT File Manager
Current Path:
/opt/cloudlinux/venv/lib/python3.11/site-packages/astroid
opt
/
cloudlinux
/
venv
/
lib
/
python3.11
/
site-packages
/
astroid
/
📁
..
📄
__init__.py
(4.98 KB)
📄
__pkginfo__.py
(274 B)
📁
__pycache__
📄
_ast.py
(4.05 KB)
📄
_backport_stdlib_names.py
(6.85 KB)
📄
_cache.py
(786 B)
📄
arguments.py
(12.65 KB)
📄
astroid_manager.py
(572 B)
📄
bases.py
(24.99 KB)
📁
brain
📄
builder.py
(18.35 KB)
📄
const.py
(1.07 KB)
📄
constraint.py
(4.92 KB)
📄
context.py
(5.85 KB)
📄
decorators.py
(9.85 KB)
📄
exceptions.py
(12.78 KB)
📄
filter_statements.py
(9.42 KB)
📄
helpers.py
(11.07 KB)
📄
inference.py
(44.06 KB)
📄
inference_tip.py
(2.82 KB)
📁
interpreter
📄
manager.py
(17.54 KB)
📄
mixins.py
(1.15 KB)
📄
modutils.py
(22.96 KB)
📄
node_classes.py
(1.8 KB)
📁
nodes
📄
objects.py
(12.46 KB)
📄
protocols.py
(32.2 KB)
📄
raw_building.py
(22.34 KB)
📄
rebuilder.py
(77.86 KB)
📄
scoped_nodes.py
(958 B)
📄
test_utils.py
(2.38 KB)
📄
transforms.py
(3.19 KB)
📄
typing.py
(1.94 KB)
📄
util.py
(4.62 KB)
Editing: inference_tip.py
# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html # For details: https://github.com/PyCQA/astroid/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt """Transform utilities (filters and decorator).""" from __future__ import annotations import typing from collections.abc import Iterator import wrapt from astroid.exceptions import InferenceOverwriteError, UseInferenceDefault from astroid.nodes import NodeNG from astroid.typing import InferenceResult, InferFn _cache: dict[tuple[InferFn, NodeNG], list[InferenceResult] | None] = {} def clear_inference_tip_cache() -> None: """Clear the inference tips cache.""" _cache.clear() @wrapt.decorator def _inference_tip_cached( func: InferFn, instance: None, args: typing.Any, kwargs: typing.Any ) -> Iterator[InferenceResult]: """Cache decorator used for inference tips.""" node = args[0] try: result = _cache[func, node] # If through recursion we end up trying to infer the same # func + node we raise here. if result is None: raise UseInferenceDefault() except KeyError: _cache[func, node] = None result = _cache[func, node] = list(func(*args, **kwargs)) assert result return iter(result) def inference_tip(infer_function: InferFn, raise_on_overwrite: bool = False) -> InferFn: """Given an instance specific inference function, return a function to be given to AstroidManager().register_transform to set this inference function. :param bool raise_on_overwrite: Raise an `InferenceOverwriteError` if the inference tip will overwrite another. Used for debugging Typical usage .. sourcecode:: python AstroidManager().register_transform(Call, inference_tip(infer_named_tuple), predicate) .. Note:: Using an inference tip will override any previously set inference tip for the given node. Use a predicate in the transform to prevent excess overwrites. """ def transform(node: NodeNG, infer_function: InferFn = infer_function) -> NodeNG: if ( raise_on_overwrite and node._explicit_inference is not None and node._explicit_inference is not infer_function ): raise InferenceOverwriteError( "Inference already set to {existing_inference}. " "Trying to overwrite with {new_inference} for {node}".format( existing_inference=infer_function, new_inference=node._explicit_inference, node=node, ) ) # pylint: disable=no-value-for-parameter node._explicit_inference = _inference_tip_cached(infer_function) return node return transform
Upload File
Create Folder