Skip to content

is prov==1.5.0 (that strict) is really a requirement? #2531

Open
@yarikoptic

Description

@yarikoptic

Summary

ATM on neurodebian 16.04 (as reported by heudiconv user):

root@220692f29c37:/# nipypecli 
Traceback (most recent call last):
  File "/usr/bin/nipypecli", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
    @_call_aside
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 637, in _build_master
    return cls._build_from_requirements(__requires__)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 650, in _build_from_requirements
    dists = ws.resolve(reqs, Environment())
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 829, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'prov==1.5.0' distribution was not found and is required by nipype

and it is because of very strict prov requirement within nipype/info.py . Unfortunately "git log" exploration of changes done for that in 3500213 (to go from 1.4.0 to 1.5.0) and in 9915615 (to restrict to be 1.5.0) gave no information why 1.4.x isn't good enough, and why 1.5.1 would be bad.

What about

  • using nipype/info.py for specifying min compat version
  • restricting (if really needed) to a specific version in requirements.txt (for specific deployments)

which is I think a common approach AFAIK. Also would be nice to have either commit messages or some comments above those version specifications to say why that version and not any earlier.

FWIW -- in debian/control I do build-depend on python-prov but without versioned restriction. Tests seems to pass - does it mean that 1.4.0 is good enough or just that the code depending on prov isn't tested?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions