On Friday, February 16, 2024 at 8:44:06 PM UTC-8 Nathan Dunfield wrote:

Dima mentioned "tox" [1] as an example of a "standard" package that would 
benefit from being switched to a "pip" package.  The "tox" package is pure 
python, so could also made a "wheel" package, which are already allowed for 
standard package, for example [2]. 


Yes, in fact, tox and its dependencies have already been "wheel" packages, 
see https://github.com/sagemath/sage/blob/develop/build/pkgs/tox/checksums.ini, 
since https://github.com/sagemath/sage/pull/36176 (Sep 2023). 
 
I have been switching many packages from "normal" to "wheel", which has 
reduced the complexity of the Sage distribution, as wheel packages have no 
installation scripts -- and also no build dependencies. The latter was 
crucial -- as we decided to install JupyterLab components from the 
pre-built wheels, which eliminated the complexity of Javascript build 
infrastructure from the Sage distribution, 
https://github.com/sagemath/sage/pull/36129

For wheel packages, it's all just metadata and the copied-over package 
README (which we need for building our reference manual).

I'm having difficultly understanding the practical differences between a 
"wheel" package and a "pip" packages in this setting. 


With "wheel", the wheel is downloaded from PyPI and put in upstream/ by 
various GH actions and put in the sage tarball and copied over to the sage 
mirrors, whereas with "pip" it is only downloaded by pip itself when an 
end-user builds Sage.  But in terms of developer effort, the only 
difference I see between "wheel" and "pip" is that the former has a few 
extra checksums, compare [2] and [3].

 

  What distinctions am I missing?  Is it that a "wheel" must be pinned to a 
specific release on PyPI whereas "pip" can specify a range?


If one does not care about the use case without internet access, then it's 
just the following:
- Pinning, as you mentioned (see also 
https://groups.google.com/g/sage-devel/c/5kmxaw105lg/m/9rF77fvFAAAJ above, 
where I discussed some details of this, including risks of leaving packages 
unpinned)
- Dependencies: "pip" packages can pull some of their build-time and 
run-time dependencies directly from PyPI, without us mirroring these 
dependencies in SageMath metadata. That's a mild convenience for 
developers, of importance if one wants to leave the version range wide 
open; but also has risks of instability.

Obviously, what is costly or inconvenient for developers depends a lot on 
the tooling that is available. I can elaborate on this if there's interest.

-- 
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/c91c1112-0405-41f8-8cdb-71b1942a5c8dn%40googlegroups.com.

Reply via email to