README.md: Add --no-build-isolation to instructions#139
README.md: Add --no-build-isolation to instructions#139mkauers merged 3 commits intomkauers:masterfrom
Conversation
d1a4ab7 to
fd93cae
Compare
|
Isn't there a way that we do not put the burden on the user? Can't we do something like: [project.optional-dependencies]
passagemath = [
'passagemath-environment',
'passagemath-flint',
'passagemath-modules',
]?
I understand that is a problem, but if the users already has a flavor of sage, we should not be mixing and matching flavors without need. |
Obviously, which is why users need to use |
|
There's no way around educating users about the fact that the use of monolithic Sage is in conflict to standard practices in Python. |
|
Can't we do ? |
These are run-time dependencies, not build-time dependencies. |
|
(Such optional run-time dependencies are already declared in setup.py ("extras_require").) |
|
By the way, in a conda environment, users have the same "burden" to know about |
|
My struggle is that #105 is not backwards compatible. which implicitly implies that you need to have a working version of sage. After #105, the default installation process will lead to edgarcosta#1, and thus users should use instead: I understand that now I am supposed to do (I can't, see below, and also note the different command from the README) but if this is the goal, wouldn't be easier to have a meta package for this that could be even be easily published on PyPI? Here is the traceback: |
Yes. Not as a "fallback", but just as what you document users to do. |
|
About publishing to PyPI, are you talking source distribution or binary distribution? |
That's normal. You build stuff from source, so you need the non-Python dependencies in your system. There's nothing in Python packaging that takes care of non-Python dependencies. |
|
If you are interested in publishing binary wheels of ore_algebra using passagemath to PyPI, then yes, that's straightforward to do. I can send you a PR with the GH Actions scripts that I use for other packages (example: https://github.com/passagemath/passagemath-primesieve-primecount/blob/passagemath/.github/workflows/dist.yml) |
No, there's no such thing in modern Python packaging as a package that takes control over how another package is built. |
I remember that you suggested that in #105 (comment), and I think it worked for me at the time, but it no longer does. I don't know what has changed. (This is with Sage 10.8.beta0.) |
README.md
Outdated
| Alternatively, run (square brackets indicate optional flags) | ||
|
|
||
| sage -pip install [--user] [--editable] . | ||
| sage -pip install [--user] [--editable] --no-build-isolation . |
There was a problem hiding this comment.
--editable should come right before .
There was a problem hiding this comment.
@mezzarobba Thanks for catching this, fixed in 25897a9
|
@mkoeppe one could have two packages: Regardless, in the current setup there is one |
|
@edgarcosta This is how progress works. "One small step for ore_algebra, one giant leap for sagekind". |
This failure has nothing to do with Complain to the people who have been making wild changes in Sage lately. |
It's not even about "conditionals in dependencies". Build isolation is the new default for Python packaging -- per a standard that will celebrate its 10th birthday next month: https://peps.python.org/pep-0517/ That projects without a |
|
|
No, setup.py is not deprecated. Your point? |
|
The current python documentation doesn't seem to imply at all that:
Anyhoo, my point is the same, there seem to be two solutions:
I would say that as we speak, most users fall under the category of "With Sage built from source or binaries from sagemath.org," and therefore, it is advisable not to break backward compatibility. I understand that your goal is to lower the entry barrier to using Sage, but this approach does not achieve that. Instead, #105 increases the entry barrier to using this package. |
It does not? You'll at least have to tell me what you have read; this is just disrespectful. |
|
Like I said, it's correct that setup.py is not deprecated. But this random fact has nothing to do with the discussion. |
|
(You'll notice that #105 did not remove the use of setup.py, or of setuptools.) |
|
@mezzarobba I wrote:
I see that you have now brought this to the attention of sage-devel. I'll note that the same people who blame a "test being too weak" (https://groups.google.com/g/sage-devel/c/dqKGLT8EeB8/m/yAhqu-HsBAAJ) for not discovering this breakage are the same who vandalized the infrastructure that I built for integration testing of optional packages -- including See: |
Fixes edgarcosta#1 @edgarcosta