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.2.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.2.0
File Size Uploaded Provenance
schubmult-5.2.0.tar.gz 1.1 MB With provenance Details

Built distributions (wheels)

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

Total release size: 38.4 MB

Release files / schubmult-5.2.0.tar.gz

Download URL schubmult-5.2.0.tar.gz
Size 1.1 MB
Tags Source
SHA-256 checksum
How to use checksums
0beea8100442b3bceef4a76a755b1910114e6377370ac9156e51e9d791c31189
BLAKE2b-256 checksum
How to use checksums
d4650b2d5409c0578c025f53d0869a0848ebe4eccf9466c111a1395e41e99105
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.0-cp314-cp314-win_amd64.whl
Size 789.1 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
3433e2af9c12e07ca753d9287954a16cdc53baae2aed0c2003736bc799947f42
BLAKE2b-256 checksum
How to use checksums
e0c482fab39a165c499d5fc751f57fe8bcc199275963742f9557dc07e0f39ca0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
e9d5bebc1dce258b4c67450de223b5ac301b80f3365a4c887e769a3cf4d28b02
BLAKE2b-256 checksum
How to use checksums
2a77f2589929f2769770dfdeccf5241221f36eabcb2b688ef4fbd0301844463b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
f85a6fab84d4ed064833f46297bbc5fded2fb2f4538838c5b9d712c22318dd31
BLAKE2b-256 checksum
How to use checksums
430e2abc69e06c975e76d646d60a865866d8aa2e039ac10cb7080fb6f34b0ed0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
833635f8b1eedcc1fad8f58c469c8dbdf353ddf44669ba7354f6f461adc94134
BLAKE2b-256 checksum
How to use checksums
a2707fb77b4d86215cfb888ed49439df5cbe3afeece927c6c057f15ee2b2d4ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
3703d17b522e03c28e25c30bd332b7a61ee81f3c48c4e1397c786461cfa4bbf1
BLAKE2b-256 checksum
How to use checksums
c30f2506bd6b6d3fbe84d1bf57ef1fb1d2505a2b4b15102fcb6ca32406b4728d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.0-cp313-cp313-win_amd64.whl
Size 785.5 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2b76bdde2be16e3ad099b569799fa4fe41674cc153f2de4599a5e53afbe165d4
BLAKE2b-256 checksum
How to use checksums
08f376fe4d35dcc172ce875797967d93d1cce03d83993cab93c2f4ba51d4f978
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
8d1c88a79696186278f60de1c98baafdbd21c2ea29130d77621729f8c3ab810a
BLAKE2b-256 checksum
How to use checksums
f6cc614f21f6153f419ebe730698075e72778821e7fac42c279ccb26bd53b1db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
c4e8d6efbbde5a44c1001796eb57b8a4237832ff26edf0e47c316a95ad5782b3
BLAKE2b-256 checksum
How to use checksums
eb8169353f27b35418602b9724f2fe80ab6979a2fee9b8dac639fd0ac3fe2ab5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
37d4d36b32c83766ee89a53a30d0dc8fce87bcd1d3987ee326c3d95e4aa264bc
BLAKE2b-256 checksum
How to use checksums
e7e61529dfebc42df3772f300d32b6c8bf4753367b274918833256cead865f83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
4dd76f6f3e223dd69e175768db37e56a7a157849a1c1ac5321c62dd15c08891e
BLAKE2b-256 checksum
How to use checksums
04a7b78cc43333c9b5811cbd16d95c70ffe60bbdbfd2f8af900151ba8e61bd0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

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

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
868847f734806d9774635e7500034176e09de27e74b152e9e43c11740339f24f
BLAKE2b-256 checksum
How to use checksums
cd843c2c71c22d23cb5dbd8c43e766c42d3ed7be2dbb91c4bea6861b6999e396
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
e007846af6501006f9865a4b196150e35f6706a080ebe26f93c20cb883af8096
BLAKE2b-256 checksum
How to use checksums
62eea29d318b6b0316fc9ac862746e621ca555d3a3324974bdb3f844f8d6447e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
332b270f012f691a3e1a2d7c2d1c939f1f7f2d31a3482e3ed8f1ebd66101df09
BLAKE2b-256 checksum
How to use checksums
1273674cc4f6dacd7750d582e0d8f42ebdbc739fe3ab78cdf3a530326f9c4b7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
17ade79d3b1b1692fc4df5ff7ffbaef616f86e21d387613c6305ab5bf5ecb0ef
BLAKE2b-256 checksum
How to use checksums
35d30423a12dab7d56440e9239bf6cb11787c873bd80ab7d2c24ae1c3d4ce5a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

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

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
0aa9a739e8137f8477e5f5de22a4a88fffc94036713a39b3ff4458e4afad2cfc
BLAKE2b-256 checksum
How to use checksums
22bf2fac84eee35683f6ce8cc9d9694db3c028e1a58cb0ba7d598bce9061316d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
2298b8b89922e62f76f057817ca88f769fd75ae4a5b7c0987ba20c5e941ae62e
BLAKE2b-256 checksum
How to use checksums
fd733311dcb195bb3919f3a52b0cfbe1ee89cf80b13c48d1db5fac7cb9f0c86a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
4599c7f15da847ece8a04b04a567256eb3106a0b2c9628ba32c2b64e0fc9afb2
BLAKE2b-256 checksum
How to use checksums
8ffadb0eab63f26c8eda7df2e3cb669f229f56b27f0473dfe81f855e7ac49682
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
4ebf3d0feca12dab4dfe7781f9520ea4bdcfe0d48626fa7316e8d0efaa6306c4
BLAKE2b-256 checksum
How to use checksums
ad755e443c545d0056a94821a5d42eb58665b6a4f8024b0cca9dcf614d2de5e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

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

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
034ce5bd1680126d593673f4bed3e6de146fb9daa6e724af1324c152a7ffc9f1
BLAKE2b-256 checksum
How to use checksums
3885eeb4f4c304ea703dd09a63f22bb2ededa45263da51109acb82a33e8006c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
583bbd9f21861fb4ac768664a6c6a176d2afe11600ecf8cb5ce69d91d370eece
BLAKE2b-256 checksum
How to use checksums
dfec4d99b8312c711dbcce4b4ef63c1677b5147898694b1c5e166cd1245c0a27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
70261a7de111ddeea03496784120d4839a1c0aac6d2103d3fc8169f9b0f0edc4
BLAKE2b-256 checksum
How to use checksums
c004057f36f925ec8a07f2b06c7d222c77e1614695f9e6622cf43ce6dd9d4627
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

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

Download URL schubmult-5.2.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
27487310c6f710022988270e3e90bfc7804b7ed57f66994125690b66ea634fd3
BLAKE2b-256 checksum
How to use checksums
f4fca0fff71cea844cbe22146b0806c58890b1584b7a8a386b75099b10f449d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 17, 2026.

Transparency log

Security for schubmult 5.2.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.2.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 17, 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.2.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