2024-10-17 04:43:13 +00:00
|
|
|
import ast
|
|
|
|
|
|
|
|
from lazy_import.ast import flatten_attribute, NameVisitor, NameCollection, Name
|
|
|
|
|
|
|
|
from .conftest import DATA_DIR
|
|
|
|
|
|
|
|
# def test_flatten_attribute():
|
|
|
|
# attr = ast.Attribute(
|
|
|
|
# value=ast.Attribute(
|
|
|
|
# value=ast.Name(id='numpy'),
|
|
|
|
# attr='random'),
|
|
|
|
# attr='random'
|
|
|
|
# )
|
|
|
|
# assert isinstance(attr, ast.Attribute)
|
|
|
|
#
|
|
|
|
# assert flatten_attribute(attr) == "numpy.random.random"
|
|
|
|
|
|
|
|
def test_find_fake_names():
|
|
|
|
expected = NameCollection(names=[Name(module='ast', name=None, aliases=set()),
|
|
|
|
Name(module='typing', name='List', aliases=set()),
|
|
|
|
Name(module='re', name='match', aliases={'match'}),
|
|
|
|
Name(module='importlib.abc',
|
|
|
|
name='Finder',
|
|
|
|
aliases=set()),
|
|
|
|
|
|
|
|
Name(module='os.path', name='basename', aliases=set()),
|
|
|
|
Name(module='pathlib', name='Path', aliases=set()),
|
|
|
|
Name(module='array', name='array', aliases=set()),
|
|
|
|
Name(module='base64', name='b64decode', aliases=set()),
|
|
|
|
Name(module='binascii', name='hexlify', aliases=set()),
|
|
|
|
Name(module='random',
|
|
|
|
name='randint',
|
|
|
|
aliases={'randint'}),
|
|
|
|
])
|
|
|
|
|
|
|
|
with open(DATA_DIR / 'input_file.py', 'r') as sfile:
|
|
|
|
source_code = sfile.read()
|
|
|
|
|
|
|
|
node = ast.parse(source_code)
|
|
|
|
visitor = NameVisitor()
|
|
|
|
visitor.visit(node)
|
|
|
|
assert visitor.fake_names == expected
|
|
|
|
|