-
Notifications
You must be signed in to change notification settings - Fork 321
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
PyProject-centric Build System with Setuptools #332
Conversation
…rent dependency groups required for tasks such as normal use, development, and building the documentation.
A PR to move from setup.py, requirements.txt, and setup.cfg to a pyproject.toml build has long been on the backburner, so a HUGE thanks for getting it started! That said, I'm more inclined to
Also, I'm not sure that committing a lockfile is appropriate, as we want new versions of dependencies to cause CI failures, as that forces us to keep the library compatible with a wider range of dependencies. I know some people have a workflow for package management that uses a lockfile, but I've never really understood them. Was there some discussion about |
@Jacob-Stevens-Haas are you available to quickly triage the differences today/tomorrow? Started it during your talk on Monday, and just finished the first version yesterday. |
No personal preference between As far as I can tell, the lock-file should be excluded from the PR - but if it is hiding somewhere, then I'll gladly rewrite the Git history to remove it. I think the files where we already have full alignment are, and please correct me if I am wrong:
With most of the others being dependent on the build system used by What is your opinion of how the packages are split up into the three groups with the normal installation with While letting Poetry determine the version constraints, I also managed to remove duplicate package quotations inside of the requirements, and the dev-requirements which are already installed due to other packages. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks again! Most comments are about keeping the setuptools
backend and setuptools_scm
plugin, and how that changes pyproject.toml. Currently an open issue to extend poetry support to PEP-defined format.
Thanks also for the documentation upgrade and removing duplicate packages!
What is your opinion of how the packages are split up into the three groups with the normal installation with cvxpy, dev, and docs? Should packages be moved into different groups?
I think I see what you mean with pip install pysindy[cvxpy]
. Only concern is that, as an optional dependency, we need to guard imports from cvxpy. We tried to do that with pip install pysindy[miosr]
, but I'm not sure we were truly able to do it correctly. I'm interested to hear whether @znicolaou and @akaptano think that cvxpy
is a difficult enough requirement to justify putting it in its own optional dependency. FWIW, MIOSR/gurobipy
, requires a paid (or academic) license to use the full functionality.
Codecov ReportPatch coverage has no change and project coverage change:
❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more. Additional details and impacted files@@ Coverage Diff @@
## master #332 +/- ##
==========================================
- Coverage 92.31% 0.00% -92.32%
==========================================
Files 37 37
Lines 3747 3747
==========================================
- Hits 3459 0 -3459
- Misses 288 3747 +3459 ☔ View full report in Codecov by Sentry. |
@Jacob-Stevens-Haas now the PR should be ready to merge :) The Readme is adjusted, and should be good-to-go. Thanks for sitting down with me! |
Thanks @ludgerpaehler ! I noticed that for some reason, codecov shows:
which is odd, because we didn't change anything with pytest-coverage or codecov. I'm going to merge it now and troubleshoot over the weekend, since codecov has been going through some weird changes recently. Do you remember anything we did that could've caused this? In the CI logs:
|
PyProject-centric Build System with Setuptools
This PR fully converts the existing setup tools-centric build system to a
pyproject.toml
-centric build system with Poetry as a part of this the PR introduces the following changes:setup.cfg
with the flake8 configuration going its own dedicated.flake8
configuration filerequirements-dev.txt
into adev
dependency group, adocs
dependency group to solely build the documentation, and movingcvxpy
into the normal dependencies. If desired,cvxpy
could be broken out into its own separate dependency group. These can be installed withpip install pysindy[dev]
, orpip install pysindy[docs]
.setup.py
has been carried over into thepyproject.toml