Skip to content
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

namespace_packages make tests fail #27

Closed
mcepl opened this issue Jun 23, 2020 · 22 comments
Closed

namespace_packages make tests fail #27

mcepl opened this issue Jun 23, 2020 · 22 comments

Comments

@mcepl
Copy link

mcepl commented Jun 23, 2020

Bug Report

Describe the bug
With

namespace_packages=[‘paste’]

in setup() command in setup.py, tests fail, because the installation is done incorrectly. When this line is removed all tests pass.

To Reproduce
Steps to reproduce the behavior:

  1. build package, install it, run tests with pytest -v command.

Actual behavior
All tests error with traceback like:

[   35s] ___________________ ERROR collecting tests/test_basic_app.py ___________________
[   35s] ImportError while importing test module '/home/abuild/rpmbuild/BUILD/pastedeploy-2.1.0/tests/test_basic_app.py'.
[   35s] Hint: make sure your test modules/packages have valid Python names.
[   35s] Traceback:
[   35s] tests/test_basic_app.py:1: in <module>
[   35s]     from paste.deploy import loadapp
[   35s] E   ModuleNotFoundError: No module named 'paste.deploy'

Expected behavior
Tests pass

Additional context
complete build log

@cdent
Copy link
Contributor

cdent commented Jun 23, 2020

Just to be sure I'm understanding what you're after here:

  • you want to be able to install the built package
  • and then force the tests to run against that installed code, not the source

Is that right? Presumably because of the way the packaging system is orchestrating things.

Do you have an example of another python package that does use namespaces_packages that installs correctly and has passing tests in this package build scenario?

@mcepl
Copy link
Author

mcepl commented Jun 23, 2020

Is that right? Presumably because of the way the packaging system is orchestrating things.

Yes, and also it seems more correct to test against what’s actually installed, not against something in the build directory (just to the build log: those environmental variables PYTHONPATH and PYTHONDONTWRITEBYTECODE are set on the same line as pytest-3.8 is run, so there are no problems with missing export statements or such; the log is not very clear on it).

Do you have an example of another python package that does use namespaces_packages that installs correctly and has passing tests in this package build scenario?

Unfortunately not. Just to say, that namespace packages seem to be wee complicated and there are many caveats in https://packaging.python.org/guides/packaging-namespace-packages/ .

@cdent
Copy link
Contributor

cdent commented Jun 23, 2020

Yeah, totally understand that namespace packages are complicated and messy. But paste.deploy by virtue of its name and history (long before I came along) simply is one, not much we can do about it.

Unless you're able to come up with an example that we can crib from, then I'm not sure what to do. Is it possible to move the testing to test the source? That's how the testing is done for the python side of the packaging.

Other members of the team may have additional comments or ideas.

@mmerickel
Copy link
Member

mmerickel commented Jun 23, 2020

build package, install it, run tests with pytest -v command.

In your steps there, is the source folder still on the sys.path (python path)? If so then the issue is that the source version of the package being on the path can confuse import mechanisms quite a bit. You'll probably need to remove that folder from your the path which can be easier said than done sometimes (patch sys.path inside your conftest.py, for example with py.test).

This is a big reason why the recommended source layout is to put the code into a src folder so that it isn't on the path by default, and someone is free to re-layout pastedeploy in a PR, but probably something we won't get to ourselves for a while.

@mcepl
Copy link
Author

mcepl commented Jun 23, 2020

In your steps there, is the source folder still on the sys.path (python path)? If so then the issue is that the source version of the package being on the path can confuse import mechanisms quite a bit. You'll probably need to remove that folder from your the path which can be easier said than done sometimes (patch sys.path inside your conftest.py, for example with py.test).

Add cd as a step before running the pytest doesn’t change anything. pytest actually finds the tests, but still fails, because /usr/lib/python3.8/site-packages/paste is just not a Python module. touch %{buildroot}/usr/lib/python3.8/site-packges/paste/__init__.py fixes the situation. Your setup.py just doesn’t setup those namespace modules properly.

@mmerickel
Copy link
Member

In Python 3 a namespace package does not need an __init__.py to be installed so while I understand that adding one is fixing things for you, I'm not clear why it's important. It's definitely important if the local package has one and the installed one doesn't, for example. I'm not sure what's going on here but it's something in your env. Double check also that the egg-info isn't on your path. I was able to run the tests using the following steps:

$ python3 -m venv env
$ env/bin/pip install -e .
$ env/bin/python setup.py sdist
$ rm -rf env *.egg-info
$ python3 -m venv env
$ env/bin/pip install dist/PasteDeploy-2.1.0.tar.gz
$ env/bin/pip install pytest
$ env/bin/pytest
<snip>
26 passed, 1 skipped in 0.23s

@mcepl
Copy link
Author

mcepl commented Jun 24, 2020

In Python 3 a namespace package does not need an __init__.py to be installed so while I understand that adding one is fixing things for you, I'm not clear why it's important. It's definitely important if the local package has one and the installed one doesn't, for example. I'm not sure what's going on here but it's something in your env. Double check also that the egg-info isn't on your path. I was able to run the tests using the following steps:

I am perfectly aware of namespace packages, and I haven’t said that touching __init__.py is the right thing to do, just that you have apparently used namespace packages incorrectly because the result doesn’t work properly. touching __init__.py is a temporary workaround before the handling of namespace packages is done correctly.

@mmerickel
Copy link
Member

How have we used namespace packages incorrectly? Please do not use language that turns things into personal attacks or I will close and lock the issue.

I provided steps showing that things work fine and have been unable to reproduce your errors. If you can provide more exact steps then maybe I can help but otherwise nothing has been demonstrated to be broken in pastedeploy.

@mcepl
Copy link
Author

mcepl commented Jun 24, 2020

Please do not use language that turns things into personal attacks or I will close and lock the issue.

??? I have no idea how you could see a personal attack in what I so far hoped be completely technical discussion.

And to your question: I have no idea, I haven’t claimed I have ever created Python package with namespaces.

Do we agree that you are installing in the manner which cannot be tested, because simple import from your package fails? Perhaps, you don't care, and it is somehow all right (I don't see it, but as I said I am not the biggest master of namespaces).

@mmerickel
Copy link
Member

??? I have no idea how you could see a personal attack in what I so far hoped be completely technical discussion.

I'm simply a maintainer of PasteDeploy (a decade old library that I'm helping use for the last year or so), it is not mine, and accusing me of using namespaces incorrectly is not constructive, nor is it correct as I keep asking for help reproducing the issue to show it's actually broken. We aren't using it incorrectly until we can actually reproduce a bug. I felt the language was unnecessarily aggressive / accusatory.

Perhaps, you don't care, and it is somehow all right (I don't see it, but as I said I am not the biggest master of namespaces).

Well I do care about the issue, it's why I'm here trying to help. So far I'm unable to find a scenario in which things aren't working!

Do we agree that you are installing in the manner which cannot be tested, because simple import from your package fails?

What does this mean? At the end of my example commands above that successfully ran the tests on the installed version of the package, I am able to run something like env/bin/python -c 'import paste.deploy' successfully so I believe that a "simple import" does not fail. I need help reproducing your issue so if you could tweak those commands so that they fail, or tell me more about your scenario then it would be helpful.

bmwiedemann added a commit to bmwiedemann/openSUSE that referenced this issue Jun 26, 2020
https://build.opensuse.org/request/show/816627
by user mcepl + dimstar_suse
- Add rm_nspace_pkgs.patch to poorly used namespace_packages
  (gh#Pylons/pastedeploy#27)
@mcepl
Copy link
Author

mcepl commented Jun 26, 2020

Are you able to run python3 -c 'from paste import deploy' (outside of the build directory)? If not, you shouldn’t use the line in your tests.

@cdent
Copy link
Contributor

cdent commented Jun 26, 2020

cdent-a02:~/src/pastedeploy(master) $ python3 -m venv /tmp/cow
cdent-a02:~/src/pastedeploy(master) $ . /tmp/cow/bin/activate
(cow) cdent-a02:~/src/pastedeploy(master) $ pip3 install .
Processing /Users/cdent/src/pastedeploy
Installing collected packages: PasteDeploy
  Running setup.py install for PasteDeploy ... done
Successfully installed PasteDeploy-2.1.0
WARNING: You are using pip version 19.2.3, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(cow) cdent-a02:~/src/pastedeploy(master) $ cd /tmp/cow/
(cow) cdent-a02:/tmp/cow $ python3 -c 'from paste import deploy'
(cow) cdent-a02:/tmp/cow $ 

That seems to work. Let's try another way:

cdent-a02:~ $ cd src/pastedeploy/
cdent-a02:~/src/pastedeploy(master) $ python3 setup.py sdist
running sdist
running egg_info
writing PasteDeploy.egg-info/PKG-INFO
writing dependency_links to PasteDeploy.egg-info/dependency_links.txt
writing entry points to PasteDeploy.egg-info/entry_points.txt
writing namespace_packages to PasteDeploy.egg-info/namespace_packages.txt
writing requirements to PasteDeploy.egg-info/requires.txt
writing top-level names to PasteDeploy.egg-info/top_level.txt
reading manifest file 'PasteDeploy.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'docs/*.txt'
warning: no previously-included files matching '__pycache__' found anywhere in distribution
warning: no previously-included files matching '.DS_Store' found anywhere in distribution
writing manifest file 'PasteDeploy.egg-info/SOURCES.txt'
running check
creating PasteDeploy-2.1.0
creating PasteDeploy-2.1.0/PasteDeploy.egg-info
creating PasteDeploy-2.1.0/paste
creating PasteDeploy-2.1.0/paste/deploy
creating PasteDeploy-2.1.0/paste/deploy/paster_templates
creating PasteDeploy-2.1.0/paste/deploy/paster_templates/paste_deploy
creating PasteDeploy-2.1.0/paste/deploy/paster_templates/paste_deploy/+package+
creating PasteDeploy-2.1.0/paste/deploy/paster_templates/paste_deploy/docs
creating PasteDeploy-2.1.0/tests
creating PasteDeploy-2.1.0/tests/fake_packages
creating PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg
creating PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/EGG-INFO
creating PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/FakeApp.egg-info
creating PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/fakeapp
creating PasteDeploy-2.1.0/tests/sample_configs
copying files to PasteDeploy-2.1.0...
copying MANIFEST.in -> PasteDeploy-2.1.0
copying README.rst -> PasteDeploy-2.1.0
copying license.txt -> PasteDeploy-2.1.0
copying setup.cfg -> PasteDeploy-2.1.0
copying setup.py -> PasteDeploy-2.1.0
copying PasteDeploy.egg-info/PKG-INFO -> PasteDeploy-2.1.0/PasteDeploy.egg-info
copying PasteDeploy.egg-info/SOURCES.txt -> PasteDeploy-2.1.0/PasteDeploy.egg-info
copying PasteDeploy.egg-info/dependency_links.txt -> PasteDeploy-2.1.0/PasteDeploy.egg-info
copying PasteDeploy.egg-info/entry_points.txt -> PasteDeploy-2.1.0/PasteDeploy.egg-info
copying PasteDeploy.egg-info/namespace_packages.txt -> PasteDeploy-2.1.0/PasteDeploy.egg-info
copying PasteDeploy.egg-info/not-zip-safe -> PasteDeploy-2.1.0/PasteDeploy.egg-info
copying PasteDeploy.egg-info/requires.txt -> PasteDeploy-2.1.0/PasteDeploy.egg-info
copying PasteDeploy.egg-info/top_level.txt -> PasteDeploy-2.1.0/PasteDeploy.egg-info
copying paste/__init__.py -> PasteDeploy-2.1.0/paste
copying paste/deploy/__init__.py -> PasteDeploy-2.1.0/paste/deploy
copying paste/deploy/compat.py -> PasteDeploy-2.1.0/paste/deploy
copying paste/deploy/config.py -> PasteDeploy-2.1.0/paste/deploy
copying paste/deploy/converters.py -> PasteDeploy-2.1.0/paste/deploy
copying paste/deploy/loadwsgi.py -> PasteDeploy-2.1.0/paste/deploy
copying paste/deploy/paster_templates.py -> PasteDeploy-2.1.0/paste/deploy
copying paste/deploy/util.py -> PasteDeploy-2.1.0/paste/deploy
copying paste/deploy/paster_templates/paste_deploy/+package+/sampleapp.py_tmpl -> PasteDeploy-2.1.0/paste/deploy/paster_templates/paste_deploy/+package+
copying paste/deploy/paster_templates/paste_deploy/+package+/wsgiapp.py_tmpl -> PasteDeploy-2.1.0/paste/deploy/paster_templates/paste_deploy/+package+
copying paste/deploy/paster_templates/paste_deploy/docs/devel_config.ini_tmpl -> PasteDeploy-2.1.0/paste/deploy/paster_templates/paste_deploy/docs
copying tests/__init__.py -> PasteDeploy-2.1.0/tests
copying tests/fixture.py -> PasteDeploy-2.1.0/tests
copying tests/test_basic_app.py -> PasteDeploy-2.1.0/tests
copying tests/test_config.py -> PasteDeploy-2.1.0/tests
copying tests/test_config_middleware.py -> PasteDeploy-2.1.0/tests
copying tests/test_converters.py -> PasteDeploy-2.1.0/tests
copying tests/test_filter.py -> PasteDeploy-2.1.0/tests
copying tests/test_load_package.py -> PasteDeploy-2.1.0/tests
copying tests/fake_packages/FakeApp.egg/setup.py -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg
copying tests/fake_packages/FakeApp.egg/EGG-INFO/PKG-INFO -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/EGG-INFO
copying tests/fake_packages/FakeApp.egg/EGG-INFO/entry_points.txt -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/EGG-INFO
copying tests/fake_packages/FakeApp.egg/EGG-INFO/top_level.txt -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/EGG-INFO
copying tests/fake_packages/FakeApp.egg/FakeApp.egg-info/PKG-INFO -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/FakeApp.egg-info
copying tests/fake_packages/FakeApp.egg/FakeApp.egg-info/entry_points.txt -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/FakeApp.egg-info
copying tests/fake_packages/FakeApp.egg/FakeApp.egg-info/top_level.txt -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/FakeApp.egg-info
copying tests/fake_packages/FakeApp.egg/fakeapp/__init__.py -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/fakeapp
copying tests/fake_packages/FakeApp.egg/fakeapp/apps.py -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/fakeapp
copying tests/fake_packages/FakeApp.egg/fakeapp/configapps.py -> PasteDeploy-2.1.0/tests/fake_packages/FakeApp.egg/fakeapp
copying tests/sample_configs/basic_app.ini -> PasteDeploy-2.1.0/tests/sample_configs
copying tests/sample_configs/executable.ini -> PasteDeploy-2.1.0/tests/sample_configs
copying tests/sample_configs/test_config.ini -> PasteDeploy-2.1.0/tests/sample_configs
copying tests/sample_configs/test_config_included.ini -> PasteDeploy-2.1.0/tests/sample_configs
copying tests/sample_configs/test_error.ini -> PasteDeploy-2.1.0/tests/sample_configs
copying tests/sample_configs/test_filter.ini -> PasteDeploy-2.1.0/tests/sample_configs
copying tests/sample_configs/test_filter_with.ini -> PasteDeploy-2.1.0/tests/sample_configs
copying tests/sample_configs/test_func.ini -> PasteDeploy-2.1.0/tests/sample_configs
Writing PasteDeploy-2.1.0/setup.cfg
Creating tar archive
removing 'PasteDeploy-2.1.0' (and everything under it)
cdent-a02:~/src/pastedeploy(master) $ mv build/
bdist.macosx-10.14-x86_64/ lib/                       
cdent-a02:~/src/pastedeploy(master) $ cp dist/PasteDeploy-2.1.0.tar.gz /tmp
cdent-a02:~/src/pastedeploy(master) $ cd /tmp
cdent-a02:/tmp $ python3 -m venv horse
cdent-a02:/tmp $ . horse/bin/activate
(horse) cdent-a02:/tmp $ pip3 install /tmp/PasteDeploy-2.1.0.tar.gz 
Processing /tmp/PasteDeploy-2.1.0.tar.gz
Installing collected packages: PasteDeploy
  Running setup.py install for PasteDeploy ... done
Successfully installed PasteDeploy-2.1.0
WARNING: You are using pip version 19.2.3, however version 20.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(horse) cdent-a02:/tmp $ python3 -c 'from paste import deploy'
(horse) cdent-a02:/tmp $ echo $?
0

That seemed to work too.

The reason you're getting the reactions you're getting is because we don't understand the problem you're reporting. It is not that we don't want to help.

@cdent
Copy link
Contributor

cdent commented Jun 26, 2020

Sorry, forgot to try running the tests:

(horse) cdent-a02:/tmp $ pytest ~/src/pastedeploy/tests
==================================================================== test session starts =====================================================================
platform darwin -- Python 3.7.7, pytest-5.4.3, py-1.9.0, pluggy-0.13.1
rootdir: /Users/cdent/src/pastedeploy, inifile: pytest.ini
collected 27 items                                                                                                                                           

../../Users/cdent/src/pastedeploy/tests/test_basic_app.py ...                                                                                          [ 11%]
../../Users/cdent/src/pastedeploy/tests/test_config.py .............                                                                                   [ 59%]
../../Users/cdent/src/pastedeploy/tests/test_config_middleware.py s                                                                                    [ 62%]
../../Users/cdent/src/pastedeploy/tests/test_converters.py ..                                                                                          [ 70%]
../../Users/cdent/src/pastedeploy/tests/test_filter.py .......                                                                                         [ 96%]
../../Users/cdent/src/pastedeploy/tests/test_load_package.py .                                                                                         [100%]

=============================================================== 26 passed, 1 skipped in 0.22s ================================================================

@cdent
Copy link
Contributor

cdent commented Jun 26, 2020

Also just to be sure I installed python 3.8 and did the same stuff with it:

==================================================================== test session starts =====================================================================
platform darwin -- Python 3.8.3, pytest-5.4.3, py-1.9.0, pluggy-0.13.1
rootdir: /Users/cdent/src/pastedeploy, inifile: pytest.ini
collected 27 items                                                                                                                                           

../../Users/cdent/src/pastedeploy/tests/test_basic_app.py ...                                                                                          [ 11%]
../../Users/cdent/src/pastedeploy/tests/test_config.py .............                                                                                   [ 59%]
../../Users/cdent/src/pastedeploy/tests/test_config_middleware.py s                                                                                    [ 62%]
../../Users/cdent/src/pastedeploy/tests/test_converters.py ..                                                                                          [ 70%]
../../Users/cdent/src/pastedeploy/tests/test_filter.py .......                                                                                         [ 96%]
../../Users/cdent/src/pastedeploy/tests/test_load_package.py .                                                                                         [100%]

=============================================================== 26 passed, 1 skipped in 0.28s ================================================================

I'm relatively certain we're talking past one another; that there is some critical piece of missing information that once we find it we'll all so "ohhhhh" and everything will be fine. But at this point I don't understand.

@cdent
Copy link
Contributor

cdent commented Jun 26, 2020

I tried to replicate the steps from your build process more directly and I noticed one main difference. You log has:

[   33s] + /usr/bin/python3 setup.py install -O1 --skip-build --force --root /home/abuild/rpmbuild/BUILDROOT/python-PasteDeploy-2.1.0-2.4.x86_64 --prefix /usr
[   34s] running install
[   34s] running install_lib
[   34s] Skipping installation of /home/abuild/rpmbuild/BUILDROOT/python-PasteDeploy-2.1.0-2.4.x86_64/usr/lib/python3.8/site-packages/paste/__init__.py (namespace package)

My equivalent (below) runs bdist_egg before running install_lib and is copying files from the build directory, and doesn't skip the namespace file.

(toad) cdent-a02:~/src/pastedeploy(master) $ python3 setup.py install -O1 --skip-build --force
running install
running bdist_egg
running egg_info
writing PasteDeploy.egg-info/PKG-INFO
writing dependency_links to PasteDeploy.egg-info/dependency_links.txt
writing entry points to PasteDeploy.egg-info/entry_points.txt
writing namespace_packages to PasteDeploy.egg-info/namespace_packages.txt
writing requirements to PasteDeploy.egg-info/requires.txt
writing top-level names to PasteDeploy.egg-info/top_level.txt
reading manifest file 'PasteDeploy.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'docs/*.txt'
warning: no previously-included files matching '__pycache__' found anywhere in distribution
warning: no previously-included files matching '.DS_Store' found anywhere in distribution
writing manifest file 'PasteDeploy.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-10.14-x86_64/egg
running install_lib
running build_py
creating build/bdist.macosx-10.14-x86_64
creating build/bdist.macosx-10.14-x86_64/egg
creating build/bdist.macosx-10.14-x86_64/egg/paste
creating build/bdist.macosx-10.14-x86_64/egg/paste/deploy
copying build/lib/paste/deploy/config.py -> build/bdist.macosx-10.14-x86_64/egg/paste/deploy
copying build/lib/paste/deploy/compat.py -> build/bdist.macosx-10.14-x86_64/egg/paste/deploy
copying build/lib/paste/deploy/util.py -> build/bdist.macosx-10.14-x86_64/egg/paste/deploy
[...]

What version of setuptools is running in your environment?

@cdent
Copy link
Contributor

cdent commented Jun 26, 2020

In some other experimenting I've done it seems like exporting PYTHONPATH sometimes makes a difference. I installed paste.deploy to an arbitrary root and added the path to site-package in that root to PYTHONPATH. python -c 'from paste import deploy failed. When I exported the var it worked.

@cdent
Copy link
Contributor

cdent commented Jun 26, 2020

The reason I'm pressing on this now is because it's been claimed in https://build.opensuse.org/request/show/816627 that we're doing it wrong and "Package uses namespace_packages, when it shouldn't."

That's simply not the case: paste.deploy is suppose to work with paste. It is one of the earlier examples of a namespace package. The change to the RPM may break things when both are present.

Something else is wrong. I'd like for us to be able to figure it out.

@mcepl
Copy link
Author

mcepl commented Jun 27, 2020

What version of setuptools is running in your environment?

Wow! THank you, you are really working on this hard. Thank you!

The first comment has attached truly complete build log … including all packages installed, so it is python3-setuptools-44.0.0-5.29.

In some other experimenting I've done it seems like exporting PYTHONPATH sometimes makes a difference. I installed paste.deploy to an arbitrary root and added the path to site-package in that root to PYTHONPATH. python -c 'from paste import deploy failed. When I exported the var it worked.

OK, this is strange (I am NOT saying it is your problem) … PYTHONPATH on the same line as pytest works for hundreds of other Python packages in openSUSE distro, but I will try on Monday to modify our macros to try with export.

@digitalresistor
Copy link
Member

The reason I'm pressing on this now is because it's been claimed in https://build.opensuse.org/request/show/816627 that we're doing it wrong and "Package uses namespace_packages, when it shouldn't."

That's simply not the case: paste.deploy is suppose to work with paste. It is one of the earlier examples of a namespace package. The change to the RPM may break things when both are present.

Something else is wrong. I'd like for us to be able to figure it out.

The "patch" here would break any other paste packages that expect paste to be a namespace.

@mmerickel
Copy link
Member

I suspect that #35 will help here. The code is no longer importable from the root of the git repo and so the tests can be run on a different target environment without any path munging.

Regardless I'm going to close this until I get some more detail that this is still a problem. As others have noted, removing the namespace_packages metadata would break things and is not going to happen.

@mcepl
Copy link
Author

mcepl commented May 16, 2022

Yeah, #35 seems to help. Thank you.

@mmerickel
Copy link
Member

Awesome! Thanks for following up @mcepl!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants