Tipragot
628be439b8
Cela permet de ne pas avoir de problèmes de compatibilité car python est dans le git.
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
# Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html
|
|
# For details: https://github.com/pylint-dev/astroid/blob/main/LICENSE
|
|
# Copyright (c) https://github.com/pylint-dev/astroid/blob/main/CONTRIBUTORS.txt
|
|
|
|
"""This module contains utility functions for scoped nodes."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
from astroid.manager import AstroidManager
|
|
|
|
if TYPE_CHECKING:
|
|
from astroid import nodes
|
|
|
|
|
|
def builtin_lookup(name: str) -> tuple[nodes.Module, list[nodes.NodeNG]]:
|
|
"""Lookup a name in the builtin module.
|
|
|
|
Return the list of matching statements and the ast for the builtin module
|
|
"""
|
|
manager = AstroidManager()
|
|
try:
|
|
_builtin_astroid = manager.builtins_module
|
|
except KeyError:
|
|
# User manipulated the astroid cache directly! Rebuild everything.
|
|
manager.clear_cache()
|
|
_builtin_astroid = manager.builtins_module
|
|
if name == "__dict__":
|
|
return _builtin_astroid, ()
|
|
try:
|
|
stmts: list[nodes.NodeNG] = _builtin_astroid.locals[name] # type: ignore[assignment]
|
|
except KeyError:
|
|
stmts = []
|
|
return _builtin_astroid, stmts
|