-
Notifications
You must be signed in to change notification settings - Fork 3
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
Relaxed Dependencies #13
Comments
I do want to bring up, when considering this issue, the last time I checked Edit: This was potentially fixed here: pypa/pip#8291 The previous occurrence of a related conversation: #8 |
I was not aware of the discussion in #8 , but if relaxing the dependencies is not ameneable, would it be okay to fork and change |
@shinybrar it seems like there are two (and maybe only two?) issues in here:
I'd much rather solve these directly than split up ch_util into sets of optional dependencies. As I discussed in #8, we use a successful installation of There are some good avenues for fixing this:
I'm tagging @danielemichilli and @leungcalvin in here as they may have opinions on this one. Also, I'd really rather avoid a fork if we can. |
I think the suggestion would be to change, the current installation of >>> pip install "ch_util[all] @ git+https://github.com/chime-experiment/ch_util.git#master"
>>> pip install ch_util[all] Currently, Currently, there exists a fork of ch_util on chimefrb/ch_util -- If it works for the chime-experiment team, we can maintain that flavour with optional dependencies and equal to the the current master in terms of commits. |
I have been tinkering on SciNet and I can confirm that installing I'm gonna punt on bitshuffle, but I don't remember having problems with it on sites besides Re: forking...I don't really care either way and I don't think the Outriggers science will be really affected, as long as we use a branch like |
Can you elaborate on that? Is it just bitshuffle that's the problem there? Details on this would be useful as I'd really rather fix the actual problems than put in these workarounds. |
I wonder how |
Generally my attitude is this... I really would rather avoid a fork if we can. Even the soft fork you're proposing will eventually turn into a hard fork as people start committing changes to it rather than upstream, and then at somepoint we'll change something which breaks your interfacing, and you won't want to fix it, etc. So probably the priority would be to avoid this. I'd also like to avoid changing the dependencies to optional ones. I appreciate it sounds like a simple change to just say now you just install Because of that I'd really like to explore other options. There's two I can think of:
As indicated above, I think I have a preference for 1, but it needs to be a path that everyone thinks would work. |
I think the current pains currently are, but not limited to:
I think the proposed solution 1 works, if:
I understand and relate to @jrs65 preference to limit hard forks. @mondana |
I want to make clear that this is not my work but a PR from someone from ESRF, Grenoble (kiyo-masui/bitshuffle#81). |
@shinybrar okay great. I think we can try and thin down the dependencies a bit too. Looking at the
|
@nritsche can I ask you to take a look at that PR and test it and see if it does what we want (i.e. allow using bitshuffle without install h5py from source)? |
@shinybrar this is making progress now. We're just about to get the code merged into bitshuffle (kiyo-masui/bitshuffle#81) which means that we won't need to build h5py from source to use bitshuffle. Next stop is to build a binary wheel of bitshuffle, so installing that part of the chain should be more or less instantaneous. |
Issues
With
ch_util
supporting a wide myriad of utilities under the hood, downstream packages are currently required to build and install complicated dependencies by default even though they might not be required. An example of this could bempi4py
which is seldom used in developer environment. This proposal recommends to split the dependencies ofch_util
by purpose underextras_require
in order to considerably relax base requirements.Additionally, dependency resolution systems enabled through PEP 517 such as
flit
,poetry
andpipx
try and evaluate requirements forch_util
,it nominally includes packages underextra_installs
. This process errors out, sincechimedb_config
package is closed sourced. As a result, currently its not possible to usech_util
with these modern build systems.Resolutions for:
Private Extra Installs
chimedb_config
will never be made open source, we can either remove it from thesetup.py
and raise an import error, if a function which requires it is called.Dependency Isolation
Example Scenario
If a developer wants access to the
ch_util.tools.Antenna
object, they are required to installbitshuffle
, which requires a hard linked installation ofhdf5
. This additional step adds ~3-5 minutes of compile time.Possible Split
bitshuffle
,h5py
]chimedb @ git+https://github.com/chime-experiment/chimedb.git
,chimedb.data_index @ git+https://github.com/chime-experiment/chimedb_di.git
,chimedb.dataflag @ git+https://github.com/chime-experiment/chimedb_dataflag.git
]mpi4py
]Additionally, I am happy to work on these issues, if the project team is interested in implementing them.
The text was updated successfully, but these errors were encountered: