Skip to main content

schubmult

Fast Schubert calculus in Python: Littlewood-Richardson coefficients, Schubert/Grothendieck rings, and the combinatorics behind them.

PyPI Docs License: GPL v3

schubmult multiplies single, double, quantum, and quantum double Schubert polynomials (with parabolic variants), expands products in the Schubert basis, and gives you the combinatorial objects that index them: permutations, RC graphs (pipe dreams), bumpless pipe dreams, tableaux, and their crystal structures. It is built on SymEngine for speed and SymPy for display, so results drop straight into SymPy or Sage.

Documentation: https://matthematics.github.io/schubmult/


Installation

pip install schubmult

Development version:

pip install git+https://github.com/matthematics/schubmult.git

Requires Python 3.10+. To build the documentation locally, install the docs extra: pip install -e ".[docs]".

Quick start

Python

from schubmult import Sx, DSx, QSx, QDSx, Gx, DGx, Permutation
from schubmult.abc import x, y, z

# Ordinary Schubert polynomials: S_312 * S_132 = S_321 + S_4123
Sx([3, 1, 2]) * Sx([1, 3, 2])
# 𝔖_(3, 2, 1)(x) + 𝔖_(4, 1, 2, 3)(x)

# Expand to a polynomial, or go the other way
Sx([3, 1, 2]).expand()                       # x_1**2
Sx.from_expr(x[1]**2 + x[1] * x[2])          # 𝔖_(2, 3, 1)(x) + 𝔖_(3, 1, 2)(x)

# Double Schubert polynomials S_w(x; y); coefficients are polynomials in y
DSx([1, 3, 2]) * DSx([1, 3, 2])
# (-y_2 + y_3)*𝔖_(1, 3, 2)(x; y) + 𝔖_(1, 4, 2, 3)(x; y) + 𝔖_(2, 3, 1)(x; y)

# Mixed variables: S_w(x; y) * S_v(x; z)
DSx([1, 3, 2]) * DSx([2, 1, 3], z)
# (y_1 - z_1)*𝔖_(1, 3, 2)(x; y) + 𝔖_(2, 3, 1)(x; y) + 𝔖_(3, 1, 2)(x; y)

# Quantum Schubert polynomials
QSx([2, 1, 3]) * QSx([2, 1, 3])              # q_1 + 𝕼𝔖_312(x)

# Quantum double Schubert polynomials
QDSx([2, 1, 3]) * QDSx([2, 1, 3])
# q_1 + (-y_1 + y_2)*𝕼𝔖_21(x; y) + 𝕼𝔖_312(x; y)

# Grothendieck polynomials (K-theory)
Gx([2, 1, 3]) * Gx([2, 1, 3])                # 𝔊_(3, 1, 2)(x)

# Double Grothendieck polynomials; .simplify() puts the rational coefficients in y, β in normal form
(DGx([1, 3, 2]) * DGx([2, 1, 3])).simplify()
# β*𝔊_(3, 2, 1)(x; y) + 𝔊_(2, 3, 1)(x; y) + 𝔊_(3, 1, 2)(x; y)
(DGx([2, 1, 3]) * DGx([2, 1, 3])).simplify()
# (y_1 - y_2)*𝔊_(2, 1)(x; y)   (y_1*β + 1)*𝔊_(3, 1, 2)(x; y)
# -------------------------- + -----------------------------
#         y_2*β + 1                      y_2*β + 1

# Permutations use one-line notation; Lehmer codes are available too
w = Permutation([3, 1, 4, 2])
w.code, w.inv, w.descents()                  # ([2, 0, 1], 3, {0, 2})

Ring objects: Sx (single), DSx (double), QSx/QDSx (quantum, quantum double), QPSx/QPDSx (parabolic quantum), Gx/DGx (single/double Grothendieck). Elements are dictionaries {Permutation: coefficient} with *, +, .expand(), .coproduct(), and change of basis between them. The underlying multiplication kernels live in schubmult.mult (single, double, quantum, quantum_double, groth, groth_double).

Command line

Each ring has a CLI. Permutations are space-separated, factors are separated by -:

schubmult_py 3 1 2 - 2 1 3                         # 1  (4, 1, 2, 3)
schubmult_py --code 2 0 - 1 0                      # same product via Lehmer codes
schubmult_double 1 3 2 - 1 3 2 --display-positive  # double Schubert, coefficients displayed positively
schubmult_q 2 1 3 - 2 1 3                          # quantum
schubmult_q_double 2 1 3 - 2 1 3 --parabolic 1     # parabolic quantum double
grothmult_py 2 1 3 - 2 1 3                         # Grothendieck
grothmult_double 2 1 3 - 2 1 3                     # double Grothendieck (coefficients in y and β)
grothmult_q 2 1 - 2 1                              # quantum Grothendieck (conjectural quantum K-Pieri rule; coefficients in q and β)
grothmult_q_double 2 1 - 2 1 --mixed-var           # quantum double Grothendieck (coefficients in y, z, q and β)

--display-positive writes double and quantum double coefficients as manifestly positive expressions in the differences y_i - z_j (Graham positivity), using integer programming to find a positive representative. Run any script with --help for the full option list.

Combinatorics

The schubmult.combinatorics package provides the objects that index Schubert calculus, with conversions between them:

  • Permutation -- one-line notation, Lehmer codes (uncode), reduced words, Bruhat order, descents, dominant/Grassmannian tests.
  • RCGraph -- reduced compatible sequences / pipe dreams, with enumeration (RCGraph.all_rc_graphs(w, n)), Kashiwara crystal operators (raising_operator(i), lowering_operator(i)), Edelman-Greene insertion, and the crystal products used in the transition formulas.
  • BPD -- bumpless pipe dreams with droop moves, the Gao-Huang bijection to RC graphs (BPD.from_rc_graph, .to_rc_graph()), and marked/unreduced variants for Grothendieck polynomials.
  • WCGraph, PipeDream, HPD -- K-theoretic and hybrid pipe dream models.
  • Tableaux -- Plactic (semistandard, jeu de taquin), NilPlactic (Edelman-Greene), RootTableau, IncreasingTableau, SetValuedTableau, HeckePlactic.
  • Forests -- indexed forests and the Thompson monoid factorization behind the forest and grove bases.
from schubmult import RCGraph, BPD, Permutation

w = Permutation([1, 4, 2, 3])
rcs = RCGraph.all_rc_graphs(w, 3)        # all RC graphs of w in 3 rows

rc = next(rc for rc in rcs if rc.lowering_operator(1) is not None)
rc.lowering_operator(1)                  # crystal operator f_1 (None when undefined)

bpd = BPD.from_rc_graph(rc)              # Gao-Huang bijection
assert bpd.to_rc_graph() == rc

Rings and algebras

Beyond the Schubert rings, schubmult.rings includes:

  • PolynomialAlgebra with interchangeable bases: monomials, Schubert, key (Demazure), Lascoux, fundamental/monomial slide, glide, forest, grove, Grothendieck, and elementary symmetric bases.
  • FreeAlgebra -- the graded dual of the polynomial algebra (a word (a_1, ..., a_n) is dual to x_1^a_1 ... x_n^a_n), with a dual basis for each of the above; ASx is the dual Schubert basis.
  • Combinatorial rings -- RCGraphRing, WCGraphRing, CrystalGraphRing, and related algebras whose basis elements are the combinatorial objects themselves.
  • Tensor and direct products, NSym, QSym, and the nil-Hecke algebra.
from schubmult import ASx, FA

ASx([2, 1, 3]) * ASx([1, 3, 2])   # dual Schubert basis of the free algebra
FA(1, 0) * FA(2)                  # word basis: concatenation, [102]

Symbolic layer

schubmult.symbolic wraps SymEngine and SymPy behind one interface (sympify, expand, Add, Mul, S), provides indexed variable families (GeneratingSet("x") gives x_1, x_2, ...), and unevaluated elementary/complete symmetric polynomial atoms (E, e, H, h) so Schubert polynomials can be manipulated in the SEM basis. schubmult.abc exposes ready-made x, y, z, q, beta in the spirit of sympy.abc.

Using with SageMath

Sage is not a dependency: everything above works in plain Python. If you do have Sage, install schubmult into that environment (sage -pip install schubmult, or pip install schubmult inside a conda sage env) and schubmult.sage provides Sage parents whose arithmetic is delegated to the kernels, alongside Sage's own SchubertPolynomialRing:

sage: from schubmult.sage import DoubleSchubertPolynomialRing, QuantumSchubertPolynomialRing
sage: X = DoubleSchubertPolynomialRing(QQ)
sage: X([3, 1, 2]) * X([2, 1])
(y_2-y_0)*X_y[3, 1, 2] + X_y[4, 1, 2, 3]
sage: X([3, 1, 2]).expand()
x0^2 - x0*y0 - x0*y1 + y0*y1
sage: G = QuantumSchubertPolynomialRing(QQ, parabolic=(2, 3))   # QH^*(Gr(2, 5))
sage: G([3, 5, 1, 2, 4]) * G([1, 3, 2])
q_0*Xq[1, 3, 2] + Xq[3, 6, 1, 2, 4, 5] + Xq[4, 5, 1, 2, 3]
sage: from schubmult.sage import DoubleGrothendieckPolynomialRing
sage: GD = DoubleGrothendieckPolynomialRing(QQ)                  # K_T of the flag variety
sage: GD([2, 1]) * GD([2, 1])
-((y_1-y_0)/(beta*y_1+1))*G_y[2, 1] + ((beta*y_0+1)/(beta*y_1+1))*G_y[3, 1, 2]
sage: from schubmult.sage import PolynomialAlgebra
sage: A = PolynomialAlgebra(QQ); k = A.key(); F = A.fundamental_slide()   # bases of QQ[x0, x1, ...]
sage: F(k[1, 0, 2])
F[1, 0, 2] + F[2, 0, 1]
sage: k(A.schubert()[3, 1, 2])
k[2]

DoubleSchubertPolynomialRing, QuantumSchubertPolynomialRing, QuantumDoubleSchubertPolynomialRing (with parabolic= block sizes), GrothendieckPolynomialRing, and DoubleGrothendieckPolynomialRing accept permutations, Sage polynomials, and elements of SchubertPolynomialRing and KeyPolynomials; a ring in another alphabet (DoubleSchubertPolynomialRing(QQ, 'z')) coerces in for mixed products, and from_symmetric_function(f, n) / to_symmetric_function() go back and forth with SymmetricFunctions. PolynomialAlgebra(R) (or PolynomialAlgebra(R, n) in n variables) is the polynomial ring with its combinatorial bases as mutually coercing realizations: Schubert and Grothendieck indexed by permutations, monomial/key/slide/forest/glide/Lascoux/grove by weak compositions, and in n variables the elementary symmetric basis; its K-theoretic bases are at beta = -1, whereas the Grothendieck rings keep beta as a variable. Variables are 0-indexed as in Sage (x0, y0, q0).

Documentation

Full API documentation, generated from the source docstrings, is at https://matthematics.github.io/schubmult/. To build it locally:

pip install -e ".[docs]"
python docs/generate_docs.py
mkdocs serve

Development

git clone https://github.com/matthematics/schubmult.git
cd schubmult
pip install -e .
pytest

Tests live in tests/; the script tests compare CLI output against stored JSON cases in tests/scripts/data. ruff check src/schubmult should pass.

License

GPL-3.0-or-later. See LICENSE.

Metadata

Release files for schubmult 5.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for schubmult 5.3.0
File Size Uploaded Provenance Actions
schubmult-5.3.0.tar.gz 1.1 MB With provenance Details for schubmult-5.3.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for schubmult 5.3.0
File Actions
schubmult-5.3.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for schubmult-5.3.0-cp314-cp314-win_amd64.whl
schubmult-5.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details for schubmult-5.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
schubmult-5.3.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details for schubmult-5.3.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
schubmult-5.3.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for schubmult-5.3.0-cp314-cp314-macosx_11_0_arm64.whl
schubmult-5.3.0-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details for schubmult-5.3.0-cp314-cp314-macosx_10_15_x86_64.whl
schubmult-5.3.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for schubmult-5.3.0-cp313-cp313-win_amd64.whl
schubmult-5.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details for schubmult-5.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
schubmult-5.3.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details for schubmult-5.3.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
schubmult-5.3.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for schubmult-5.3.0-cp313-cp313-macosx_11_0_arm64.whl
schubmult-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details for schubmult-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl
schubmult-5.3.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for schubmult-5.3.0-cp312-cp312-win_amd64.whl
schubmult-5.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details for schubmult-5.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
schubmult-5.3.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details for schubmult-5.3.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
schubmult-5.3.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for schubmult-5.3.0-cp312-cp312-macosx_11_0_arm64.whl
schubmult-5.3.0-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details for schubmult-5.3.0-cp312-cp312-macosx_10_13_x86_64.whl
schubmult-5.3.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for schubmult-5.3.0-cp311-cp311-win_amd64.whl
schubmult-5.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 Details for schubmult-5.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
schubmult-5.3.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 Details for schubmult-5.3.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
schubmult-5.3.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for schubmult-5.3.0-cp311-cp311-macosx_11_0_arm64.whl
schubmult-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details for schubmult-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl
schubmult-5.3.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for schubmult-5.3.0-cp310-cp310-win_amd64.whl
schubmult-5.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.24+ x86-64 Details for schubmult-5.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
schubmult-5.3.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.24+ ARM64, Linux glibc 2.28+ ARM64 Details for schubmult-5.3.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
schubmult-5.3.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for schubmult-5.3.0-cp310-cp310-macosx_11_0_arm64.whl
schubmult-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details for schubmult-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl

Total release size: 38.4 MB

Release files / schubmult-5.3.0.tar.gz

Download URL schubmult-5.3.0.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
28aecc055e0cb511b2028c2e2cb5a520ab6796ef27fb81fe5d6200a3a0f0ab09
BLAKE2b-256 checksum
How to use checksums
68ebb36683488bc183a894755b44723868c537efbcd7bdeb0d9c86a5671fc0fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp314-cp314-win_amd64.whl

Download URL schubmult-5.3.0-cp314-cp314-win_amd64.whl
Size 789.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
8a32f8d4ea7f817964ec99b9af81e7e33ef47b1fa541e8f685c7f83f335c0a15
BLAKE2b-256 checksum
How to use checksums
229ab838e48fbc46a13f4fe612a33577c4843081c53e2db9f925e7bd415f8def
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL schubmult-5.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.5 MB
Tags CPython 3.14 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bede33b083e67e51ff9a80ee3451f9293f2e6ca68f49fa12ab12750096d24a68
BLAKE2b-256 checksum
How to use checksums
183a7867e6cac49591f29dbf0852a546d1e5178a1242dd9e3806b5e5201b05bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL schubmult-5.3.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 2.5 MB
Tags CPython 3.14 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
607a1832abe5eb81c2765f3a920a96ac2f2330a8248da4bc46b910a12eddfc71
BLAKE2b-256 checksum
How to use checksums
0972c140a2d85b618ec969fa9a1b16dce5dc5c4d38cedd95eaf50a5e513f1e8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL schubmult-5.3.0-cp314-cp314-macosx_11_0_arm64.whl
Size 820.6 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c9a5691460f46cd54c015da509776d56470f82c9654b8a75c1889457be6fde27
BLAKE2b-256 checksum
How to use checksums
909543242eee14ad6f7514396b53842902273b8bd6706f30df56768c1e5f2b2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp314-cp314-macosx_10_15_x86_64.whl

Download URL schubmult-5.3.0-cp314-cp314-macosx_10_15_x86_64.whl
Size 822.6 kB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
2b087edcfee0d39b4b4f6c6b1df69fd30602117998a00c4c61baacbfe31fede0
BLAKE2b-256 checksum
How to use checksums
9ec81799f8af80c30546beda26c9479eee18ef203f41c8d4681996fc936c680b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp313-cp313-win_amd64.whl

Download URL schubmult-5.3.0-cp313-cp313-win_amd64.whl
Size 785.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
ce4b56efc8db56cd010befe3ae1d51ca3bddc66ee1a6ae5f19b00c3b42c5197e
BLAKE2b-256 checksum
How to use checksums
6d02a5ed6d88609e723c438aacb406f11ad552e6bd9bdc4ca106ffae40723e5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL schubmult-5.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.5 MB
Tags CPython 3.13 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d6bcaf847159035b58fe03bea603394d4c8a6d5a6532daa03c3c237290c7745d
BLAKE2b-256 checksum
How to use checksums
f54dde6e780a355c854ad9e9642de0e0b0aa39a44c75dff05d0545d10ed0b2c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL schubmult-5.3.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 2.5 MB
Tags CPython 3.13 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e3729fd774b7537b35359317bcf9adb719ffb35d4fbb8fb1b6b771fc519be119
BLAKE2b-256 checksum
How to use checksums
ec1b43f380a0f25ef8a7f6eb83a8257e036998d4c1aa91548891bb18f71ff63f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL schubmult-5.3.0-cp313-cp313-macosx_11_0_arm64.whl
Size 820.7 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
84dddbf8c160458a7c49523ede3f679b5eda3ad2a915b6663c1d6cf65452db53
BLAKE2b-256 checksum
How to use checksums
0ab6ab68bff5bd72e65a60a112076e659685f0b13bab9d24e7f24f788266a291
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl

Download URL schubmult-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl
Size 822.4 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
8dcb72524014a3a14b8153cca9f762d53fbe8d2ef014c248d72c293c3011360e
BLAKE2b-256 checksum
How to use checksums
02b1ee9fdd9f3eb1396ec9118aa3ef246e3cb56182a0eb6f17f84bb66bb25909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp312-cp312-win_amd64.whl

Download URL schubmult-5.3.0-cp312-cp312-win_amd64.whl
Size 785.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
fc6ba5cc8da424ebd952697ca7791110e080c1b5e334ab781a534278cd3612df
BLAKE2b-256 checksum
How to use checksums
c923a75008d2db7a5b294e5aa915ce08efc3de3b56dd163f641d56ad86c5c02c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL schubmult-5.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.5 MB
Tags CPython 3.12 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cf477e6ba71e0f6d5f1dd033e6c03d0d8a7212f9afbc922d54b4b96164a618b1
BLAKE2b-256 checksum
How to use checksums
ebc755ca23bc203bdeddec71cc46382161af423f0ffc6d8b30d20c14173d3f9d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL schubmult-5.3.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 2.5 MB
Tags CPython 3.12 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
6ef979eabc9de00b58787d5e9a57674cff579802572346571f6fa024481381ea
BLAKE2b-256 checksum
How to use checksums
65a8f8ce3cae27a4594e97ab23f071fb46aa14b8fdbb8e2309564d2d6568e196
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL schubmult-5.3.0-cp312-cp312-macosx_11_0_arm64.whl
Size 820.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f6ce4012d257ea3e439b0d6e566602c4e30118af62ee783b2bf9f4ae717c0cae
BLAKE2b-256 checksum
How to use checksums
cfddb519e4ebe668d53610afa6cbd3f57b778d84cbfbb87246fa948228ff3805
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp312-cp312-macosx_10_13_x86_64.whl

Download URL schubmult-5.3.0-cp312-cp312-macosx_10_13_x86_64.whl
Size 822.4 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
346c201fad2928ad38eb1c3fe4cf337962d54b325ba86fdae7c993180a25d138
BLAKE2b-256 checksum
How to use checksums
786d91bd727ec1a55abef44c58ed2a104c2606a8baf274f10e52664d7ea04313
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp311-cp311-win_amd64.whl

Download URL schubmult-5.3.0-cp311-cp311-win_amd64.whl
Size 785.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
b88ad6a3fa9a69d09f5d4e6b72c13e365c6655f8ca0c50f2235c89ec5ff289e1
BLAKE2b-256 checksum
How to use checksums
c2924d332fbb75f0b0d171abd1aeac63f7351e8f5805fa154ecf6cb0df51b6e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL schubmult-5.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.5 MB
Tags CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a90251a4a17a01d5905099a8646c350317ad2cbdd7e288fc1765dcea8cbf86c5
BLAKE2b-256 checksum
How to use checksums
aa1b44d3d004315b85bccfaea71f54a8e798f0cc13b10ad2d8c8dd11058a7267
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL schubmult-5.3.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 2.5 MB
Tags CPython 3.11 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1a867166302449b1ea4346e367bab4ed68a9817147c6861eba0f01ef05537b02
BLAKE2b-256 checksum
How to use checksums
06c5b46ffdff3775a4fcad1f2e3d963356f104ce29c2bcc84656c8ea958cc537
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL schubmult-5.3.0-cp311-cp311-macosx_11_0_arm64.whl
Size 822.3 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
14d6f35292d168596962961b706dd63e47559842583215aa00f510fe1f3317d6
BLAKE2b-256 checksum
How to use checksums
ec8f08acfdd965b9b4ee6a12098fc181ba05b72c92831ea1a4b19b2bf44b8d77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl

Download URL schubmult-5.3.0-cp311-cp311-macosx_10_9_x86_64.whl
Size 824.2 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
04fc25af983e10b4aeee218e073f72cff2f3e124673b3026eec20b32faef9051
BLAKE2b-256 checksum
How to use checksums
8f3030f16499a8ed6114d3a2de21bec198538e3a9bfe10f3cf179c0d47e8b388
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp310-cp310-win_amd64.whl

Download URL schubmult-5.3.0-cp310-cp310-win_amd64.whl
Size 785.8 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
c4c889c028477f83fca5d23c0f17486103b793c783fe4bb69cf3ac147a10c01b
BLAKE2b-256 checksum
How to use checksums
557a8dffb06e4431f0b9ff4a76d2b22d9283c44d8e0f37022fc566da5f8a78d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl

Download URL schubmult-5.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Size 2.5 MB
Tags CPython 3.10 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
af02c5de9d38668a87bd3b4ea7544fb4615a4b949288a1829ee5f9e3f16ad0c1
BLAKE2b-256 checksum
How to use checksums
6b29f8f79fd08bb4de45353f9b1f688a5c06778b648576aa97a2bce941822313
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl

Download URL schubmult-5.3.0-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Size 2.5 MB
Tags CPython 3.10 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c66f8a021d25cf5dc902c87cbff8cd2e06b52590041abd76e864b59a79cd2914
BLAKE2b-256 checksum
How to use checksums
6e4ba6f34e903a3704932bc81e46178f971cc618b081836e93a3873da3104f3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL schubmult-5.3.0-cp310-cp310-macosx_11_0_arm64.whl
Size 822.3 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b8774b516bbe8d2f7082689822a8ec7ee3b3c04ae3456683a97d9378f9837e28
BLAKE2b-256 checksum
How to use checksums
4e525911048cacc9fc548eece836d8c5589d9ffbd982b173ddc7df0b29dae45f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / schubmult-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl

Download URL schubmult-5.3.0-cp310-cp310-macosx_10_9_x86_64.whl
Size 824.2 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
94cf7085fafea89090892cb9bdf2f9b4afd941c8707d0e9bddc1fe609ac98c7e
BLAKE2b-256 checksum
How to use checksums
537350be321b1b6ef132ab047a35a6805731b726c15eb3d1a46ffdc14ccdb4ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for schubmult 5.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 26 files in this release have been uploaded with provenance metadata.

Select from 26 files

Attestation for schubmult-5.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

5.3.0 This release

26 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page