ome / ansible-role-omero-web

Installs and configures OMERO.web and Nginx
BSD 2-Clause "Simplified" License
1 stars 14 forks source link

omero-web Python 3 dependency versioning #27

Open manics opened 4 years ago

manics commented 4 years ago

Since this role is meant to support reproducible deployments it should support pinning of python dependencies in virtualenvs. For instance, omero-web depends on omero-py

One option is to have setup.py in omero-web and omero-py have generic ranges for dependencies and each Ansible role is reponsible for defining the full set of pinned dependencies.

Another option is to pin the versions in setup.py of the modules instead, perhaps as a [variant] designed for use in reproducible installations, e.g. something like https://github.com/ome/omero-py/pull/114

    extras_require={
        'linux/linux-dist/dist/pinned/reproducible/recommended': [
            # These match the currently available binary wheels and should
            # ensure omero-py can be installed without a compiler
            # 'ipython==7.9.0',
            'Jinja2==2.10.3',
            'numexpr==2.7.0',
            'numpy==1.17.3',
            'Pillow==6.2.1',
            'PyYAML==5.1.2',
            'tables==3.6.1',
        ],
    },
joshmoore commented 4 years ago

Another option would be a Pipfile-like approach where a requirements-in.txt lists the unversioned files, and then the output of pip freeze records exact tested versions. (i.e. basically the same but outside of the setup.py file)

manics commented 4 years ago

I've started a design issue since this affects multiple repos https://github.com/ome/design/issues/103