Skip to main content

BasedPL

BasedPL, the Based-array Programming Language, is an APL-derived array language, borrowing ideas from J and BQN, with an emphasis on simple, consistent notation. Most of this documentation calls it BPL. It is implemented in Rust, with a native executable, Jupyter kernel and Python API.

For APL users, the main choices are:

  • Based arrays, as in BQN: numbers, characters and functions are atoms; enclosure always adds a layer.
  • Brackets write vectors, and spaces group: [a b c] is a vector, and a+b × c+d is (a+b)×(c+d). A run that ends in a function is a train, so +/÷≢ x is the mean of x, and 2× binds 2. Index ⌷ selects, so 0⌷v is the first item.
  • Leading-axis broadcasting, including expansion of length-1 axes, plus string keys and names on axes.
  • Exact integers and rationals alongside approximate real and complex numbers.
  • Dfns, trains and operators, with additions such as Under, iteration histories, windows and function arrays.

Positions and axes count from 0, as in BQN and Python. Approximate comparisons use tolerance 1E¯14. See the language principles for why BPL works this way, the glyph reference for Dyalog differences and the language rules for the array model.

Install and try it

pip install basedpl
bpl

At the prompt, define a mean and apply it:

avg←+/÷≢
avg 2 4 9
5

Use bpl -e 'avg←+/÷≢ ⋄ avg 2 4 9' for a shell command. The command-line guide covers source files and pipes.

Interactive use

In the REPL, type a backtick followed by a glyph name: `iota becomes ⍳ when you press Tab or type a non-letter. Abbreviations and Alt-key shortcuts are available. ]help + shows help; ]box on -style=max -trains=tree -fns=on enables boxed arrays and function trees. See REPL and the glyph reference, which lists each glyph’s key.

In Jupyter, select the installed BasedPL kernel. Cells share definitions and support completion, Shift-Tab help and interruption. You can also use %%bpl cells in a Python notebook. See Using BPL notebooks.

New to APL?

APL is a language built around operations on whole arrays and notation for combining functions. Here is a taste of that style in BPL.

Numbers separated by spaces form a vector. Arithmetic applies to every element:

10+1 2 3
11 12 13

Operators modify or combine functions. Reduce (/) turns addition into summation. ⍳10 generates 0…9:

+/⍳10
45

Functions can also be combined without naming their arguments. In avg←+/÷≢, sum (+/) divided by tally (≢) defines the mean:

avg 1 2 3 4
2.5

To see how these ideas express an algorithm, start from “a prime has exactly two positive divisors”. Form all remainders of 1 to 50 (|⊗⍨1+⍳50), count the zeros down each column (+⌿0=), and find the positions (⍸) whose count is two. Positions count from 0, so 1+ turns them back into numbers:

1+⍸2=+⌿0=|⊗⍨1+⍳50
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

Getting started builds this expression step by step, displaying the divisibility matrix along the way.

What’s distinctive?

Numbers

Bare numbers are approximate. Use x for exact integers and r for exact fractions:

1r3+1r6
1r2

Complex numbers use j between real and imaginary parts. Functions such as square root extend into the complex domain:

√¯4
0j2

See numbers for conversion and mixed arithmetic.

Array literals and broadcasting

Write matrix rows directly in an array literal. Leading-axis agreement lets a vector supply one offset per row:

m←[1 2 3 ⋄ 4 5 6]
m+10 20
11 12 13
24 25 26

See array notation and broadcasting.

Keys and named axes

Axes can have names, and positions along them can have string keys. Describe the axes once, then select by key or reduce by axis name:

axes←["city":["NY" "LA"] "month":["Jan" "Feb" "Mar"]]
sales←axes:[10 20 30 ⋄ 40 50 60]
"LA" "Feb"⌷sales
+/⍠"month" sales
50

["city":2]⍴["NY":60 "LA":150]

Keys and names travel with axes through operations such as transpose. Arithmetic aligns matching names and keys. See Axis keys.

Function operators

A vector of counts keeps the history: one state for each count, where count 0 is the initial value. Here, double up to four times:

2×⍣(⍳5) 1
1 2 4 8 16

Under (⌾) transforms the argument, applies a function, then reverses the transformation. Scale by ten, floor, and scale back to round down to tenths:

⌊⌾ 10× 1.25 2.78
1.2 2.7

Explore iteration and inverses, Under, windows and function selection.

Mathematical tools

Primes and factorisation are built in:

⨸360x
[2 2 2 3 3 5]ₓ

Polynomials support coefficients, roots and evaluation. Polynomial functions can be differentiated: for f(x) = 1 + 2x + 3x², f′(2) = 14.

f←[1 2 3]ₓ⌻ ⋄ f∂2x
14ₓ

Probability distributions provide sampling, density, CDF and quantiles. Two fair coin tosses give these probabilities for 0, 1 and 2 heads:

coin←•binomial 2 0.5
coin.density 0 1 2
0.25 0.5 0.25

Matrix division handles linear systems and least squares.

Data and text

JSON objects become keyed arrays, with dot access to their fields:

order←•json "{""price"":10.5,""qty"":2}"
order.price×order.qty
21

CSV headers likewise name column vectors. Files, CSV and JSON covers reading, transforming and writing data. Regex supplies matching, captures and replacement through Rust’s regex engine.

Drawing

•plot draws charts from arrays. Keys label the axes and name the lines. See Plots.

["legend":"end"]•plot sales

Build SVG from element functions and keyed attributes. Notebooks display the picture directly. The same element trees serialize to XML. See XML and SVG.

circle←•element "circle"
text←•element "text"
c←["cx":50 "cy":40 "r":25 "fill":"orange"]circle ""
t←["x":50 "y":85 "text-anchor":"middle"]text "Hello, SVG"
["width":240 "height":240]•svg [c t]

Python

BPL functions are Python callables:

from basedpl import fn

mean = fn('+/÷≢')
mean([1, 2, 3])

Arrays have .py, .np and .df conversions for Python values, NumPy and pandas. Functions also have Python names and composition operators. See the Python tutorial.

For other frontends, the process interfaces provide JSON messages and interruptible workers. The BPL library contains more algorithms, codecs, interpreters and puzzles.

Install from source

Requires Python ≥3.10 and Rust ≥1.98. On x86-64, it also requires a CPU with AVX2 (x86-64-v3). In your Python environment:

git clone https://github.com/AnswerDotAI/basedpl.git
cd basedpl
pip install .

For a standalone executable without Python, run cargo install --path .. Cargo installs it in its bin directory, normally ~/.cargo/bin. Put that directory on your PATH.

Contributing

Install the development and documentation tools with pip install -e '.[dev]'. The main commands are:

cargo test
cargo run -- -e '2×3+4'
cargo fastfmt
maturin develop
pytest
ship-rs-build

Rebuild with maturin develop after Rust changes, before checking the installed extension. Cargo tests alone don’t update the editable Python installation. Use cargo fastfmt, not cargo fmt.

Before a release, run python scripts/prep.py from the repository root. It checks the glyph reference against the interpreter’s glyph table, writes the syntax highlighters’ glyph lists, cleans and exports the notebooks, and renders this README.

Use lowercase j in complex literals throughout tests and examples, including adapted reference cases. Reserve uppercase J for explicit input-alias tests. Keep archived upstream source unchanged.

Write literal matrices in array notation, [10 20 30 ⋄ 40 50 60], not as a reshape, 2 3⍴10 20 30 40 50 60. Keep ⍴ where the example is about reshape.

Brackets are the usual way to write a list. A bare literal list, such as 1 2 3, is a shorthand. End an operand with a space, not with parentheses or ⊢. A space after an operator also makes the whole next run its operand, so ⌊⌾ 10× x needs no parentheses. Where a literal operand would run into the argument, a vector argument goes in touching brackets: f⍤1[2 3]. A single number goes in parentheses: f⍣¯2(5). Judge each line by how it reads, and report any case where none of these works.

A name applied to a literal touches it, as a glyph does: fib10 and 1+⌽f5. Write it that way where it’s shorter and needs no new parentheses. Keep the space where the literal would join the next part of the expression, or where a subject before the name is its left argument.

Read a selection with ⌷, as in [⍋v]⌷v, or with a subscript for one literal position, as in v₁. Use . for assignment targets, such as v.[i]←0, for record fields, such as T.name, and wherever ⌷ would be longer.

Metadata

Release files for basedpl 0.1.20

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

Source distribution (sdist)

Source distribution for basedpl 0.1.20
File Size Uploaded
basedpl-0.1.20.tar.gz 1.9 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for basedpl 0.1.20
File
basedpl-0.1.20-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
basedpl-0.1.20-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
basedpl-0.1.20-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
basedpl-0.1.20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
basedpl-0.1.20-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
basedpl-0.1.20-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
basedpl-0.1.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
basedpl-0.1.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
basedpl-0.1.20-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
basedpl-0.1.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
basedpl-0.1.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
basedpl-0.1.20-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 56.7 MB

Release files / basedpl-0.1.20.tar.gz

Download URL basedpl-0.1.20.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
6cdd6949fc0713b7022febe7a97c51b18eab483a363df863f0d7416b91c8ea42
BLAKE2b-256 checksum
How to use checksums
b0e0f53d189777f81e81bca2c0cf089522e431510afb8de27f3f88ac863cb26e
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL basedpl-0.1.20-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.1 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6c440bf2369e71f746e97ccf6b8bd31e2a6481d17d1dc7ec9b82af8923476f7d
BLAKE2b-256 checksum
How to use checksums
e4a3f02179960d866fa56a98308a7a303b1ff7f5ed5ab19d5ee75bee32a2b068
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL basedpl-0.1.20-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.4 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
fbe4c3fae72382003d1bf876fce0b40e644b555f63659a85d9e8e767f66f18ab
BLAKE2b-256 checksum
How to use checksums
3d2f67cc54dbc7bbb889ef4f95c80436f8042dec874577a9803c02e8299faf20
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp313-cp313-macosx_11_0_arm64.whl

Download URL basedpl-0.1.20-cp313-cp313-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a88aae14f834b01ce6a8ab5f8d65912728725d38877fb58571d8f78fef2e5c2d
BLAKE2b-256 checksum
How to use checksums
cc537db9b8daa5f86a624693bd4c8425eea11250308ff020d954486088e543aa
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL basedpl-0.1.20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.1 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6e88b5e82eb7d4deb77ca9cb2751d7dc6332fd3ea75f32c11851a91e04413250
BLAKE2b-256 checksum
How to use checksums
84ee43c41997503ec5097e48a269717359b763b9d9b0bfaac23a35d164c2e8f6
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL basedpl-0.1.20-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.4 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
0ce8b53dedfcdc47d202ad5acdc984f7b4532f06e0f772e917696e299cd303af
BLAKE2b-256 checksum
How to use checksums
c719cd02615933a5cab97af94b3f8f2e164b75c5ae3ea76a3c19e9f006486375
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp312-cp312-macosx_11_0_arm64.whl

Download URL basedpl-0.1.20-cp312-cp312-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
943d3933a55d9fef86bd6f91fe9ea2a3662b7a7ff4ad1b01ff8d348fda73da08
BLAKE2b-256 checksum
How to use checksums
41e6ef1e0d1dcce7335f3f7dd351339b3c47279acf7430b73aebc88ef1a4c6f8
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL basedpl-0.1.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.1 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
76a2d9cd83d4de2989092d29e0443cc49b0c0df7826410cc2687d8e274709b7e
BLAKE2b-256 checksum
How to use checksums
e57b903d28b13cb40fe42c3a5313b1b8f550803a9e8cdbaeff4ae0ab717817f8
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL basedpl-0.1.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.5 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
b21b45adf967385279f97d5a750731c23cdac5db25c6ab88f1ff6b0c0f9fd62e
BLAKE2b-256 checksum
How to use checksums
54e5da61b868391f8dbaf4aa2b6983d852061aa1a1095a9c6c18db1ca478f7c7
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp311-cp311-macosx_11_0_arm64.whl

Download URL basedpl-0.1.20-cp311-cp311-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4d9995aeb266871fdb42d40680b0d9b90853658b368e556191b3b0e74d58b9f6
BLAKE2b-256 checksum
How to use checksums
e77188ff01bf356b4ff53d96587491b477f5c4ba221694518226d611fcab8f60
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL basedpl-0.1.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.1 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
76ba9e82f1f04faa5bbc8c8b55c2f626c56c5cad29249fb5e1036808741f2b4d
BLAKE2b-256 checksum
How to use checksums
46ece5f73b5cd3c1733fdcad590e5b90dc7aaa5cfe79f99225718c1f57f8e51c
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL basedpl-0.1.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 4.4 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
722dd8c7080f804f0d4096f13472a15f503cc064ff31fecaf53e172624c6b65c
BLAKE2b-256 checksum
How to use checksums
1267f460f18e006b502c13c00239cbf7181a8ba792a4b71bbae2fe0dba713b16
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 3, 2026.

Transparency log

Release files / basedpl-0.1.20-cp310-cp310-macosx_11_0_arm64.whl

Download URL basedpl-0.1.20-cp310-cp310-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
749ac93f91ecad2d2af168e641c584d19a18cbdd146f4610619118bef7b877f0
BLAKE2b-256 checksum
How to use checksums
f5a2371d89dde17fb3e2e1bca04593a77184fcf1d13dad65d1d9bc3c34f50759
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 3, 2026.

Transparency log
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