Skip to content

krpatter-intc/sample-namespace-packages

 
 

Repository files navigation

Kevin Updates:

pkgutil wont work for re-packaging in SVOS since it results in overlapping init.py in the package. This means we hav to use implicit namespaces (no init.py in the wheel) OR pkg_resources (legacy setuptools flow).

pyproject.toml flow is required for tools and relies on the setuptools mechanism that builds the "editable" module. This is somewhat of a risk as we are assuming this editable feature of setuptools continues to work (I consider slight risky because the old editable method didn't work). However, it should be that step 2 of this begins to start forcing tools to make the switch for future release.

Python Namespace Package Examples

This repository contains samples for the various ways to create namespace packages in Python. For more details, see the documentation on namespace packages

Testing

This repo also contains testing tools to exercise installation scenarios for namespace packages.

To run the scenarios:

$ pip install --upgrade setuptools virtualenv nox
$ nox --report report.json

nox will execute all of the scenarios and report whether the namespace packages are able to be imported successfully after installation. You can use python report_to_table.py to transform the report into a markdown-friendly table.

Current status

To see the status since the last time the scenarios were run open table.md.

Please note:

  • Mixing package types within a single namespace is not supported. While it may work in some cases, it may also break depending on the software versions used, the install commands issued, or the order of commands. Don't mix types.
  • The pkg_resources method of namspacing is no longer recommended and there is the desire to deprecate it. It should only be used in legacy namespaces that already rely on it.
  • PEP 420 was accepted as part of Python 3.3. For wider compatibility (going back to Python 2.3), use the pkgutil method.
  • Zipped eggs don't play nicely with namespace packaging, and may be implicitly installed by commands like python setup.py install. To prevent this, it is recommended that you set zip_safe=False in setup.py, as we do here.

About

Tests against namespace packages

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%