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.