Skip to content
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

basisisp dependencies versions #805

Closed
ikappaki opened this issue Jan 12, 2024 · 2 comments · Fixed by #806
Closed

basisisp dependencies versions #805

ikappaki opened this issue Jan 12, 2024 · 2 comments · Fixed by #806

Comments

@ikappaki
Copy link
Contributor

ikappaki commented Jan 12, 2024

Hi,

most of the python dependencies in Basilisp are all fixed with a caret. This can prevent from installing Basilisp in environments where packages are constrained to a particular version.

For example, the pyrsistent dependency is declared as

pyrsistent = "^0.18.0"

requiring that a 0.18.x version is available in the environment. This can prevent Basilisp from installing when any other package in the environment is dependent/constrained on a higher version (e.g. 0.19.x).

Would it be possible to change the Basilisp dependency to accommodate a wider range of its dependencies versions (.e.g. >=0.18.0)?

I suppose, if we go down this road, we could also have some limited integration tests for each dependency that is deemed having a big effect in basilisp.

Also, while at it, pyrsistent appears to support maps, can we fold in the immutable maps into it and remove the immutables dependency? Less dependencies, less likely for it to cause issue when installing Basilisp in python environments with diverse package and dependencies requirements.

Thanks

latest pyrsistent versions as of today

@chrisrink10
Copy link
Member

This can prevent Basilisp from installing when any other package in the environment is dependent/constrained on a higher version (e.g. 0.19.x).

We can open up Pyrsistent to >=0.18.0,<1.0.0. This is a quirk of the caret dependency for 0.x versioned dependencies. For >=1.0 it would translate to >=1.18.0,<2.0.0 which is what I would want.

I suppose, if we go down this road, we could also have some limited integration tests for each dependency that is deemed having a big effect in basilisp.

I use caret dependencies in general to avoid changes due to major version increases. With the exception of Immutables and Pyrsistent, I feel comfortable with the current pins.

Also, while at it, pyrsistent appears to support maps, can we fold in the immutable maps into it and remove the immutables dependency? Less dependencies, less likely for it to cause issue when installing Basilisp in python environments with diverse package and dependencies requirements.

I moved away from Pyrsistent for maps intentionally in #559 to get a C map implementation. Pyrsistent only has a C implementation of the vector type and a Python version of a map which uses the C vector under the hood. I do not wish to switch back. Immutables uses a HAMT which is specifically the same underlying data structure used in Clojure.

@chrisrink10
Copy link
Member

chrisrink10 commented Jan 12, 2024

I put up #806 to loosen those two dependencies which should allow you to use 0.19+

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants