Skip to content

Dealing with dependencies in pyCSEP #192

Open
@wsavran

Description

@wsavran

Working through the reproducibility packages and thinking about the testing experiments uncovered the need for a discussion on how we are managing the dependencies in pyCSEP.

Currently we are only pinning dependencies when a conflict or issue is known. Once the issue or conflict has been resolved we remove the pin.

Pros of this approach:

  • Provides most up-to-date versions of packages and dependencies
  • Plays much more nicely when users are trying to install pyCSEP alongside their working environment (this is the cast for most normal users)

Cons of this approach:

  • Environment can be transient with time which causes issues for reproducibility of results by simply choosing a version of pyCSEP
  • Deal with inevitable errors in pyCSEP from third-party incompatibilities (eg, new version of numpy removes function used by matplotlib)

Goals:

  • Enable reproducible research using the sofware
  • Provide users with ability to easily integrate pycsep into their working environment (ie although users should create their own environments we dont want to create dependency issues when they try and install pycsep).

Possible ways improve reproducibility of the computing environment:

  • Users could be responsible for providing a reproducible environment themselves eg, with reproducibility packages
  • Pin versions of dependencies within pycsep (see above) or use a min/max dependency approach
  • We could provide docker images associated with each build to freeze the high and low level dependencies (could be built into CI). adds other options of where to store and how to reproduce it exactly at anytime, etc).

References

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