Skip to main content

dsviper — Digital Substrate Viper Runtime

dsviper is the Python extension module for Viper, a C++ runtime built around metadata-driven type and value systems. It provides a seamless bidirectional bridge between Python and Viper's strong-typed data model.

Key Features

  • Type & Value System — Dynamically construct types and instantiate strong-typed values with automatic Python ↔ C++ bridging.
  • Definitions — Define data models programmatically: concepts, structures, enumerations, attachments.
  • Two stores, and a way between them — CommitDatabase keeps every mutation as a commit; Database keeps only the current state and writes inside a transaction. Neither is a mode of the other, and DatabaseToCommitDatabaseConverter, CommitDatabaseToDatabaseConverter, DatabaseCopier and CommitDatabaseFlattener move documents and blobs between them, both ways.
  • Blob System — BlobArray reads a sealed blob as a flat array, and numpy.asarray() over it is a read-only view on the blob's own bytes: the dtype follows the layout with nothing to declare, and reshape(-1, blob_layout.components()) gives the elements, still without a copy. BlobArrayBuilder fills one the same way — copy(buffer) in a single call, or a writable view for in-place work. BlobPack carries structured binary data, and BlobStream writes a blob past 2 GB — read_blob reads one back in pieces, since blob() refuses them.
  • Codecs — Codec resolves the three stream codecs by name and says which to take, and what each keeps. Value also encodes to and from JSON and XML as text, and a structure to and from BSON.
  • Services — ServiceRemote calls the functions a service exposes, over TCP or a local socket. It is the client half only: the service is a C++ host that registers its function pools, run outside this package.
  • Showing it — Html renders a value, a type or a whole document as syntax-coloured HTML, and Html.style() supplies the stylesheet those classes need. DocumentNode presents a document as a tree of labelled rows that say their own type, which is what a viewer or an editor binds to.
  • Typed — ships its type hints (PEP 561): mypy and Pyright check your code against the classes, protocols and returns the binding actually has.

Quick Start

from dsviper import *

# Strong-typed value system
names = Value.create(TypeVector(Type.STRING))
names.extend(["alice", "bob"])
print(names)  # ['alice', 'bob']
print(names.type())  # vector<string>

names.append(42)  # ViperError: expected 'str', got 'int'

Commit Database

A complete example — define a model, create a versioned database, commit and query:

from dsviper import *

# Define a model dynamically
defs = Definitions()
# The namespace uuid is the model's lasting identity, so it is a literal:
# every type takes its runtime_id from it, and that is what lets a later
# run read what this one wrote.
ns = NameSpace(ValueUUId.create("6f9619ff-8b86-d011-b42d-00cf4fc964ff"), "App")
t_User = defs.create_concept(ns, "User")
d_Profile = TypeStructureDescriptor("Profile")
d_Profile.add_field("name", Type.STRING)
t_Profile = defs.create_structure(ns, d_Profile)
a_profile = defs.create_attachment(ns, "profile", t_User, t_Profile)

# Create a versioned database and commit data
db = CommitDatabase.create_in_memory()
db.extend_definitions(defs.const())

key = a_profile.create_key()
doc = Value.create(t_Profile)
doc.name = "Alice"

# initial_state starts the line; carry on from the commit_id each commit returns
state = CommitStateBuilder.initial_state(db)
mutable = CommitMutableState(state)
mutable.attachment_mutating().set(a_profile, key, doc)
commit_id = db.commit_mutations("Add Alice", mutable)

# The next change continues the same line
state = CommitStateBuilder.state(db, commit_id)
mutable = CommitMutableState(state)
mutable.attachment_mutating().set(a_profile, a_profile.create_key(), doc)
commit_id = db.commit_mutations("Add another", mutable)

# Query
got = CommitStateBuilder.state(db, commit_id).attachment_getting().get(a_profile, key)
# Optional({name='Alice'})

# Read a field. The optional holds a_profile.document_type(), which a type-checker cannot
# follow — the attachment is a runtime value — so the cast is what tells it. got.unwrap().name
# runs too, and mypy refuses it.
ValueStructure.cast(got.unwrap(encoded=False)).at("name")
# 'Alice'

Going back to initial_state for the second change would branch from the root instead, and the database would carry two heads — the first change is still there, on the other one, and nothing is raised. CommitStore holds that thread for you, and adds undo, redo and notification over it.

On disk

create_in_memory() above keeps the example self-contained. A database that outlives the process is the same object, opened differently:

db = CommitDatabase.create("project.cdb")     # refuses to overwrite an existing file
db.extend_definitions(defs.const())           # the schema is stored with the data
db.close()

db = CommitDatabase.open("project.cdb")       # raises when the file is not there
db = CommitDatabase.open("project.cdb", readonly=True)

Database takes the same three, and writes inside a transaction, keeping only the current state:

db = Database.create("project.db")
db.extend_definitions(defs.const())
db.begin_transaction()                        # 'Deferred' unless a mode is given
db.set(a_profile, key, doc)                   # the document is copied in
db.commit()
db.get(a_profile, key)                        # a copy: Optional({name='Alice'})
db.close()

The name and the extension are yours — the runtime reads neither, and applications pick their own. A file carries its own definitions, so reopening one needs nothing else: db.definitions() answers what it was written with, and extend_definitions adds to that.

Handed a file you did not write, ask before opening: CommitDatabase.is_compatible(path) and Database.is_compatible(path) answer whether it is an SQLite3 file carrying that store's tables. Both answer False rather than raising — for a missing file, for something that is not a database at all, and for the other store's file.

Undo and redo

CommitStore holds the thread of commits for you — it follows the head, so the chaining above is done on your behalf — and adds undo, redo and notification over it. Changes go through the store — its dispatch_* methods, or its own commit_mutations — and the undo stack tracks every commit the store makes; one made on the CommitDatabase directly is not on it.

from dsviper import *

defs = Definitions()
ns = NameSpace(ValueUUId.create("6f9619ff-8b86-d011-b42d-00cf4fc964ff"), "App")
t_User = defs.create_concept(ns, "User")
d_Profile = TypeStructureDescriptor("Profile")
d_Profile.add_field("name", Type.STRING)
t_Profile = defs.create_structure(ns, d_Profile)
a_profile = defs.create_attachment(ns, "profile", t_User, t_Profile)

db = CommitDatabase.create_in_memory()
db.extend_definitions(defs.const())
key = a_profile.create_key()

store = CommitStore()
store.use(db)                       # both attaches the database and moves onto its head

store.dispatch_set("Set Alice", a_profile, key, Value.create(t_Profile, {"name": "Alice"}))
store.dispatch_set("Set Bob", a_profile, key, Value.create(t_Profile, {"name": "Bob"}))

store.undo()          # back to Alice
store.undo()          # back to nothing
store.redo()          # Alice again
store.can_undo(), store.can_redo()

state = store.state()   # None only before use(db), or after store.close()
assert state is not None
state.attachment_getting().get(a_profile, key)   # Optional({name='Alice'})

Undo is not a rollback: nothing is removed, and the history keeps growing forward — each undo is itself a commit, labelled Undo [Set Bob], and each redo Redo [Set Bob]. Both answer Disable to commit_header(commit_id).commit_type(), where a change answers Mutations: the label says which call was undone, the type says what kind of commit it is. The whole DAG stays readable with CommitStateBuilder.state(db, commit_id).

DSM — the model as text

DSM is the human form of what Definitions, Type and Attachment build through the API. A namespace carries a name and a uuid, and holds the declarations:

namespace App {6f9619ff-8b86-d011-b42d-00cf4fc964ff} {
    concept User;
    struct Profile { string name; optional<uint32> age; };
    attachment<User, Profile> profile;
};

DSMBuilder().append("app.dsm", source) then parse() returns a report and the definitions — the same objects the API builds. A declaration is reached by name:

builder = DSMBuilder()
builder.append("app.dsm", source)
report, dsm_definitions, defs = builder.parse()
assert defs is not None, report.errors()             # None when the text has errors
a_profile = DefinitionsInspector(defs).check_attachment("App::User.profile")

That is the shape, not the whole language: a concept specialises another with is a, and clubs, memberships, enumerations, field defaults, doc comments and function pools — the functions a model declares — are written the same way.

You do not have to guess the rest. definitions.const().to_dsm_definitions().to_dsm() renders definitions you already hold back as DSM source, so the package shows you the syntax for your own model. The language is specified at docs.digitalsubstrate.io/dsm.

Installation

pip install dsviper

Requires Python ≥ 3.10. Pre-built wheels are provided for all supported platforms.

Supported Platforms

Platform 3.10 3.11 3.12 3.13 3.14
Linux x86_64 ✅ ✅ ✅ ✅ ✅
Linux aarch64 ✅ ✅ ✅ ✅ ✅
macOS arm64 (Apple Silicon) ✅ ✅ ✅ ✅ ✅
macOS x86_64 (Intel) ✅ ✅ ✅ ✅ ✅
Windows x64 ✅ ✅ ✅ ✅ ✅
Windows arm64 — ✅ ✅ ✅ ✅

Documentation

Full documentation at docs.digitalsubstrate.io/dsviper-python

License

Proprietary — Commercial license required. Contact Digital Substrate for licensing information.

Metadata

Release files for dsviper 1.2.29

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

Built distributions (wheels)

Table of built distributions (wheels) for dsviper 1.2.29
File
dsviper-1.2.29-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details
dsviper-1.2.29-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
dsviper-1.2.29-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.29-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.29-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
dsviper-1.2.29-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
dsviper-1.2.29-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details
dsviper-1.2.29-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
dsviper-1.2.29-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.29-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.29-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
dsviper-1.2.29-cp313-cp313-macosx_10_15_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.15+ x86-64 Details
dsviper-1.2.29-cp312-cp312-win_arm64.whl CPython 3.12 CPython 3.12 Windows ARM64 Details
dsviper-1.2.29-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
dsviper-1.2.29-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.29-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.29-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
dsviper-1.2.29-cp312-cp312-macosx_10_15_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.15+ x86-64 Details
dsviper-1.2.29-cp311-cp311-win_arm64.whl CPython 3.11 CPython 3.11 Windows ARM64 Details
dsviper-1.2.29-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
dsviper-1.2.29-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.29-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.29-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
dsviper-1.2.29-cp311-cp311-macosx_10_15_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.15+ x86-64 Details
dsviper-1.2.29-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
dsviper-1.2.29-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.29-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.29-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
dsviper-1.2.29-cp310-cp310-macosx_10_15_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.15+ x86-64 Details

Total release size: 96.8 MB

Release files / dsviper-1.2.29-cp314-cp314-win_arm64.whl

Download URL dsviper-1.2.29-cp314-cp314-win_arm64.whl
Size 2.7 MB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
8dda7f1d5f2cf9f20cdbfcdf036b1280565ff8e06a8ee75256153c3aa02114fb
BLAKE2b-256 checksum
How to use checksums
18651a0e2bb62db610fe34efc988167e0258a5873c5478cb55320a935da6e250
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp314-cp314-win_amd64.whl

Download URL dsviper-1.2.29-cp314-cp314-win_amd64.whl
Size 2.7 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
59d4e3e6a38b76dd1a07b1e34c0d5fec876c84766f7577c1386d5e214baab7bd
BLAKE2b-256 checksum
How to use checksums
8fbed1dbc792ba6ccf1f9f0aa5e8a2ad1f921f30f30e19b7fb79d739f18d3d59
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL dsviper-1.2.29-cp314-cp314-manylinux_2_28_x86_64.whl
Size 4.7 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5f2cc6334a927e33a1b6285e0583ca11979df1cff0addcc9f329f4bb3b874d0d
BLAKE2b-256 checksum
How to use checksums
e835ea80b2163ac23c1d056ed8097d652291e7b61f5955d252ef89f4137c042a
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL dsviper-1.2.29-cp314-cp314-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
dd1a9a51c32c342fb7cb30f7706837e54badb277343024fca1cec3a687ae7801
BLAKE2b-256 checksum
How to use checksums
5c6806b6285f656ef1d154ee8c649b75f6370aabf6ad5e6a09c6eef3cfee66b6
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp314-cp314-macosx_11_0_arm64.whl

Download URL dsviper-1.2.29-cp314-cp314-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dba0dd26d8b8f6bce8431ac3d14129315ceb116d0cb4d50b79e257552dd94396
BLAKE2b-256 checksum
How to use checksums
03a12245fcb89ed70fefaf4c709fefa92b8ea178e89e32b83b9da299f859117d
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp314-cp314-macosx_10_15_x86_64.whl

Download URL dsviper-1.2.29-cp314-cp314-macosx_10_15_x86_64.whl
Size 3.0 MB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
510a2ff95e56b88c7aea195fa57da3f70be9df395cf75cd7eac414458e9e9c64
BLAKE2b-256 checksum
How to use checksums
0445bd2b59e35bff06a0a82259e478a69aed116e72000659f530e4a26ad99cc9
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp313-cp313-win_arm64.whl

Download URL dsviper-1.2.29-cp313-cp313-win_arm64.whl
Size 2.7 MB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
e165536690b5bd96288fcdbefa1104ca0d84a53e126634d6ae87990585b06625
BLAKE2b-256 checksum
How to use checksums
aaf6d693634d341dd783d4b1c207cd24d827e47f179d6307975cd652ea105617
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp313-cp313-win_amd64.whl

Download URL dsviper-1.2.29-cp313-cp313-win_amd64.whl
Size 2.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
b87506c58b5b303b680ccb5bae7475ddde6d8de8c3ce0098c07eabc438d28997
BLAKE2b-256 checksum
How to use checksums
6c53676ce562d6c3b03861f0c72e1c5f0f0ae9f737bf4cd27f319d7894ec6e30
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL dsviper-1.2.29-cp313-cp313-manylinux_2_28_x86_64.whl
Size 4.7 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6caf53fe49d460a73f3b3ab18786d5f9ab4751ad5d85a0a978f7165c09077a3a
BLAKE2b-256 checksum
How to use checksums
2bc62a4a0d167e5795186b837fd0a14f4c07784c2aaccac8606606c3e3d97584
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL dsviper-1.2.29-cp313-cp313-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
7509d9414d8846c3e2792ab750cd5093a65cb96374c3b2b3f003c8f1204289ea
BLAKE2b-256 checksum
How to use checksums
54b5e6b21d943a7f5b9fe0ecba2bec2532e7a1a4284abb30b1051074fcda0399
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp313-cp313-macosx_11_0_arm64.whl

Download URL dsviper-1.2.29-cp313-cp313-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f050bcd82d7ccc65333149dafef48f9461151c9632c8309fc9e4ecaeb216ba39
BLAKE2b-256 checksum
How to use checksums
6599990a4efd585ebebe09d0a76f0f23c2c886325d63e9bef9bef655e6501893
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp313-cp313-macosx_10_15_x86_64.whl

Download URL dsviper-1.2.29-cp313-cp313-macosx_10_15_x86_64.whl
Size 3.0 MB
Tags CPython 3.13 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
46c1099409d5fc1f50a13d3c530770b4702f25e86d7d900781bd2239377574ae
BLAKE2b-256 checksum
How to use checksums
df41ec2dc3f8e42c480cebbba6dced607277de48b86b6be240b21d96de59a55f
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp312-cp312-win_arm64.whl

Download URL dsviper-1.2.29-cp312-cp312-win_arm64.whl
Size 2.7 MB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
f957f64dc53b313483008f243ea5b3ab9cec14cd9b6512a1b855c39be1b2df99
BLAKE2b-256 checksum
How to use checksums
1925081796f92840d839511e3a7e3e9aaa8d737f6470f7939392ec2b82ebcc18
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp312-cp312-win_amd64.whl

Download URL dsviper-1.2.29-cp312-cp312-win_amd64.whl
Size 2.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4621e04b5ef14a626044d8867461ec5eb036d80f62534c847ba747b1c29838c0
BLAKE2b-256 checksum
How to use checksums
cfea060b090f2d1de8e2e09eb9cecb24c39dda271520b9237474d7803636d016
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL dsviper-1.2.29-cp312-cp312-manylinux_2_28_x86_64.whl
Size 4.7 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5da911102aee6c381442b39ac4f02d8cf463a98d7b261ce88659a07117755f75
BLAKE2b-256 checksum
How to use checksums
e0c734d05dd2cec4880ae54429d1b914f49e78a00a520f536629a04f1191afaf
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL dsviper-1.2.29-cp312-cp312-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d6236360153d1460444410f475b5a23ed0b2ea89930698a5fa5d883149f0dad6
BLAKE2b-256 checksum
How to use checksums
96c1442af2b11e361c624196eca11dd65ecdd9378b0abe47dd1e14bc3197cf76
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp312-cp312-macosx_11_0_arm64.whl

Download URL dsviper-1.2.29-cp312-cp312-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
85543d4970a3f0918d8f584ae2af53daa1cfe4965945fce0c16734c9c148380a
BLAKE2b-256 checksum
How to use checksums
5809ea1cbd83e09bb9585a755664f91b90b29e6a530e40a29d8513eabfc5a740
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp312-cp312-macosx_10_15_x86_64.whl

Download URL dsviper-1.2.29-cp312-cp312-macosx_10_15_x86_64.whl
Size 3.0 MB
Tags CPython 3.12 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
f33885723aa674a12a88af86cc6094c59c5e3513230da6702b212529cf6cf52a
BLAKE2b-256 checksum
How to use checksums
3277e3a2a9995bd1514ed1246e3f4b03cddf12bc9dc0e5c4a2bbccc258222b7d
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp311-cp311-win_arm64.whl

Download URL dsviper-1.2.29-cp311-cp311-win_arm64.whl
Size 2.7 MB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
c891e2f04d9e160d86e61600c7f3e5c2bec0b74f3abe231a960a265e1bd7daf9
BLAKE2b-256 checksum
How to use checksums
b4934279e984b2114e56eda173158815617246205dd3c50ab7410a2a4f240ab1
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp311-cp311-win_amd64.whl

Download URL dsviper-1.2.29-cp311-cp311-win_amd64.whl
Size 2.6 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
5b685c163041869ba3c84f59ba363bc2658ab1ef2da23f244cdc2a9b7e5a443a
BLAKE2b-256 checksum
How to use checksums
aa9ffedc6f12b29ac50ce838bea9edcf0cbb60261f0b570a0aedc22ae14b1792
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL dsviper-1.2.29-cp311-cp311-manylinux_2_28_x86_64.whl
Size 4.7 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9a10f51c0e74618e7ed05dd153dee187d4f94b77fc31b0b1dce9249d09033c2c
BLAKE2b-256 checksum
How to use checksums
77adb7520ea269db168ea635842cc32705b1b6b32c3be926951d0cf1ae912db6
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL dsviper-1.2.29-cp311-cp311-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
dde8abb7ecdc4f846267aa30d864c29bf5f623044fe4b379a694a6c9ef228763
BLAKE2b-256 checksum
How to use checksums
cd308ff8e556b2acbefba0225e24a59400d12dc1405e9f7473927db4c9f34880
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp311-cp311-macosx_11_0_arm64.whl

Download URL dsviper-1.2.29-cp311-cp311-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0dbfc1fc5d9238733d8ab31404cd9919b7e1cedebe28ecb3ad22612b9bc37119
BLAKE2b-256 checksum
How to use checksums
0b963e04a92004c0a8b205622e1494dc65b5a6f1d098794aa30e5e258ed85ac5
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp311-cp311-macosx_10_15_x86_64.whl

Download URL dsviper-1.2.29-cp311-cp311-macosx_10_15_x86_64.whl
Size 3.0 MB
Tags CPython 3.11 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
eb1b57cdbdc1ab6432fa9dd73681616e7c06ad116fbdc63ddb2b56b42b3d4873
BLAKE2b-256 checksum
How to use checksums
435e32e06e9162e726a99b6100ece22358737f89f51714feb65619f91703fbda
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp310-cp310-win_amd64.whl

Download URL dsviper-1.2.29-cp310-cp310-win_amd64.whl
Size 2.6 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
10b0a9d94a8a962a843b9fdbdda522f66a415555f9c4369a30403fe158449102
BLAKE2b-256 checksum
How to use checksums
88c76849c9de86342126c3081ae4d1c0e10b234b577d57b6cb3ed9b5cd77410b
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL dsviper-1.2.29-cp310-cp310-manylinux_2_28_x86_64.whl
Size 4.7 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e337b53bbe2eb40bd6e1ac2460cbe15500aa651b2957470c2436b979df18edbb
BLAKE2b-256 checksum
How to use checksums
95ab316e928596ded6718b26c600db47d79a7b5ffbe21ce35046048a3eb8fa75
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL dsviper-1.2.29-cp310-cp310-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
685e672ce3bd9226b4f610187d037efcca67ed07f36a2dec62057008cf6bdd8b
BLAKE2b-256 checksum
How to use checksums
ac4338e9c6d2a0e12b7d2001d97fe1a74aca65b45acf43b28baaf8f13a94a0d2
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp310-cp310-macosx_11_0_arm64.whl

Download URL dsviper-1.2.29-cp310-cp310-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c6cc96e2fc6757203809dacb46129fbdde17e350201548597abf1c92266ae974
BLAKE2b-256 checksum
How to use checksums
e7106ea60fc00b8fad26ce36cfd89b1bde9f9dd6e09ec069b9fe93d9d5493060
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 5, 2026.

Transparency log

Release files / dsviper-1.2.29-cp310-cp310-macosx_10_15_x86_64.whl

Download URL dsviper-1.2.29-cp310-cp310-macosx_10_15_x86_64.whl
Size 3.0 MB
Tags CPython 3.10 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
d3ac95b2965a528f7c8c876b328ecd562e087fd72e62a009efd46c7f2abf9283
BLAKE2b-256 checksum
How to use checksums
bb8316f9ca9936f4db390462ba5e4e82e56a48ba5383701a7a2363310eb39961
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 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.29 This release

29 release files

1.2.7

29 release files

1.2.5

29 release files

1.2.0

30 release files

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