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.

Reply via email to