alecthomas / importmagic

A Python library for finding unresolved symbols in Python code, and the corresponding imports
BSD 2-Clause "Simplified" License
120 stars 20 forks source link

Python 3 type hints for returned data #55

Open dsyzling opened 4 years ago

dsyzling commented 4 years ago

I ran across a potential issue with importmagic with a small test case that uses type hints, the following code seems to prompt importmagic to want to import 'data':

import pandas as pd
from pandas import DataFrame

def test_loading_data_from_csv() -> None:
    # if we remove the type hint for DataFrame importmagic returns an
    # empty list of unresolved.
    data: DataFrame = pd.DataFrame(columns=['User'])
    assert data.shape == (0, 1)

when I run importmagic it claims 'data' and 'data.shape' are unresolved, here's the code I used to check the above and the results from running it at the command line:

import sys
import importmagic

if __name__ == '__main__':
    index = importmagic.SymbolIndex()
    index.build_index(sys.path)
    with open("importmagic_testcase.py") as file:
        data = file.read()

    scope = importmagic.Scope.from_source(data)
    unresolved, unreferenced = scope.find_unresolved_and_unreferenced_symbols()
    print(unresolved)

output is:

python -c "import sys;import runpy;sys.path.append('/home/dsyzling/projects/python/pandastest');runpy.run_path('/home/dsyzling/projects/python/pandastest/tests/run_importmagic_testcase.py', run_name='__main__')"
{'data', 'data.shape'}