Pip [...] can't do anything with the non-python software on which sage subsists.
To make sage-via-pip work, we'll have to maintain a new pseudo-
distribution on pypi that either ships people pre-built wheels or wraps
autotools/cmake/etc in python. As was made clear in recent threads,
many developers don't want to be maintaining the *first* sage
distribution, much less a second one.
some other examples of such pip-installable spin-offs of parts of
Sage, some with binary wheels, some without, are pplpy, cysignals,
primecountpy
(more of this should come)
At some point we should consider fully switching to gmpy2 to provide
interfaces for gmp, mpfr, etc.
My understanding of William's goal (please correct me if I am wrong) was to put everything together so nobody was trying to build a better wheel. To me, by splitting everything up into these small pieces, it seems contrary to that goal as how is someone suppose to know the piece they want already exists?
My reading is that your main goal is to make Sage pip-installable, but that seems independent of breaking Sage up into smaller parts. Even breaking up Sage into smaller portions for more 'precise' dependencies for these supposed downstream Python developers won't really fix B and C.
[...]. I am hoping you could answer the following questions in detail with your next post. [...]
On Sunday, June 11, 2023 at 6:20:03 PM UTC-7 Travis Scrimshaw wrote:My understanding of William's goal (please correct me if I am wrong) was to put everything together so nobody was trying to build a better wheel. To me, by splitting everything up into these small pieces, it seems contrary to that goal as how is someone suppose to know the piece they want already exists?
[...] various parts of sage.all, including features that are of high interest to our users. It would be fantastic if we could include those in the stand-alone applications (including on Windows, which accounts for 2/3 of the downloads of the full application).
What parts of Sage does SnapPy use?
On Sunday, June 11, 2023 at 6:20:03 PM UTC-7 Travis Scrimshaw wrote:My understanding of William's goal (please correct me if I am wrong) was to put everything together so nobody was trying to build a better wheel. To me, by splitting everything up into these small pieces, it seems contrary to that goal as how is someone suppose to know the piece they want already exists?The Sage distribution will continue to exist. There will be no user-visible change coming from the modularization project for the users of the Sage distribution.
My reading is that your main goal is to make Sage pip-installable, but that seems independent of breaking Sage up into smaller parts. Even breaking up Sage into smaller portions for more 'precise' dependencies for these supposed downstream Python developers won't really fix B and C.It works the other way around. B and C (applied to individual Cython/Python modules) were/are _obstacles_ to making modularized pip-installable distributions.
The Sage distribution will continue to exist. There will be no user-visible change coming from the modularization project for the users of the Sage distribution.That is simply not true right now. The # optional sage.* doctests as a user-visible change.
The Sage distribution will continue to exist. There will be no user-visible change coming from the modularization project for the users of the Sage distribution.That is simply not true right now. The # optional sage.* doctests as a user-visible change.Matthias means that all pieces (the sage library and external packages that the sage library depends on) are all there and available to a sage user after the modularization project.
That is why you (and most of us) didn't notice and care much about the modularization project up to now, until those massive `# optional ...` tags start to appear in the code you care about.
I don't think we can dismiss `# optional ...` tags from the sage library if we embrace the modularization efforts of the sage library, as Matthias is trying to convince us. It is more productive to find ways to do it in more pleasing way.
... but it is also starting to come with policy implications due to its scale that are not easy to revert.
I've been following along with different pieces to see how it's going. You are right, in part I am bringing this up now because it is is affecting code I care about (and regularly use to promote Sage)
On Monday, June 12, 2023 at 10:53:38 AM UTC+9 Matthias Koeppe wrote:On Sunday, June 11, 2023 at 6:20:03 PM UTC-7 Travis Scrimshaw wrote:My understanding of William's goal (please correct me if I am wrong) was to put everything together so nobody was trying to build a better wheel. To me, by splitting everything up into these small pieces, it seems contrary to that goal as how is someone suppose to know the piece they want already exists?The Sage distribution will continue to exist. There will be no user-visible change coming from the modularization project for the users of the Sage distribution.That is simply not true right now. The # optional sage.* doctests as a user-visible change.
My reading is that your main goal is to make Sage pip-installable, but that seems independent of breaking Sage up into smaller parts. Even breaking up Sage into smaller portions for more 'precise' dependencies for these supposed downstream Python developers won't really fix B and C.It works the other way around. B and C (applied to individual Cython/Python modules) were/are _obstacles_ to making modularized pip-installable distributions.I don't follow. Separating the components of Sage won't fix B/C, nor will fixing B/C split Sage into smaller components (which will actually make the dependency web worse).Best,
Travis
--
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+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/19987597-9875-4306-927c-4a287c70eb5fn%40googlegroups.com.
Perhaps one can introduce a tag #needsmodule
[...] without resolving any of the
other ongoing massive complicated projects.
On Thursday, June 8, 2023 at 4:40:06 PM UTC-7 Michael Orlitzky wrote:Pip [...] can't do anything with the non-python software on which sage subsists.
To make sage-via-pip work, we'll have to maintain a new pseudo-
distribution on pypi that either ships people pre-built wheels or wraps
autotools/cmake/etc in python. As was made clear in recent threads,
many developers don't want to be maintaining the *first* sage
distribution, much less a second one.That's right, building binary wheels to be distributed on PyPI (in addition to the source distributions) will be one of the key steps in order to make it very user-friendly -- i.e., on par with doing "pip install scipy" on standard platforms.It is normal practice of Python projects to create binary wheels and make them available on PyPI. There is sufficient mainstream infrastructure (such as https://github.com/pypa/cibuildwheel) that makes it easy.
On Fri, 9 Jun 2023 at 02:02, Matthias Koeppe <matthia...@gmail.com> wrote:building binary wheels to be distributed on PyPI (in addition to the source distributions) will be one of the key steps in order to make it very user-friendly -- i.e., on par with doing "pip install scipy" on standard platforms.It is normal practice of Python projects to create binary wheels and make them available on PyPI. There is sufficient mainstream infrastructure (such as https://github.com/pypa/cibuildwheel) that makes it easy.What is your plan for dealing with sage's non-Python dependencies?Binary wheels which bundle compiled non-Python dependencies using tools such as auditwheel are extremely fragile, as there is nothing preventing the user from installing a package which might bundle a different version of the same library, resulting in hard-to-debug erratic runtime errors due to ABI inconsistencies, symbol collisions, etc.
--
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+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/281e65d5ebeb2884b7638a340233db5855d43285.camel%40orlitzky.com.
The second issue is that WebAssembly doesn't actually solve the
problems we have,
a lot of this is caused by Sage the distribution intertwined with Sage the library too much.
[...] And instead of focusing on
them we keep getting distracted by squirrels.
--
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+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/07d46292-49e8-4201-bdc2-cd74c6c164c6n%40googlegroups.com.
On Monday, June 12, 2023 at 2:58:18 PM UTC-4 Matthias Koeppe wrote:What parts of Sage does SnapPy use?Primarily the various rings/fields, including matrices over them and basic linear algebra.
Specifically, interval arithmetic (Real/ComplexIntervalField), polynomial rings (in several variables, including Laurent polynomials), number fields, and the basic rings ZZ, QQ, GF, RealField, ComplexField, etc.
Also, the ptolemy submodule uses Sage for groebner_basis calculations.