Refactor git project and pypi package structure
goals
- a nomad pypi package with various setuptools extensions: nomad, nomad[parser], nomad[client], nomad[infra], nomad[dev]
- fast cli startup
- fast tests
cleaning up the internal module structure
This is what the nomad module structure and its inter-dependencies should look like:
experimenting with lazy imports
There are various ways in python, especially newer versions 3.7+, to lazy import modules. We should explore solutions for these two problems:
- How to implement a nomad module in a way that it is not directly loaded when imported
- How to lazily import other modules (dependencies)
With both problems solutions should:
- minimize impact on "normal" programming practices
- not break pylint and mypy !!!
- allow to monkeypatch (where necessary)
- allow 'partial' imports (optional)
Furthermore, it would be beneficial to use tools to analyse import and startup times.
implement the setup.py
If the packages are prepared in the right way, this should be trivial. Instead of having python-common
and the parsers as their own packages, we should include them in the nomad package.
a proper CI for tests
This would require modularised tests, an image without prior pip installs, respective installs between tests of various nomad extensions. There is still the need for a complete image to deploy nomad.
other (old) tasks
-
clean up the python common to the bare minimum -
move parser specific metainfo to parsers