Opened 2 years ago

Last modified 2 months ago

#31164 new enhancement

Meta-ticket: Add external user packages as optional/experimental packages

Reported by: Matthias Köppe Owned by:
Priority: major Milestone: sage-9.8
Component: build Keywords:
Cc: Samuel Lelièvre, Markus Wageringel, Vincent Delecroix, Sébastien Labbé, Thierry Monteil, Jean-Philippe Labbé, Fredrik Strömberg, Frédéric Chapoton, Jakub Sliacan, William Stein, Nicolas M. Thiéry, Julian Rüth, Edgar Costa, Christoph Sorger, Marcelo Forets, Peter Bruin, Ricardo Buring, Tomer Bauer Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges

Description (last modified by Frédéric Chapoton)

Since Sage 9.2, the spkg section of the Sage reference manual is automatically generated from the information in the SAGE_ROOT/build/pkgs/ directory. Each SPKG is represented by a subdirectory. The structure of these subdirectories is explained in the Developer's Guide.

This meta-ticket tracks the task of adding external packages, in particular those that used to be listed at https://wiki.sagemath.org/SageMathExternalPackages, as optional/experimental packages. By including them as optional/experimental packages in build/pkgs:

  • They are automatically included in our reference manual (see #29655)
  • Information about them can be obtained using the commands
    • Optional packages available: ./sage -optional
    • Experimental packages available: ./sage -experimental
    • Details about an SPKG: ./sage -info <SPKG>
  • The GH Actions workflows tox-optional.yml and tox-experimental.yml will run them, providing continuous integration that will allow use to catch unintended breaking changes during the Sage development cycle

Already added as packages, see spkg section of the Sage reference manual:

Tickets for pip-installable packages:

The packages will typically be added as pip packages instead of normal packages. These do not come with tarball information and do not have to pin the version, so by default the latest version on PyPI would be installed. Hence there is no additional maintenance burden from updating the packages. Adding the packages is made easy by the new sage -package create commands, added in Sage 9.3.

  • #6371 RiemannTheta: Riemann Theta function numerical evaluation by Nils Bruin, Sohrab Ganjian. Fairly small straightforward package with some cython code. Should probably be integrated into SageMath proper at some point to guarantee it stays up-to-date and functional (Github repo)
  • #31235 cutgeneratingfunctionology (formerly infinite-group-relaxation-sage-code): Computation and experimentation with cut-generating functions, in particular the Gomory-Johnson model by Matthias Köppe, Yuan Zhou, C. Y. Hong, and Jiawei Wang (GitHub repo)

  • #31176 Add packages from 3-manifolds / computop (#31180: snappy)
  • #31416 multipolynomial-bases: Multipolynomial bases (Schubert, Grothendieck, Key) by Viviane Pons (GitHub repo)

No ticket yet:

  • addcombq: Fast Additive Combinatorics functions by Matt Torrence (GitHub repo)
  • arithmat: Implementation of arithmetic matroids and toric arrangements by Roberto Pagaria and Giovanni Paolini (GitHub repo)
  • gcaops: Kontsevich Graph Complex Action on Poisson Structures by Ricardo Buring (GitHub repo)
  • cvolume: Compute completed volumes of strata of quadratic differentials with odd zeros by Eduard Duryev (GitHub repo)
  • abelfunctions: Computing with Abelian functions, Riemann surfaces, and algebraic curves by Chris Swierczewski (GitHub repo, discussion)
  • carlin: Carleman linearization of polynomial differential equations by Marcelo Forets (GitHub repo)
  • yacop_sage: Steenrod algebra cohomology by Christian Nassau (GitHub repo)

  • sage_cluster_pictures: Cluster pictures, BY-trees, models and local invariants of hyperelliptic curves by Alex J. Best and Raymond van Bommel (GitHub repo)
  • msinvar: Computation of moduli space invariants by Sergey Mozgovoy (GitHub repo)
  • comb_walks: Walk Models with elliptic kernel function by Frédéric Chyzak, Antonio Jiménez-Pastor, Pierre Lairez (self-hosted GitLab repo)
  • kerrgeodesic_gw: Computing geodesics of the Kerr spacetime as well as gravitational waves from bodies orbiting a Kerr black hole by Eric Gourgoulhon, Alexandre Le Tiec, Frédéric H. Vincent and Niels Warburton (GitHub repo)
  • dd_functions: Computation with DD-finite functions by Antonio Jiménez-Pastor (GitHub repo)
  • conrey-dirichlet-characters: Working with Dirichlet characters using a numbering scheme described by Brian Conrey by Jonathan Bober (GitHub repo)
  • hypigu: Compute the Igusa local zeta function and flag Hilbert–Poincaré series of hyperplane arrangements by Joshua Maglione (GitHub repo)
  • mclf: Computing with Models of Curves over Local Fields by Stefan Wewers, Julian Rüth (GitHub repo)

Not pip-installable:

In this ticket, only pip-installable packages will be added. This adds an incentive to package authors to bring their packages to this form.

Maintained/abandoned on a Trac ticket:

Outdated (disappeared or does not work with current Sage):

  • sage-semigroups: A semigroup (representation) theory library by Nicolas M. Thiéry (GitHub repo, broken as of 2022-09, Sage 9.7)
  • CHA: Combinatorial Hopf algebras by Nicolas Borie (Bitbucket repo - 404)
  • cryptosage: Cryptography algorithms by Sara Forouhar (GitHub repo with .sage files, last updated 2015)
  • sage-drg: Checking the feasibility of distance-regular graph parameter sets by Janos Vidali (GitHub repo, not pip-installable, no Python 3 support)
  • SchottkyUniformization: SK prime function, Riemann Theta function built from a RS via Schottky uniformization by Jeremy Upsal (GitHub repo, last updated 2016)
  • ss-isogeny-software: Quantum-Resistant Cryptosystems from Supersingular Elliptic Curve Isogenies by Luca De Feo (GitHub repo, marked as obsolete by the author)
  • lecf: Lyapunov exponents for multidimensional continued fractions by Vincent Delecroix and Sébastien Labbé (GitHub repo - last updated 2014, GitHub repo - 404)
  • harmonic-modules: Computing the bicharacter of diagonal harmonic polynomials by Nicolas Thiéry (GitHub repo)

Discussions:


List of external packages

This list used to be maintained at https://wiki.sagemath.org/SageMathExternalPackages

'''Please help by moving packages to one of the sections above!'''

See also https://github.com/slel/external-packages for another collection

Purple Sage

by William Stein, Fredrik Stromberg, Stephan Ehlen, Martin Raum and others

A Library of Number Theory Code that depends on Sage.

fgb_sage

by Markus Wageringel

Sage interface for computing Gröbner bases with FGb.

guptri_py

by Markus Wageringel

Sage/NumPy interface for solving generalized eigenvalue problems of singular matrix pencils with GUPTRI.

Brocoli

by Jean-Philippe Labbé

Package dealing with LImit ROots of COxeter groups (eternal Beta version)

sagemath-polytope-tikz

by Jean-Philippe Labbé

SFBpresentation

by Jean-Philippe Labbé

Change History (89)

comment:1 Changed 2 years ago by Vincent Delecroix

Before proceeding, I would like to understand what package developers and package users would gain by declaring Python packages as sage optional packages. For now, I would only consider doing this if

  • package versions were not tight to sage versions. In the curent setup a package upgrade needs a ticket review and, when merged, has to wait for a new sage version.
  • there is no serious continuous integration for packages (as they have eg for gap)

comment:2 in reply to:  1 Changed 2 years ago by Matthias Köppe

Replying to vdelecroix:

Before proceeding, I would like to understand what package developers and package users would gain by declaring Python packages as sage optional packages. For now, I would only consider doing this if

  • package versions were not tight to sage versions. In the curent setup a package upgrade needs a ticket review and, when merged, has to wait for a new sage version.

The solution here is to use pip packages instead of normal packages. https://doc.sagemath.org/html/en/developer/packaging.html#package-source-types

These do not come with tarball information and do not have to pin the version, so by default the latest version on PyPI would be installed.

  • there is no serious continuous integration for packages (as they have eg for gap)

Well, we do have workflows on GH Actions that at least tries to install all optional and experimental packages!

comment:3 Changed 2 years ago by Matthias Köppe

Description: modified (diff)

comment:4 Changed 2 years ago by Matthias Köppe

Description: modified (diff)

comment:5 Changed 2 years ago by Matthias Köppe

Description: modified (diff)

comment:6 Changed 2 years ago by Matthias Köppe

Description: modified (diff)
Summary: Add user packages from https://wiki.sagemath.org/SageMathExternalPackages as optional/experimental packagesMeta-ticket: Add user packages from https://wiki.sagemath.org/SageMathExternalPackages as optional/experimental packages

comment:7 Changed 23 months ago by Vincent Delecroix

Description: modified (diff)

comment:8 Changed 23 months ago by Vincent Delecroix

Description: modified (diff)

comment:9 Changed 23 months ago by Matthias Köppe

Description: modified (diff)

comment:10 Changed 23 months ago by Matthias Köppe

Description: modified (diff)

comment:11 Changed 23 months ago by Vincent Delecroix

Description: modified (diff)

comment:12 Changed 23 months ago by Vincent Delecroix

Description: modified (diff)

comment:13 Changed 23 months ago by Vincent Delecroix

Description: modified (diff)

comment:14 Changed 23 months ago by Thierry Monteil

Description: modified (diff)

comment:15 Changed 23 months ago by Vincent Delecroix

Description: modified (diff)

comment:16 Changed 23 months ago by Matthias Köppe

Reviewers: https://github.com/mkoeppe/sage/actions/runs/489285128

comment:17 Changed 22 months ago by Matthias Köppe

Cc: Thierry Monteil added
Description: modified (diff)

comment:18 Changed 22 months ago by Matthias Köppe

Description: modified (diff)

comment:19 Changed 22 months ago by Matthias Köppe

Description: modified (diff)

comment:20 Changed 21 months ago by Matthias Köppe

Milestone: sage-9.3sage-9.4

Sage development has entered the release candidate phase for 9.3. Setting a new milestone for this ticket based on a cursory review of ticket status, priority, and last modification date.

comment:21 Changed 16 months ago by Matthias Köppe

Milestone: sage-9.4sage-9.5

comment:22 Changed 12 months ago by Matthias Köppe

Milestone: sage-9.5sage-9.6

comment:23 Changed 8 months ago by Matthias Köppe

Description: modified (diff)

comment:24 Changed 8 months ago by Matthias Köppe

Reviewers: https://github.com/mkoeppe/sage/actions/runs/489285128

comment:25 Changed 8 months ago by Matthias Köppe

Milestone: sage-9.6sage-9.7

comment:26 Changed 7 months ago by Matthias Köppe

Description: modified (diff)

comment:27 Changed 3 months ago by Matthias Köppe

Milestone: sage-9.7sage-9.8

comment:28 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:29 Changed 3 months ago by Matthias Köppe

Summary: Meta-ticket: Add user packages from https://wiki.sagemath.org/SageMathExternalPackages as optional/experimental packagesMeta-ticket: Add external user packages as optional/experimental packages

comment:30 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:31 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:32 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:33 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:34 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:35 Changed 3 months ago by Matthias Köppe

Cc: Jean-Philippe Labbé added

@jipilab: Links for broccoli need updating

comment:36 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:37 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:38 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:39 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:40 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:41 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:42 Changed 3 months ago by Matthias Köppe

Cc: Fredrik Strömberg Frédéric Chapoton Alex J. Best added

comment:43 Changed 3 months ago by Matthias Köppe

Cc: Jakub Sliacan added
Description: modified (diff)

comment:44 Changed 3 months ago by Matthias Köppe

Cc: William Stein Nicolas M. Thiéry Julian Rüth added

comment:45 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:46 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:47 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:48 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:49 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:50 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:51 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:52 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:53 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:54 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:55 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:56 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:57 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:58 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:59 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:60 Changed 3 months ago by Alex J. Best

Cc: Alex J. Best removed

comment:61 Changed 3 months ago by Matthias Köppe

Cc: Alex J. Best added
Description: modified (diff)

comment:62 Changed 3 months ago by Matthias Köppe

Cc: Alex J. Best removed
Description: modified (diff)

comment:63 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:64 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:65 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:66 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:67 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:68 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:69 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:70 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:71 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:72 Changed 3 months ago by Matthias Köppe

Cc: Edgar Costa added
Description: modified (diff)

comment:73 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:74 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:75 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:76 Changed 3 months ago by Nils Bruin

Description: modified (diff)

comment:77 Changed 3 months ago by Matthias Köppe

Description: modified (diff)

comment:78 Changed 2 months ago by Matthias Köppe

Description: modified (diff)

comment:79 Changed 2 months ago by Matthias Köppe

Description: modified (diff)

comment:80 Changed 2 months ago by Matthias Köppe

Description: modified (diff)

comment:81 Changed 2 months ago by Matthias Köppe

Description: modified (diff)

comment:82 Changed 2 months ago by Matthias Köppe

Description: modified (diff)

comment:83 Changed 2 months ago by Matthias Köppe

Description: modified (diff)

comment:84 Changed 2 months ago by Matthias Köppe

Description: modified (diff)

comment:85 Changed 2 months ago by Matthias Köppe

Description: modified (diff)

comment:86 Changed 2 months ago by Matthias Köppe

Description: modified (diff)

comment:87 Changed 2 months ago by Frédéric Chapoton

Description: modified (diff)

comment:88 Changed 2 months ago by Matthias Köppe

Cc: Christoph Sorger added

comment:89 Changed 2 months ago by Matthias Köppe

Cc: Marcelo Forets Peter Bruin Ricardo Buring Tomer Bauer added
Note: See TracTickets for help on using tickets.