This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author eric.snow
Recipients brett.cannon, eric.snow, ncoghlan, vstinner
Date 2016-03-17.00:48:10
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1458175690.32.0.163346740671.issue26569@psf.upfronthosting.co.za>
In-reply-to
Content
Ah, you're talking about deleting Lib/test/__init__.py.  Doing so makes it a namespace package.  The loader we use for namespace packages [1] does not have a get_filename() method.  So the problem to solve is supporting namespace packages in Lib/pyclbr.py.

Regarding your patch, it's okay, but not the best option.  Using spec.submodule_search_locations like you are isn't ideal, but works.  However, you should be able to leave the is_package() call alone.

TBH, the better option is to use importlib.util.module_from_spec() instead, since it does the right thing for you, like setting __path__.

FWIW, I get the same as you by deleting those files and running the following:

  ./python Lib/pyclbr.py Lib/test


[1] https://hg.python.org/cpython/file/default/Lib/importlib/_bootstrap_external.py#l991
History
Date User Action Args
2016-03-17 00:48:10eric.snowsetrecipients: + eric.snow, brett.cannon, ncoghlan, vstinner
2016-03-17 00:48:10eric.snowsetmessageid: <1458175690.32.0.163346740671.issue26569@psf.upfronthosting.co.za>
2016-03-17 00:48:10eric.snowlinkissue26569 messages
2016-03-17 00:48:10eric.snowcreate