On Monday, February 19, 2024 at 10:35:45 AM UTC-8 Dima Pasechnik wrote: On Mon, Feb 19, 2024 at 5:31 PM Matthias Koeppe <matthia...@gmail.com <https://groups.google.com/>> wrote:
On Monday, February 19, 2024 at 5:47:46 AM UTC-8 tobia...@gmx.de wrote: +1 for the one-line change of the type from "optional" to "standard". -1 on everything ("standard pip" or "standard wheel") that involves an unnecessary version constraint and an explicit declaration of the runtime dependencies. Tobias, you must have missed that making the package standard does set a version "constraint". Those are set in "install-requires.txt" files, and in https://github.com/sagemath/sage/pull/37301 you can see that the packages remain unconstrained. What does this comment have to do with the question at hand? Not sure what you're asking. I've clearly quoted what I'm responding to. Package versions of standard packages at the moment are set up in package-version.txt files, as it clear for all to see in your own PR making pytest* into standard packages: https://github.com/sagemath/sage/pull/37301 "For all to see" in the PRs also that there are the files "install-requires.txt" that I mentioned. Their purpose is documented in our Developer Guide - https://deploy-livedoc--sagemath.netlify.app/html/en/developer/packaging#python-based-packages But for convenience I'll include an explanation below. (with all the mess of checksums, tarballs/wheels, etc etc) Calling it a "mess" is not helpful for the discussion. I'd ask for using much more restraint in using such rhetorical devices. Pip package versions need not to be explicit, however, and one won't need to worry about checksums, tarballs/wheels (unless installing Sage on an air-gap system...) In the Python (pip) world: - Version constraints of dependencies of a Python project are declared in pyproject.toml [project] dependencies (https://setuptools.pypa.io/en/latest/userguide/dependency_management.html#declaring-required-dependency); or, equivalently. in the older formats: setup.cfg install-requires, or setup.py install_requires - Pinning to specific versions is done using a file "requirements.txt" (https://pip.pypa.io/en/stable/reference/requirements-file-format/) - This file can be created and updated by using "pip freeze". In the conda world: - Version constraints of dependencies of a project are declared in environment.yml - Pinning to specific versions can be done in separate environment file such as conda-lock.yml - Updating the lock file can be done using conda-lock (https://github.com/conda/conda-lock?tab=readme-ov-file#why) - Example in Sage: https://github.com/sagemath/sage/blob/develop/src/environment-dev-3.11-macos-arm64.yml#L329 pins "pytest=7.4.3=pyhd8ed1ab_0" and its dependency "iniconfig=2.0.0=pyhd8ed1ab_0" (https://github.com/sagemath/sage/blob/develop/src/environment-dev-3.11-macos-arm64.yml#L194) In the Sage distribution: - Version constraints of normal Python packages are declared in files build/pkgs/*/install-requires.txt - Pinning to specific versions is done in the files build/pkgs/*/package-version.txt - Updating the pins is done using "sage --package update" or "sage --package update-latest". -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/94060e30-f224-44fd-841e-7b2060a222f1n%40googlegroups.com.