Skip to content

create new fpb_env package with fixed dependencies #704

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
gdementen opened this issue Oct 11, 2018 · 4 comments
Open

create new fpb_env package with fixed dependencies #704

gdementen opened this issue Oct 11, 2018 · 4 comments
Assignees
Labels
enhancement priority: BLOCKER cannot make a release without these issues resolved
Milestone

Comments

@gdementen
Copy link
Contributor

gdementen commented Oct 11, 2018

We have had too many problems of too old or too recent dependencies

@alixdamman
Copy link
Collaborator

See also #767

alixdamman added a commit to alixdamman/larray that referenced this issue May 28, 2019
…mand line updating the larrayenv metapackage
@gdementen gdementen changed the title fix dependencies in larrayenv create new fpb_env package with fixed dependencies May 29, 2019
@alixdamman
Copy link
Collaborator

@gdementen
Question 1: Do you want to remove larrayenv?
Question 2: fpb_env should be a package or a metapackage?

@gdementen
Copy link
Contributor Author

  1. Not at this point as it is useful for people outside the fpb (eg croatians). If its maintenance takes too much time, we can always re-evaluate that later.
  2. Unsure. I guess a package, so that we can provide a Windows menu to upgrade it, or is that possible with a metapackage too? On the long run, I suppose a package will be better anyway because I guess that at some point we will want to add FPB-specific pieces of code there that are not large enough to warrant creating a separate package for them.

@gdementen gdementen removed this from the 0.31 milestone Aug 1, 2019
@alixdamman alixdamman added this to the 0.32 milestone Aug 8, 2019
@gdementen gdementen removed this from the 0.32 milestone Sep 24, 2019
@alixdamman alixdamman added this to the nice_to_have milestone Oct 10, 2019
@gdementen gdementen modified the milestones: nice_to_have, 0.33 Dec 11, 2020
@gdementen gdementen modified the milestones: 0.33, 0.34 Aug 17, 2021
@gdementen gdementen self-assigned this Sep 20, 2022
@gdementen gdementen added priority: BLOCKER cannot make a release without these issues resolved and removed priority: high labels Sep 20, 2022
@gdementen gdementen modified the milestones: 0.34, 0.34.1 Feb 14, 2023
@gdementen gdementen removed this from the 0.34.1 milestone Oct 25, 2023
@gdementen gdementen added this to the 0.35 milestone Oct 25, 2023
@gdementen
Copy link
Contributor Author

This issue is really a pain and I am a bit stuck with it.

On one hand, not having a solution for this keeps being a problem over and over. New installs, or users installing another package and getting updated dependencies which conflicts with LArray in some way (usually via new warnings but sometimes with a crash).

On the other hand our users also need to install miscellany packages on top of larrayenv (scipy, pyarrow, rpy2, statsmodels, sympy, yaml, ...) and having very strict version requirements would in some cases make installing those packages impossible. So one solution would be to include all those packages in our mega-package... but some of those packages do not exist in anaconda or are so outdated they are inusable. The solution to that is to switch to either conda-forge (and keep using conda) or to pip.

  • pip usually has all packages and all their versions.
  • conda-forge currently has a lot more packages than anaconda, and they are relatively quickly updated.

The problem with both is the flip-side of the advantage of being community-maintained: there is no gatekeeping by Anaconda Inc => there is a higher risk -- at least the way I see it -- of a compromised package getting through either directly when users install more packages (hard because of the strict dependencies versions but not impossible) or, in our machine, most likely via one of our indirect dependencies when we produce updated packages.

One solution to the "users installing new packages" problem is to prevent them from doing so and produce a new version of our mega package with ever more packages each time one user needs an extra package. One option to do this would be to create offline installers containing all packages using conda constructor (https://github.com/conda/constructor - https://conda.github.io/constructor/howto/).

In the pip world, I think our best bet would be to run our own private pypi repository (https://packaging.python.org/en/latest/guides/hosting-your-own-index/). Unsure how hard/how much effort it would mean to keep that running.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement priority: BLOCKER cannot make a release without these issues resolved
Projects
None yet
Development

No branches or pull requests

2 participants