Uploaded image for project: 'PyLucene'
  1. PyLucene
  2. PYLUCENE-51

"AttributeError: __module__" when running doctest

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Invalid
    • Labels:
      None
    • Environment:
      Ubuntu 19.04, Python 3.7

      Description

      Dear all,

      I am using the Orekit Python wrapper by Petrus Hyvönen . I am running into errors & warnings when trying to run tests with doctest. When collecting tests, it analyzes the classes (all the 1000+ wrapped Java classes it seems) and runs into the following error:

      [...]/lib/python3.7/site-packages/pytest_doctestplus/plugin.py:137: in collect
       for test in finder.find(module):
       [...]/lib/python3.7/site-packages/pytest_doctestplus/plugin.py:425: in find
       extraglobs)
       [...]/lib/python3.7/doctest.py:932: in find
       self._find(tests, obj, name, module, source_lines, globs, {})
       [...]/lib/python3.7/doctest.py:993: in _find
       self._from_module(module, val)):
       [...]/lib/python3.7/doctest.py:960: in _from_module
       return module._name_ == object._module_
       E AttributeError: _module_

       

      In doctest (https://github.com/python/cpython/blob/master/Lib/doctest.py#L959), the

      inspect.isclass(object) 

      condition at line 959 returns `True`, and therefore doctest tries to access the object's _module_ attribute, which does not seem to exist.

      Besides, pytest prints a warning for each Java class being wrapped, also because they have no _module_ attribute (this is one example of 1000+ warnings):

      [...]/lib/python3.7/importlib/bootstrap.py:219: DeprecationWarning: builtin type ExtendedKalmanFilter has no __module_ attribute
       return f(*args, **kwds)

      This phenomenon is new because 6 months ago I could run pytest & doctest successfully with Orekit. I could not find which module contains the change that broke stuff since then though.

      To reproduce the phenomenon, you can check out https://github.com/GorgiAstro/poliastro/blob/orekit-validation/src/poliastro/tests/tests_twobody/test_propagation.py#L164
      I was trying to validate some poliastro features using the Orekit python wrapper. So this code requires poliastro, it is available on conda-forge.

      Cheers

      Clément

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              yzokras Clément Jonglez
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: