Requirements
Dependency tree
To avoid having to repeat shared requirements in several files, both system requirements and python requirements have been split into several files according to the "inheritance" tree below:
------- api
/
------------------------- engine -
/
common - ------- admin
\ /
------- django -
\
------- report
Python dependency tree
For each of the OS²datascanner components (engine, admin, report), a
requirements-<component>.txt file is generated using pip-tools and .in-files.
The .in-files used by pip-tools are organized according to the "inheritance"
tree below, and each .in-file includes all packages from its "parent file":
------- api
/
------------------------- engine -
/
common - ------- admin
\ /
------- django -
\
------- report
test
lint
The requirements for the two Django components (admin and report) are restricted by the versions required by the engine-component due to code imports.
Furthermore, requirements for testing and linting are to be used by all three
components; both test and lint requirements are constrained by
(but does not include!) the versions from the engine, admin, and report
.txt-files, while lint requirements are additionally constrained by
the versions required by test.
To (re)generate the necessary requirements-*.txt-files during development, a
Dockerfile and docker-compose.yml have been provided in the
./dev-environment/-folder. The generated Docker image contains all system
dependencies, thus ensuring that pip-tools pin packages to the correct
versions. To generate the
../requirements/python-requirements/requirements-*.txt-files, simply run
docker-compose up from the dev-environment/ folder.