(3) Source repository: Is the source maintained as part of the Sage repository using Trac tickets (MONOREPO); or in a separate repository on GitHub, GitLab, ... (MULTIREPO)?
This post is dedicated to the relation between (1) and (2).
Note that the distribution name is not required to be a Python identifier. In fact, using dashes (-) is preferred to underscores in distribution names; setuptools and other parts of Python's packaging infrastructure normalize underscores to dashes. (Using dots in distribution names, to indicate ownership by organizations, still mentioned in
https://www.python.org/dev/peps/pep-0423/, appears to have largely fallen out of favor.)
Recommendation: A distribution that provides functionality that does not need to import anything from the sage namespace (from sage.PAC.KAGE.MODULE import ...) should not use the sage namespace for its packages/modules.
Examples (existing):
- The distribution
https://pypi.org/project/pplpy/ provides the Python package ppl [according to PEP 423, this should have been "pplpy"]. pplpy is a much extended version of what used to be sage.libs.ppl (
https://trac.sagemath.org/ticket/23024), a part of the Sage library. sage.libs.ppl had dependencies on sage.rings to convert to/from Sage number types. pplpy has no such dependencies and is therefore usable in a wider range of Python projects.
Recommendation: A distribution that provides Python modules in the sage namespace (sage.PAC.KAGE.MODULE) should be named sagemath-DISTRI-BUTION. Other distributions should not use the prefix sagemath- in the distribution name.
- The distribution
https://pypi.org/project/sagemath-standard/ currently provides the entirety of the Python package sage (i.e., sage.categories, sage.combinat, sage.rings, ...) - representing the status quo before modularization.
- The distribution
https://pypi.org/project/sagemath-categories/ provides a small subset of the modules of the Sage library, mostly from the Python packages sage.structure, sage.categories, and sage.misc (from
https://trac.sagemath.org/ticket/29865, needs review)
- The distribution
sagemath-polyhedra provides a self-contained subset of the modules of the Sage library for linear algebra and polyhedral geometry over ℚ, mostly from sage.rings, sage.modules, sage.matrix, sage.geometry (
https://trac.sagemath.org/ticket/32432, under development)
- The distribution
https://github.com/mkoeppe/sage-numerical-interactive-mip is a user package, not part of the Sage library, providing the Python package sage_numerical_interactive_mip.