diff options
author | Jacob Walls <jacobtylerwalls@gmail.com> | 2022-08-09 04:12:52 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-09 10:12:52 +0200 |
commit | 93ca875a10c4ff84772d77e52f991882309ca7aa (patch) | |
tree | af7d1d8c5edfa29900811942e9b1ed432bc189fc | |
parent | 4551b579ac91534cc7690974aabd36e51d1572b7 (diff) | |
download | astroid-git-93ca875a10c4ff84772d77e52f991882309ca7aa.tar.gz |
Fix crash in `ExplicitNamespacePackageFinder` (#1714)
* Add skip if no `six`
* `urllib3` does appear to be required
* Check `submodule_search_locations`
Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | astroid/interpreter/_import/util.py | 9 | ||||
-rw-r--r-- | requirements_test_brain.txt | 1 | ||||
-rw-r--r-- | tests/unittest_modutils.py | 17 |
4 files changed, 27 insertions, 4 deletions
@@ -12,6 +12,10 @@ What's New in astroid 2.12.3? ============================= Release date: TBA +* Fixed crash in ``ExplicitNamespacePackageFinder`` involving ``_SixMetaPathImporter``. + + Closes #1708 + * Fix unhandled `FutureWarning` from pandas import in cython modules Closes #1717 diff --git a/astroid/interpreter/_import/util.py b/astroid/interpreter/_import/util.py index c1694f85..f082e9c4 100644 --- a/astroid/interpreter/_import/util.py +++ b/astroid/interpreter/_import/util.py @@ -72,7 +72,8 @@ def is_namespace(modname: str) -> bool: if found_spec and found_spec.submodule_search_locations: last_submodule_search_locations = found_spec.submodule_search_locations - if found_spec is None: - return False - - return found_spec.origin is None + return ( + found_spec is not None + and found_spec.submodule_search_locations is not None + and found_spec.origin is None + ) diff --git a/requirements_test_brain.txt b/requirements_test_brain.txt index 76f0ebd1..3cde9230 100644 --- a/requirements_test_brain.txt +++ b/requirements_test_brain.txt @@ -7,3 +7,4 @@ PyQt6 types-python-dateutil six types-six +urllib3 diff --git a/tests/unittest_modutils.py b/tests/unittest_modutils.py index 96418b01..82bb7660 100644 --- a/tests/unittest_modutils.py +++ b/tests/unittest_modutils.py @@ -17,6 +17,7 @@ from pathlib import Path from xml import etree from xml.etree import ElementTree +import pytest from pytest import CaptureFixture, LogCaptureFixture import astroid @@ -25,6 +26,13 @@ from astroid.interpreter._import import spec from . import resources +try: + import urllib3 # pylint: disable=unused-import + + HAS_URLLIB3 = True +except ImportError: + HAS_URLLIB3 = False + def _get_file_from_object(obj) -> str: return modutils._path_from_filename(obj.__file__) @@ -439,5 +447,14 @@ class ExtensionPackageWhitelistTest(unittest.TestCase): ) +@pytest.mark.skipif(not HAS_URLLIB3, reason="This test requires urllib3.") +def test_file_info_from_modpath__SixMetaPathImporter() -> None: + pytest.raises( + ImportError, + modutils.file_info_from_modpath, + ["urllib3.packages.six.moves.http_client"], + ) + + if __name__ == "__main__": unittest.main() |