Skip to content

MyPy.ini Make Import Machinery Explicit #26645

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
215 changes: 213 additions & 2 deletions mypy.ini
Original file line number Diff line number Diff line change
@@ -1,6 +1,217 @@
[mypy]
ignore_missing_imports=True
follow_imports=silent

[mypy-blosc]
ignore_missing_imports = True

[mypy-botocore.exceptions]
ignore_missing_imports = True

[mypy-bottleneck]
ignore_missing_imports = True

[mypy-bs4]
ignore_missing_imports = True

[mypy-dateutil.easter]
ignore_missing_imports = True

[mypy-fastparquet]
ignore_missing_imports = True

[mypy-gcsfs]
ignore_missing_imports = True

[mypy-html5lib]
ignore_missing_imports = True

[mypy-IPython.*]
ignore_missing_imports = True

[mypy-lxml.*]
ignore_missing_imports = True

[mypy-matplotlib.*]
ignore_missing_imports = True

[mypy-numexpr]
ignore_missing_imports = True

[mypy-numpy.*]
ignore_missing_imports = True

[mypy-openpyxl.*]
ignore_missing_imports = True

[mypy-pandas._libs.algos]
ignore_missing_imports = True

[mypy-pandas._libs.groupby]
ignore_missing_imports = True

[mypy-pandas._libs.hashing]
ignore_missing_imports = True

[mypy-pandas._libs.hashtable]
ignore_missing_imports = True

[mypy-pandas._libs.index]
ignore_missing_imports = True

[mypy-pandas._libs.indexing]
ignore_missing_imports = True

[mypy-pandas._libs.internals]
ignore_missing_imports = True

[mypy-pandas._libs.interval]
ignore_missing_imports = True

[mypy-pandas._libs.join]
ignore_missing_imports = True

[mypy-pandas._libs.json]
ignore_missing_imports = True

[mypy-pandas._libs.lib]
ignore_missing_imports = True

[mypy-pandas._libs.missing]
ignore_missing_imports = True

[mypy-pandas._libs.ops]
ignore_missing_imports = True

[mypy-pandas._libs.parsers]
ignore_missing_imports = True

[mypy-pandas._libs.properties]
ignore_missing_imports = True

[mypy-pandas._libs.reduction]
ignore_missing_imports = True

[mypy-pandas._libs.reshape]
ignore_missing_imports = True

[mypy-pandas._libs.sparse]
ignore_missing_imports = True

[mypy-pandas._libs.testing]
ignore_missing_imports = True

[mypy-pandas._libs.tslib]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.c_timestamp]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.ccalendar]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.conversion]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.fields]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.frequencies]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.nattype]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.np_datetime]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.offsets]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.parsing]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.period]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.resolution]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.strptime]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.timestamps]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.timedeltas]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.timezones]
ignore_missing_imports = True

[mypy-pandas._libs.tslibs.tzconversion]
ignore_missing_imports = True

[mypy-pandas._libs.window]
ignore_missing_imports = True

[mypy-pandas._libs.writers]
ignore_missing_imports = True

[mypy-pandas.core.arrays.sparse.array]
ignore_missing_imports = True

[mypy-pandas.io.msgpack._packer]
ignore_missing_imports = True

[mypy-pandas.io.msgpack._unpacker]
ignore_missing_imports = True

[mypy-pandas.io.sas._sas]
Copy link
Contributor

@jreback jreback Jun 5, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do the cython libs have to be here?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These throw errors like error: No library stub file for module ‘<the_pyx_file>’ - I imagine the annotations don't find anything that gets imported.

I think the only way around this may be to add stub files for the internally used aspects of the .pyx files but haven't found anything definitive yet. Also asked if anyone had experience with this on the typing Gitter but no luck yet. Stub files might not be a terrible fallback if that's all that works

ignore_missing_imports = True

[mypy-pandas.util._move]
ignore_missing_imports = True

[mypy-pandas_gbq]
ignore_missing_imports = True

[mypy-pyarrow.*]
ignore_missing_imports = True

[mypy-pytest]
ignore_missing_imports = True

[mypy-PyQt4.*]
ignore_missing_imports = True

[mypy-PyQt5.*]
ignore_missing_imports = True

[mypy-qtpy.*]
ignore_missing_imports = True

[mypy-s3fs]
ignore_missing_imports = True

[mypy-scipy.*]
ignore_missing_imports = True

[mypy-sqlalchemy.*]
ignore_missing_imports = True

[mypy-tables]
ignore_missing_imports = True

[mypy-xarray]
ignore_missing_imports = True

[mypy-xlrd]
ignore_missing_imports = True

[mypy-xlsxwriter]
ignore_missing_imports = True

[mypy-xlwt]
ignore_missing_imports = True

[mypy-pandas.conftest,pandas.tests.*]
ignore_errors=True
Expand Down
2 changes: 1 addition & 1 deletion pandas/io/formats/console.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def in_interactive_session():

def check_main():
try:
import __main__ as main
import __main__ as main # type: ignore
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was ignored and won't be fixed as stated in mypy python/mypy#658, though perhaps a better solution would be to just use sys.stdin.isatty() (follow up PR)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO it would be nice to put a link the related mypy issue as comment too, for people in future who might be wonder why it's been ignored.
But l feel isattay() is indeed the better solution.

except ModuleNotFoundError:
return get_option('mode.sim_interactive')
return (not hasattr(main, '__file__') or
Expand Down