-
Notifications
You must be signed in to change notification settings - Fork 161
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
Separate Development Dependencies from Production Dependencies #3877
Comments
We are currently in the process of undoing Firedrake's bespoke installation with a much more typical pip-based approach. This includes adding optional dependencies in the way that you suggest. Note that this new install method will not be the default for a little while (~1 month) as there are more things we need to do before removing |
Note that the development tools that are there are pretty lightweight compared to the operational requirements of Firedrake (which, don't forget, also include a full compiler stack to support runtime code generation). |
Brilliant! I’m looking forward to adopting the pip-based approach. Thanks so much for your effort! Just to highlight the importance of the issue: installing
Here is a subset of dependencies that, as a user, I would have preferred to avoid installing. Having the option to choose dependencies selectively in Firedrake (and similarly in pyadjoint, pyop2) would be highly appreciated.
Thank you again for considering this. |
Hi,
Thank you for your work on Firedrake!
I noticed that
requirements-ext.txt
includes both production dependencies (e.g., scipy, sympy) and development dependencies (e.g., pylint, pytest, nbval). This forces users to install unnecessary dev tools, leading to overhead and conflicts.https://github.com/firedrakeproject/firedrake/blob/76d8daa0132e5067bae17d05985401b64f443acd/requirements-ext.txt#L1:L15
Could you split these into requirements.txt (for production) and requirements-dev.txt, or use extras_require (e.g., pip install firedrake[dev])? Users of Firedrake shouldn’t have to depend on tools like pytest or pylint or nbval.
Thanks
Example: how pytest solves this problem
It is a common practice to separate development requirements. For example, pytest handles this by listing production dependencies separately from development dependencies. Users only need the production list to use pytest. Development dependencies are installed separately, typically in a different environment, only if contributing to pytest.
This approach could help make dependency management cleaner for Firedrake users. Let me know if I can assist!
https://github.com/pytest-dev/pytest/blob/72f17d10d76e5260906c17f279c5fa6bd29b5a8d/pyproject.toml#L49:L66
The text was updated successfully, but these errors were encountered: