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
|