python-greenlet / greenlet

Lightweight in-process concurrent programming
Other
1.62k stars 247 forks source link

2.0.2: pytest is failing #348

Closed kloczek closed 1 year ago

kloczek commented 1 year ago

I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

Here is pytest output:

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-greenlet-2.0.2-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-greenlet-2.0.2-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.8.16, pytest-7.2.1, pluggy-1.0.0 rootdir: /home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2 collected 0 items / 14 errors ========================================================================================== ERRORS =========================================================================================== __________________________________________________________________ ERROR collecting src/greenlet/tests/test_contextvars.py __________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_contextvars.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ______________________________________________________________________ ERROR collecting src/greenlet/tests/test_cpp.py ______________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_cpp.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ______________________________________________________________ ERROR collecting src/greenlet/tests/test_extension_interface.py ______________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_extension_interface.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ______________________________________________________________________ ERROR collecting src/greenlet/tests/test_gc.py _______________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_gc.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ___________________________________________________________________ ERROR collecting src/greenlet/tests/test_generator.py ___________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_generator.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' _______________________________________________________________ ERROR collecting src/greenlet/tests/test_generator_nested.py ________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_generator_nested.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ___________________________________________________________________ ERROR collecting src/greenlet/tests/test_greenlet.py ____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_greenlet.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ________________________________________________________________ ERROR collecting src/greenlet/tests/test_greenlet_trash.py _________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_greenlet_trash.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' _____________________________________________________________________ ERROR collecting src/greenlet/tests/test_leaks.py _____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_leaks.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' __________________________________________________________________ ERROR collecting src/greenlet/tests/test_stack_saved.py __________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_stack_saved.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' _____________________________________________________________________ ERROR collecting src/greenlet/tests/test_throw.py _____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_throw.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ____________________________________________________________________ ERROR collecting src/greenlet/tests/test_tracing.py ____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_tracing.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ____________________________________________________________________ ERROR collecting src/greenlet/tests/test_version.py ____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_version.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ____________________________________________________________________ ERROR collecting src/greenlet/tests/test_weakref.py ____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_weakref.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: /usr/lib64/python3.8/importlib/__init__.py:127: in import_module return _bootstrap._gcd_import(name[level:], package, level) src/greenlet/__init__.py:29: in from ._greenlet import _C_API # pylint:disable=no-name-in-module E ModuleNotFoundError: No module named 'greenlet._greenlet' ================================================================================== short test summary info ================================================================================== ERROR src/greenlet/tests/test_contextvars.py ERROR src/greenlet/tests/test_cpp.py ERROR src/greenlet/tests/test_extension_interface.py ERROR src/greenlet/tests/test_gc.py ERROR src/greenlet/tests/test_generator.py ERROR src/greenlet/tests/test_generator_nested.py ERROR src/greenlet/tests/test_greenlet.py ERROR src/greenlet/tests/test_greenlet_trash.py ERROR src/greenlet/tests/test_leaks.py ERROR src/greenlet/tests/test_stack_saved.py ERROR src/greenlet/tests/test_throw.py ERROR src/greenlet/tests/test_tracing.py ERROR src/greenlet/tests/test_version.py ERROR src/greenlet/tests/test_weakref.py !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 14 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ==================================================================================== 14 errors in 0.14s ===================================================================================== ```

Here is list of installed modules in build env

```console `Package Version ----------------------------- ----------------- alabaster 0.7.13 appdirs 1.4.4 attrs 22.2.0 Babel 2.11.0 build 0.9.0 charset-normalizer 3.0.1 cssselect 1.1.0 distro 1.8.0 docutils 0.19 exceptiongroup 1.0.0 extras 1.0.0 fixtures 4.0.0 gpg 1.18.0-unknown idna 3.4 imagesize 1.4.1 importlib-metadata 6.0.0 iniconfig 2.0.0 Jinja2 3.1.2 libcomps 0.1.19 lxml 4.9.2 Markdown 3.4.1 MarkupSafe 2.1.2 numpy 1.24.2 olefile 0.46 packaging 23.0 pbr 5.9.0 pep517 0.13.0 Pillow 9.4.0 pip 22.3.1 pluggy 1.0.0 psutil 5.9.2 Pygments 2.14.0 PyGObject 3.43.1.dev0 pytest 7.2.1 python-dateutil 2.8.2 pytz 2022.4 requests 2.28.2 rpm 4.17.0 scour 0.38.2 setuptools 65.6.3 six 1.16.0 smartypants 2.0.1 snowballstemmer 2.2.0 Sphinx 6.1.3 sphinxcontrib-applehelp 1.0.4 sphinxcontrib-devhelp 1.0.2.dev20230202 sphinxcontrib-htmlhelp 2.0.0 sphinxcontrib-jsmath 1.0.1.dev20230128 sphinxcontrib-qthelp 1.0.3.dev20230128 sphinxcontrib-serializinghtml 1.1.5 testtools 2.5.0 toml 0.10.2 tomli 2.0.1 typogrify 2.0.7 urllib3 1.26.12 wheel 0.38.4 zipp 3.13.0 ``
kloczek commented 1 year ago

After add --import-mode=importlib to pyetst params:

```console + PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-greenlet-2.0.2-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-greenlet-2.0.2-2.fc35.x86_64/usr/lib/python3.8/site-packages + /usr/bin/pytest -ra -m 'not network' --import-mode=importlib ==================================================================================== test session starts ==================================================================================== platform linux -- Python 3.8.16, pytest-7.2.1, pluggy-1.0.0 rootdir: /home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2 collected 2 items / 12 errors ========================================================================================== ERRORS =========================================================================================== __________________________________________________________________ ERROR collecting src/greenlet/tests/test_contextvars.py __________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_contextvars.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_contextvars.py:12: in from . import TestCase E ModuleNotFoundError: No module named 'src' ______________________________________________________________________ ERROR collecting src/greenlet/tests/test_cpp.py ______________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_cpp.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_cpp.py:8: in from . import _test_extension_cpp E ModuleNotFoundError: No module named 'src' ______________________________________________________________ ERROR collecting src/greenlet/tests/test_extension_interface.py ______________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_extension_interface.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_extension_interface.py:7: in from . import _test_extension E ModuleNotFoundError: No module named 'src' ______________________________________________________________________ ERROR collecting src/greenlet/tests/test_gc.py _______________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_gc.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_gc.py:8: in from . import TestCase E ModuleNotFoundError: No module named 'src' ___________________________________________________________________ ERROR collecting src/greenlet/tests/test_generator.py ___________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_generator.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_generator.py:4: in from . import TestCase E ModuleNotFoundError: No module named 'src' _______________________________________________________________ ERROR collecting src/greenlet/tests/test_generator_nested.py ________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_generator_nested.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_generator_nested.py:3: in from . import TestCase E ModuleNotFoundError: No module named 'src' ___________________________________________________________________ ERROR collecting src/greenlet/tests/test_greenlet.py ____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_greenlet.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_greenlet.py:13: in from . import TestCase E ModuleNotFoundError: No module named 'src' _____________________________________________________________________ ERROR collecting src/greenlet/tests/test_leaks.py _____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_leaks.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_leaks.py:17: in from . import TestCase E ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location) __________________________________________________________________ ERROR collecting src/greenlet/tests/test_stack_saved.py __________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_stack_saved.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_stack_saved.py:2: in from . import TestCase E ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location) _____________________________________________________________________ ERROR collecting src/greenlet/tests/test_throw.py _____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_throw.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_throw.py:5: in from . import TestCase E ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location) ____________________________________________________________________ ERROR collecting src/greenlet/tests/test_tracing.py ____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_tracing.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_tracing.py:5: in from . import TestCase E ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location) ____________________________________________________________________ ERROR collecting src/greenlet/tests/test_weakref.py ____________________________________________________________________ ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_weakref.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: src/greenlet/tests/test_weakref.py:6: in from . import TestCase E ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location) ================================================================================== short test summary info ================================================================================== ERROR src/greenlet/tests/test_contextvars.py ERROR src/greenlet/tests/test_cpp.py ERROR src/greenlet/tests/test_extension_interface.py ERROR src/greenlet/tests/test_gc.py ERROR src/greenlet/tests/test_generator.py ERROR src/greenlet/tests/test_generator_nested.py ERROR src/greenlet/tests/test_greenlet.py ERROR src/greenlet/tests/test_leaks.py ERROR src/greenlet/tests/test_stack_saved.py ERROR src/greenlet/tests/test_throw.py ERROR src/greenlet/tests/test_tracing.py ERROR src/greenlet/tests/test_weakref.py !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 12 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ==================================================================================== 12 errors in 0.24s ===================================================================================== ```
kloczek commented 1 year ago

Hmmm looks lik i code are used relaive imports which forces exact location of the modiles.

[tkloczko@pers-jacek greenlet-2.0.2]$ grep -rE "from \.|import \."
src/greenlet/__init__.py:from ._greenlet import _C_API # pylint:disable=no-name-in-module
src/greenlet/__init__.py:from ._greenlet import GreenletExit
src/greenlet/__init__.py:from ._greenlet import error
src/greenlet/__init__.py:from ._greenlet import getcurrent
src/greenlet/__init__.py:from ._greenlet import greenlet
src/greenlet/__init__.py:    from ._greenlet import gettrace
src/greenlet/__init__.py:    from ._greenlet import settrace
src/greenlet/__init__.py:from ._greenlet import GREENLET_USE_CONTEXT_VARS # pylint:disable=unused-import
src/greenlet/__init__.py:from ._greenlet import GREENLET_USE_GC # pylint:disable=unused-import
src/greenlet/__init__.py:from ._greenlet import GREENLET_USE_TRACING # pylint:disable=unused-import
src/greenlet/__init__.py:from ._greenlet import CLOCKS_PER_SEC # pylint:disable=unused-import
src/greenlet/__init__.py:from ._greenlet import enable_optional_cleanup # pylint:disable=unused-import
src/greenlet/__init__.py:from ._greenlet import get_clocks_used_doing_optional_cleanup # pylint:disable=unused-import
src/greenlet/tests/__init__.py:from . import leakcheck
src/greenlet/tests/test_contextvars.py:from . import TestCase
src/greenlet/tests/test_cpp.py:from . import _test_extension_cpp
src/greenlet/tests/test_cpp.py:from . import TestCase
src/greenlet/tests/test_extension_interface.py:from . import _test_extension
src/greenlet/tests/test_extension_interface.py:from . import TestCase
src/greenlet/tests/test_gc.py:from . import TestCase
src/greenlet/tests/test_gc.py:from .leakcheck import fails_leakcheck
src/greenlet/tests/test_generator.py:from . import TestCase
src/greenlet/tests/test_generator_nested.py:from . import TestCase
src/greenlet/tests/test_generator_nested.py:from .leakcheck import fails_leakcheck
src/greenlet/tests/test_greenlet.py:from . import TestCase
src/greenlet/tests/test_greenlet.py:from .leakcheck import fails_leakcheck
src/greenlet/tests/test_leaks.py:from . import TestCase
src/greenlet/tests/test_leaks.py:from .leakcheck import fails_leakcheck
src/greenlet/tests/test_leaks.py:from .leakcheck import ignores_leakcheck
src/greenlet/tests/test_leaks.py:from .leakcheck import RUNNING_ON_GITHUB_ACTIONS
src/greenlet/tests/test_leaks.py:from .leakcheck import RUNNING_ON_MANYLINUX
src/greenlet/tests/test_stack_saved.py:from . import TestCase
src/greenlet/tests/test_throw.py:from . import TestCase
src/greenlet/tests/test_tracing.py:from . import TestCase
src/greenlet/tests/test_weakref.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import _C_API # pylint:disable=no-name-in-module
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import GreenletExit
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import error
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import getcurrent
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import greenlet
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:    from ._greenlet import gettrace
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:    from ._greenlet import settrace
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import GREENLET_USE_CONTEXT_VARS # pylint:disable=unused-import
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import GREENLET_USE_GC # pylint:disable=unused-import
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import GREENLET_USE_TRACING # pylint:disable=unused-import
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import CLOCKS_PER_SEC # pylint:disable=unused-import
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import enable_optional_cleanup # pylint:disable=unused-import
build/lib.linux-x86_64-cpython-38/greenlet/__init__.py:from ._greenlet import get_clocks_used_doing_optional_cleanup # pylint:disable=unused-import
build/lib.linux-x86_64-cpython-38/greenlet/tests/__init__.py:from . import leakcheck
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_contextvars.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_cpp.py:from . import _test_extension_cpp
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_cpp.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_extension_interface.py:from . import _test_extension
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_extension_interface.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_gc.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_gc.py:from .leakcheck import fails_leakcheck
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_generator.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_generator_nested.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_generator_nested.py:from .leakcheck import fails_leakcheck
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_greenlet.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_greenlet.py:from .leakcheck import fails_leakcheck
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_leaks.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_leaks.py:from .leakcheck import fails_leakcheck
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_leaks.py:from .leakcheck import ignores_leakcheck
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_leaks.py:from .leakcheck import RUNNING_ON_GITHUB_ACTIONS
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_leaks.py:from .leakcheck import RUNNING_ON_MANYLINUX
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_stack_saved.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_throw.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_tracing.py:from . import TestCase
build/lib.linux-x86_64-cpython-38/greenlet/tests/test_weakref.py:from . import TestCase

Unisg relative imports is always askig for troubles.

kloczek commented 1 year ago

BTW looks like test suite s ot excluded from .whl archive

```console + /usr/bin/python3 -sBm build -w --no-isolation * Getting build dependencies for wheel... running egg_info creating src/greenlet.egg-info writing src/greenlet.egg-info/PKG-INFO writing dependency_links to src/greenlet.egg-info/dependency_links.txt writing requirements to src/greenlet.egg-info/requires.txt writing top-level names to src/greenlet.egg-info/top_level.txt writing manifest file 'src/greenlet.egg-info/SOURCES.txt' reading manifest file 'src/greenlet.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files found matching 'benchmarks/*.json' no previously-included directories found matching 'docs/_build' warning: no files found matching '*.py' under directory 'appveyor' warning: no previously-included files matching '*.pyc' found anywhere in distribution warning: no previously-included files matching '*.pyd' found anywhere in distribution warning: no previously-included files matching '*.so' found anywhere in distribution warning: no previously-included files matching '.coverage' found anywhere in distribution adding license file 'LICENSE' adding license file 'LICENSE.PSF' adding license file 'AUTHORS' writing manifest file 'src/greenlet.egg-info/SOURCES.txt' * Building wheel... running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-cpython-38 creating build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/__init__.py -> build/lib.linux-x86_64-cpython-38/greenlet creating build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/__init__.py -> build/lib.linux-x86_64-cpython-38/greenlet/platform creating build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/__init__.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/leakcheck.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_contextvars.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_cpp.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_extension_interface.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_gc.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_generator.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_generator_nested.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_greenlet.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_greenlet_trash.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_leaks.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_stack_saved.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_throw.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_tracing.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_version.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/test_weakref.py -> build/lib.linux-x86_64-cpython-38/greenlet/tests running egg_info writing src/greenlet.egg-info/PKG-INFO writing dependency_links to src/greenlet.egg-info/dependency_links.txt writing requirements to src/greenlet.egg-info/requires.txt writing top-level names to src/greenlet.egg-info/top_level.txt reading manifest file 'src/greenlet.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files found matching 'benchmarks/*.json' no previously-included directories found matching 'docs/_build' warning: no files found matching '*.py' under directory 'appveyor' warning: no previously-included files matching '*.pyc' found anywhere in distribution warning: no previously-included files matching '*.pyd' found anywhere in distribution warning: no previously-included files matching '*.so' found anywhere in distribution warning: no previously-included files matching '.coverage' found anywhere in distribution adding license file 'LICENSE' adding license file 'LICENSE.PSF' adding license file 'AUTHORS' writing manifest file 'src/greenlet.egg-info/SOURCES.txt' copying src/greenlet/greenlet.cpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet.h -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_allocator.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_compiler_compat.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_cpython_compat.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_exceptions.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_greenlet.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_internal.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_refs.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_slp_switch.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_thread_state.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_thread_state_dict_cleanup.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/greenlet_thread_support.hpp -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/slp_platformselect.h -> build/lib.linux-x86_64-cpython-38/greenlet copying src/greenlet/platform/setup_switch_x64_masm.cmd -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_aarch64_gcc.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_alpha_unix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_amd64_unix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_arm32_gcc.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_arm32_ios.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_arm64_masm.asm -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_arm64_masm.obj -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_arm64_msvc.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_csky_gcc.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_m68k_gcc.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_mips_unix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_ppc64_aix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_ppc64_linux.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_ppc_aix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_ppc_linux.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_ppc_macosx.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_ppc_unix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_riscv_unix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_s390_unix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_sparc_sun_gcc.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_x32_unix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_x64_masm.asm -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_x64_masm.obj -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_x64_msvc.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_x86_msvc.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/platform/switch_x86_unix.h -> build/lib.linux-x86_64-cpython-38/greenlet/platform copying src/greenlet/tests/_test_extension.c -> build/lib.linux-x86_64-cpython-38/greenlet/tests copying src/greenlet/tests/_test_extension_cpp.cpp -> build/lib.linux-x86_64-cpython-38/greenlet/tests running build_ext building 'greenlet._greenlet' extension creating build/temp.linux-x86_64-cpython-38 creating build/temp.linux-x86_64-cpython-38/src creating build/temp.linux-x86_64-cpython-38/src/greenlet /usr/bin/gcc -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -fPIC -I/usr/include/python3.8 -c src/greenlet/greenlet.cpp -o build/temp.linux-x86_64-cpython-38/src/greenlet/greenlet.o /usr/bin/g++ -shared -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--build-id=sha1 -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--build-id=sha1 -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--build-id=sha1 -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none build/temp.linux-x86_64-cpython-38/src/greenlet/greenlet.o -L/usr/lib64 -o build/lib.linux-x86_64-cpython-38/greenlet/_greenlet.cpython-38-x86_64-linux-gnu.so building 'greenlet.tests._test_extension' extension creating build/temp.linux-x86_64-cpython-38/src/greenlet/tests /usr/bin/gcc -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -fPIC -Isrc/greenlet/ -I/usr/include/python3.8 -c src/greenlet/tests/_test_extension.c -o build/temp.linux-x86_64-cpython-38/src/greenlet/tests/_test_extension.o /usr/bin/gcc -shared -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--build-id=sha1 -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--build-id=sha1 -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--build-id=sha1 -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none build/temp.linux-x86_64-cpython-38/src/greenlet/tests/_test_extension.o -L/usr/lib64 -o build/lib.linux-x86_64-cpython-38/greenlet/tests/_test_extension.cpython-38-x86_64-linux-gnu.so building 'greenlet.tests._test_extension_cpp' extension /usr/bin/gcc -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -D_GNU_SOURCE -fPIC -fwrapv -ffat-lto-objects -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none -fPIC -Isrc/greenlet/ -I/usr/include/python3.8 -c src/greenlet/tests/_test_extension_cpp.cpp -o build/temp.linux-x86_64-cpython-38/src/greenlet/tests/_test_extension_cpp.o /usr/bin/g++ -shared -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--build-id=sha1 -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--build-id=sha1 -Wl,--as-needed -Wl,--gc-sections -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -flto=auto -flto-partition=none -fuse-linker-plugin -Wl,--build-id=sha1 -O2 -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fdata-sections -ffunction-sections -flto=auto -flto-partition=none build/temp.linux-x86_64-cpython-38/src/greenlet/tests/_test_extension_cpp.o -L/usr/lib64 -o build/lib.linux-x86_64-cpython-38/greenlet/tests/_test_extension_cpp.cpython-38-x86_64-linux-gnu.so installing to build/bdist.linux-x86_64/wheel running install running install_lib creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/wheel creating build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/__init__.py -> build/bdist.linux-x86_64/wheel/greenlet creating build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/__init__.py -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/setup_switch_x64_masm.cmd -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_aarch64_gcc.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_alpha_unix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_amd64_unix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_arm32_gcc.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_arm32_ios.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_arm64_masm.asm -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_arm64_masm.obj -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_arm64_msvc.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_csky_gcc.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_m68k_gcc.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_mips_unix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_ppc64_aix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_ppc64_linux.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_ppc_aix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_ppc_linux.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_ppc_macosx.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_ppc_unix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_riscv_unix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_s390_unix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_sparc_sun_gcc.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_x32_unix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_x64_masm.asm -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_x64_masm.obj -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_x64_msvc.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_x86_msvc.h -> build/bdist.linux-x86_64/wheel/greenlet/platform copying build/lib.linux-x86_64-cpython-38/greenlet/platform/switch_x86_unix.h -> build/bdist.linux-x86_64/wheel/greenlet/platform creating build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/__init__.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/leakcheck.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_contextvars.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_cpp.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_extension_interface.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_gc.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_generator.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_generator_nested.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_greenlet.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_greenlet_trash.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_leaks.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_stack_saved.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_throw.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_tracing.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_version.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/test_weakref.py -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/_test_extension.c -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/_test_extension_cpp.cpp -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/_test_extension.cpython-38-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/tests/_test_extension_cpp.cpython-38-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/wheel/greenlet/tests copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet.cpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet.h -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_allocator.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_compiler_compat.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_cpython_compat.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_exceptions.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_greenlet.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_internal.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_refs.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_slp_switch.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_thread_state.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_thread_state_dict_cleanup.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/greenlet_thread_support.hpp -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/slp_platformselect.h -> build/bdist.linux-x86_64/wheel/greenlet copying build/lib.linux-x86_64-cpython-38/greenlet/_greenlet.cpython-38-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/wheel/greenlet running install_headers creating build/bdist.linux-x86_64/wheel/greenlet-2.0.2.data creating build/bdist.linux-x86_64/wheel/greenlet-2.0.2.data/headers copying src/greenlet/greenlet.h -> build/bdist.linux-x86_64/wheel/greenlet-2.0.2.data/headers running install_egg_info Copying src/greenlet.egg-info to build/bdist.linux-x86_64/wheel/greenlet-2.0.2-py3.8.egg-info running install_scripts creating build/bdist.linux-x86_64/wheel/greenlet-2.0.2.dist-info/WHEEL creating '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/dist/.tmp-suzis856/greenlet-2.0.2-cp38-cp38-linux_x86_64.whl' and adding 'build/bdist.linux-x86_64/wheel' to it adding 'greenlet/__init__.py' adding 'greenlet/_greenlet.cpython-38-x86_64-linux-gnu.so' adding 'greenlet/greenlet.cpp' adding 'greenlet/greenlet.h' adding 'greenlet/greenlet_allocator.hpp' adding 'greenlet/greenlet_compiler_compat.hpp' adding 'greenlet/greenlet_cpython_compat.hpp' adding 'greenlet/greenlet_exceptions.hpp' adding 'greenlet/greenlet_greenlet.hpp' adding 'greenlet/greenlet_internal.hpp' adding 'greenlet/greenlet_refs.hpp' adding 'greenlet/greenlet_slp_switch.hpp' adding 'greenlet/greenlet_thread_state.hpp' adding 'greenlet/greenlet_thread_state_dict_cleanup.hpp' adding 'greenlet/greenlet_thread_support.hpp' adding 'greenlet/slp_platformselect.h' adding 'greenlet/platform/__init__.py' adding 'greenlet/platform/setup_switch_x64_masm.cmd' adding 'greenlet/platform/switch_aarch64_gcc.h' adding 'greenlet/platform/switch_alpha_unix.h' adding 'greenlet/platform/switch_amd64_unix.h' adding 'greenlet/platform/switch_arm32_gcc.h' adding 'greenlet/platform/switch_arm32_ios.h' adding 'greenlet/platform/switch_arm64_masm.asm' adding 'greenlet/platform/switch_arm64_masm.obj' adding 'greenlet/platform/switch_arm64_msvc.h' adding 'greenlet/platform/switch_csky_gcc.h' adding 'greenlet/platform/switch_m68k_gcc.h' adding 'greenlet/platform/switch_mips_unix.h' adding 'greenlet/platform/switch_ppc64_aix.h' adding 'greenlet/platform/switch_ppc64_linux.h' adding 'greenlet/platform/switch_ppc_aix.h' adding 'greenlet/platform/switch_ppc_linux.h' adding 'greenlet/platform/switch_ppc_macosx.h' adding 'greenlet/platform/switch_ppc_unix.h' adding 'greenlet/platform/switch_riscv_unix.h' adding 'greenlet/platform/switch_s390_unix.h' adding 'greenlet/platform/switch_sparc_sun_gcc.h' adding 'greenlet/platform/switch_x32_unix.h' adding 'greenlet/platform/switch_x64_masm.asm' adding 'greenlet/platform/switch_x64_masm.obj' adding 'greenlet/platform/switch_x64_msvc.h' adding 'greenlet/platform/switch_x86_msvc.h' adding 'greenlet/platform/switch_x86_unix.h' adding 'greenlet/tests/__init__.py' adding 'greenlet/tests/_test_extension.c' adding 'greenlet/tests/_test_extension.cpython-38-x86_64-linux-gnu.so' adding 'greenlet/tests/_test_extension_cpp.cpp' adding 'greenlet/tests/_test_extension_cpp.cpython-38-x86_64-linux-gnu.so' adding 'greenlet/tests/leakcheck.py' adding 'greenlet/tests/test_contextvars.py' adding 'greenlet/tests/test_cpp.py' adding 'greenlet/tests/test_extension_interface.py' adding 'greenlet/tests/test_gc.py' adding 'greenlet/tests/test_generator.py' adding 'greenlet/tests/test_generator_nested.py' adding 'greenlet/tests/test_greenlet.py' adding 'greenlet/tests/test_greenlet_trash.py' adding 'greenlet/tests/test_leaks.py' adding 'greenlet/tests/test_stack_saved.py' adding 'greenlet/tests/test_throw.py' adding 'greenlet/tests/test_tracing.py' adding 'greenlet/tests/test_version.py' adding 'greenlet/tests/test_weakref.py' adding 'greenlet-2.0.2.data/headers/greenlet.h' adding 'greenlet-2.0.2.dist-info/AUTHORS' adding 'greenlet-2.0.2.dist-info/LICENSE' adding 'greenlet-2.0.2.dist-info/LICENSE.PSF' adding 'greenlet-2.0.2.dist-info/METADATA' adding 'greenlet-2.0.2.dist-info/WHEEL' adding 'greenlet-2.0.2.dist-info/top_level.txt' adding 'greenlet-2.0.2.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Successfully built greenlet-2.0.2-cp38-cp38-linux_x86_64.whl ```

IMO better would be move greenlet/tests/ to tests/ bacuse that location by defaiult is excluded from to be used to form whl archove content. That needs to be done with remove relative imports. With those two changes compbined it should work as expected.

jamadden commented 1 year ago

This project does not use pytest.

kloczek commented 1 year ago

This project does not use pytest.

Because now is not possible to use pytest using "test as installed" procedure because those relative imports. Even unittest is not working

+ cd greenlet-2.0.2
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-greenlet-2.0.2-2.fc35.x86_64/usr/lib64/python3.8/site-packages
+ /usr/bin/python3 -m unittest discover -v greenlet.tests
Traceback (most recent call last):
  File "/usr/lib64/python3.8/runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/usr/lib64/python3.8/runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "/usr/lib64/python3.8/unittest/__main__.py", line 18, in <module>
    main(module=None)
  File "/usr/lib64/python3.8/unittest/main.py", line 100, in __init__
    self.parseArgs(argv)
  File "/usr/lib64/python3.8/unittest/main.py", line 124, in parseArgs
    self._do_discovery(argv[2:])
  File "/usr/lib64/python3.8/unittest/main.py", line 244, in _do_discovery
    self.createTests(from_discovery=True, Loader=Loader)
  File "/usr/lib64/python3.8/unittest/main.py", line 154, in createTests
    self.test = loader.discover(self.start, self.pattern, self.top)
  File "/usr/lib64/python3.8/unittest/loader.py", line 346, in discover
    raise ImportError('Start directory is not importable: %r' % start_dir)
ImportError: Start directory is not importable: 'greenlet.tests'

Crrecrly implemented unittest test suite works OOTB with pytest.

kloczek commented 1 year ago

Here is exctly the same error messages with unittest

+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-greenlet-2.0.2-2.fc35.x86_64/usr/lib64/python3.8/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-greenlet-2.0.2-2.fc35.x86_64/usr/lib/python3.8/site-packages
+ /usr/bin/pytest -ra -m 'not network' --import-mode=importlib
==================================================================================== test session starts ====================================================================================
platform linux -- Python 3.8.16, pytest-7.2.1, pluggy-1.0.0
rootdir: /home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2
collected 2 items / 12 errors

========================================================================================== ERRORS ===========================================================================================
__________________________________________________________________ ERROR collecting src/greenlet/tests/test_contextvars.py __________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_contextvars.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_contextvars.py:12: in <module>
    from . import TestCase
E   ModuleNotFoundError: No module named 'src'
______________________________________________________________________ ERROR collecting src/greenlet/tests/test_cpp.py ______________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_cpp.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_cpp.py:8: in <module>
    from . import _test_extension_cpp
E   ModuleNotFoundError: No module named 'src'
______________________________________________________________ ERROR collecting src/greenlet/tests/test_extension_interface.py ______________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_extension_interface.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_extension_interface.py:7: in <module>
    from . import _test_extension
E   ModuleNotFoundError: No module named 'src'
______________________________________________________________________ ERROR collecting src/greenlet/tests/test_gc.py _______________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_gc.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_gc.py:8: in <module>
    from . import TestCase
E   ModuleNotFoundError: No module named 'src'
___________________________________________________________________ ERROR collecting src/greenlet/tests/test_generator.py ___________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_generator.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_generator.py:4: in <module>
    from . import TestCase
E   ModuleNotFoundError: No module named 'src'
_______________________________________________________________ ERROR collecting src/greenlet/tests/test_generator_nested.py ________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_generator_nested.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_generator_nested.py:3: in <module>
    from . import TestCase
E   ModuleNotFoundError: No module named 'src'
___________________________________________________________________ ERROR collecting src/greenlet/tests/test_greenlet.py ____________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_greenlet.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_greenlet.py:13: in <module>
    from . import TestCase
E   ModuleNotFoundError: No module named 'src'
_____________________________________________________________________ ERROR collecting src/greenlet/tests/test_leaks.py _____________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_leaks.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_leaks.py:17: in <module>
    from . import TestCase
E   ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location)
__________________________________________________________________ ERROR collecting src/greenlet/tests/test_stack_saved.py __________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_stack_saved.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_stack_saved.py:2: in <module>
    from . import TestCase
E   ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location)
_____________________________________________________________________ ERROR collecting src/greenlet/tests/test_throw.py _____________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_throw.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_throw.py:5: in <module>
    from . import TestCase
E   ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location)
____________________________________________________________________ ERROR collecting src/greenlet/tests/test_tracing.py ____________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_tracing.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_tracing.py:5: in <module>
    from . import TestCase
E   ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location)
____________________________________________________________________ ERROR collecting src/greenlet/tests/test_weakref.py ____________________________________________________________________
ImportError while importing test module '/home/tkloczko/rpmbuild/BUILD/greenlet-2.0.2/src/greenlet/tests/test_weakref.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
src/greenlet/tests/test_weakref.py:6: in <module>
    from . import TestCase
E   ImportError: cannot import name 'TestCase' from 'src.greenlet.tests' (unknown location)
================================================================================== short test summary info ==================================================================================
ERROR src/greenlet/tests/test_contextvars.py
ERROR src/greenlet/tests/test_cpp.py
ERROR src/greenlet/tests/test_extension_interface.py
ERROR src/greenlet/tests/test_gc.py
ERROR src/greenlet/tests/test_generator.py
ERROR src/greenlet/tests/test_generator_nested.py
ERROR src/greenlet/tests/test_greenlet.py
ERROR src/greenlet/tests/test_leaks.py
ERROR src/greenlet/tests/test_stack_saved.py
ERROR src/greenlet/tests/test_throw.py
ERROR src/greenlet/tests/test_tracing.py
ERROR src/greenlet/tests/test_weakref.py
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 12 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==================================================================================== 12 errors in 0.22s =====================================================================================