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. to_dsm_definitions().to_dsm() on a DefinitionsConst — what parse() returns, or definitions.const() for definitions built by hand — renders them back as DSM text, 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.30

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.30
File
dsviper-1.2.30-cp314-cp314-win_arm64.whl CPython 3.14 CPython 3.14 Windows ARM64 Details
dsviper-1.2.30-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
dsviper-1.2.30-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.30-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.30-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
dsviper-1.2.30-cp314-cp314-macosx_10_15_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.15+ x86-64 Details
dsviper-1.2.30-cp313-cp313-win_arm64.whl CPython 3.13 CPython 3.13 Windows ARM64 Details
dsviper-1.2.30-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
dsviper-1.2.30-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.30-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.30-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
dsviper-1.2.30-cp313-cp313-macosx_10_15_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.15+ x86-64 Details
dsviper-1.2.30-cp312-cp312-win_arm64.whl CPython 3.12 CPython 3.12 Windows ARM64 Details
dsviper-1.2.30-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
dsviper-1.2.30-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.30-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.30-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
dsviper-1.2.30-cp312-cp312-macosx_10_15_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.15+ x86-64 Details
dsviper-1.2.30-cp311-cp311-win_arm64.whl CPython 3.11 CPython 3.11 Windows ARM64 Details
dsviper-1.2.30-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
dsviper-1.2.30-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.30-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.30-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
dsviper-1.2.30-cp311-cp311-macosx_10_15_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.15+ x86-64 Details
dsviper-1.2.30-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
dsviper-1.2.30-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
dsviper-1.2.30-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
dsviper-1.2.30-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
dsviper-1.2.30-cp310-cp310-macosx_10_15_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.15+ x86-64 Details

Total release size: 97.6 MB

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

Download URL dsviper-1.2.30-cp314-cp314-win_arm64.whl
Size 2.8 MB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
4cf09001208600d2ff2d09d4d3d07308a787bd14bc50041d514a3abdea37efbc
BLAKE2b-256 checksum
How to use checksums
fc3b1063a10f17463a099676b9980767ea9a2da2a175c3b74df0d9fd4826f5a0
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp314-cp314-win_amd64.whl
Size 2.7 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
9970153c1988ae2d4eb67391f53b8922cbedf61966d07657b2a6b0a86583e137
BLAKE2b-256 checksum
How to use checksums
256fcd728fad7025c533327e96ca8549e16a573b8f89ccc63ce50274642f63f9
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-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
41cfa13691aeaebbb7f4f5e2736ea70facd14da77aabebcb14b7304b7b8393ce
BLAKE2b-256 checksum
How to use checksums
b1cbb0d803d1bec179f08baa18c6e376ee2884fe5b9e0b1f001ebf2914d9e7cf
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp314-cp314-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
600eb8696b8f3686a0a45a73c2cda368ce7d42f683b7c69de22debcef4650f1b
BLAKE2b-256 checksum
How to use checksums
d25ec845cd74acbe127fcfafbb8b2cccdf3f6afc244106cfd7f3560e22227d94
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-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
caf4118a9821a1a7649da97af033c52b1983a543e1decb00544595ab79869d90
BLAKE2b-256 checksum
How to use checksums
69b6d10fb3b805a79825da838f4fe97dd54bf9be44a9ec1fcc79fd993a211bbb
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp314-cp314-macosx_10_15_x86_64.whl
Size 3.1 MB
Tags CPython 3.14 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
b18e24a70b9c923c41dde599686cbaed2162ef1de0ce6d96d5d65b0ba4ad63fb
BLAKE2b-256 checksum
How to use checksums
4ce4599af25ee280be4cedfea5a6a4c0c0b37751f7a009b9f02af7178974602e
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp313-cp313-win_arm64.whl
Size 2.7 MB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
f5cc1fb10fc1334dc9bc63c2bd935f25e2c21a9e5b6e072e646ee0e3e1458e72
BLAKE2b-256 checksum
How to use checksums
9f7404d42258fb94b857d0f16f42f9d428a5d78e1ff61d962fd511312e7f5b4a
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp313-cp313-win_amd64.whl
Size 2.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
88c44d37702fcc9ef8dae2fba6d094b59b31d8396f770edca8540b5d0e8368b2
BLAKE2b-256 checksum
How to use checksums
799dcbf5e810d559fa9d6ce0397010ad76211603e24cc452b5519db49a9b894c
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-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
fbc5d8bacfa9c2cc0351afaac98207087b62bd03263bfbd9096814d3f9769b8d
BLAKE2b-256 checksum
How to use checksums
f1e824cddbf09215c22d51e2e0c94813089c64a34089b6899a919fcefa5f9c0e
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp313-cp313-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
fa57d36a2c75d489906175e70a1345ad97e25b4e1b44a329183b27dc4dc3b369
BLAKE2b-256 checksum
How to use checksums
a9af5161ab44ed7cf13358334ae056541712b72ccf29a5c0fe2fea6d2b4f9fb3
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-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
dcd67d96d9549b6f826d77e5ddec9fe4d953ad882858806058c1cf147a69fc4d
BLAKE2b-256 checksum
How to use checksums
aa3fd37fbf294fdedea0061f614154e238f3dc356bd36f60f8ac4475269bd7c2
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp313-cp313-macosx_10_15_x86_64.whl
Size 3.1 MB
Tags CPython 3.13 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
be02c783f757b0cbedc38ec357578d8843ee2d1e2768621a68d3ec837c0cdd31
BLAKE2b-256 checksum
How to use checksums
574943e80b270d4006fdd40d190aa87c713693325f4a31e1031491fd1995cf7d
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp312-cp312-win_arm64.whl
Size 2.7 MB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
bf6846337fe45bc1b74484a1c3803b48dcd8821f7e54e8450b96500796e2255d
BLAKE2b-256 checksum
How to use checksums
64c71e67d13e7a8b9b1954934bde5eeed173512994f44cde4bba1076d089c714
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp312-cp312-win_amd64.whl
Size 2.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
152d56cc3950a47b7129156774492ed0b284374290d91e5b60613bccf1860ce1
BLAKE2b-256 checksum
How to use checksums
23f6807fc657402c96db58c139e3367366ab668497ecfd90a573169ec7d39066
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-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
6be30ba64d9e471589f50a16a67620f8bde2abfa9426e37be0f565e1724bfb9c
BLAKE2b-256 checksum
How to use checksums
3f44a4a02ec30b02444f4ec328553187680e3715a96bf2596dd29db1247a7515
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp312-cp312-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
cbee442a0c45ab6ea83ee27a3108540c7fad50f54cffcee367ffff0c0fa23fde
BLAKE2b-256 checksum
How to use checksums
c1b25e16ba9136636f49452b937ba332cde26a4f3141be12710ab8f244ec5c49
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-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
1f2c669b0c71ff8efa4cf5497780f2645867c11844ffe5a60a41a97633c6b926
BLAKE2b-256 checksum
How to use checksums
520fca58d3c2952daf0a2913f9a4c5776c842affa20782b1ed968a6626d96f33
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp312-cp312-macosx_10_15_x86_64.whl
Size 3.1 MB
Tags CPython 3.12 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
69d5722a99b4e4fd2e3f4963ce29bb9e7683d25e60c19471d66289f045022944
BLAKE2b-256 checksum
How to use checksums
60cf5cbc55f2e1e09cdb1ead91051807e9d56963ff8f729103dc7e0589cd6ae2
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp311-cp311-win_arm64.whl
Size 2.7 MB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
45d3151cf232e00c03ddd2f70b667bcbc545f0b43e9dcf3754fbd73cd4421a6b
BLAKE2b-256 checksum
How to use checksums
b9422a0f081fb4b0cd9dbfe08367eb91edb18431d475dd501aa92ba737558f3e
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 10, 2026.

Transparency log

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

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

Transparency log

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

Download URL dsviper-1.2.30-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
ab8c6f0ddcd19bc9f88c1c4be3afeb8dadf4367f72b804dfc743bf68941ad081
BLAKE2b-256 checksum
How to use checksums
8c1f9a38faa6afecaae6c2b97df0ee6118115b897123becd83c5c805dd39c724
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp311-cp311-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
ddce3bb7b576cddf53e080a5f9f7e6c7c29db09b6a70c969bb4484ef86144202
BLAKE2b-256 checksum
How to use checksums
96c951cbea7d51c60d3730aa56843eae04968b9531c6023974d53492c8124eb1
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-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
8d9aa23a4d4ee8fed9d118b2bab2eac341dec4222263b01f380fb716d0d1f798
BLAKE2b-256 checksum
How to use checksums
b5a0a22e62d5b81a462719a3de3ea111d6bf3f155bb4800f8d2ca9f991fab8aa
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp311-cp311-macosx_10_15_x86_64.whl
Size 3.1 MB
Tags CPython 3.11 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
1d48e8ea70ce257fd337f4f3ad76b93c88d10ad4b1198176be5eaf0cf2b93249
BLAKE2b-256 checksum
How to use checksums
916eca35eaf046c95866bab68476f066c0982af7ff5bb9286494b03922aeaed2
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp310-cp310-win_amd64.whl
Size 2.6 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
641492d6cf5fc4ec48ac157ba8256ea589fff664e579f59c45d3fd417c7914ef
BLAKE2b-256 checksum
How to use checksums
0869b572a7783ecd6bc4a2bf1e1bb7be13799f6c171468ad85a392b6e1f547ea
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-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
c89923f99bad2e973052aa884590d31e7f11cb531de14a3883b3f3e6212064e8
BLAKE2b-256 checksum
How to use checksums
6a22a74b27e7738fb0f38fed76d247b3a29722183e224c5768db76a984911fba
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp310-cp310-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
baf53753d465b365ac930f995b218f63fb9e911c127541b96a7becac7f211132
BLAKE2b-256 checksum
How to use checksums
1dec29ea099bc1fb79039bb502b67be8dd5d468eb696c9148f3dfb9cfc74903c
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-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
edd1dbbe5d0c96caeefc9876735c736a55f3409fa8dd8d1305b504e6bbe7892d
BLAKE2b-256 checksum
How to use checksums
236a0028b13b04b05827e0d31dba8ebdc9c66d9cf2b7670cfc5631ef892228f8
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 10, 2026.

Transparency log

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

Download URL dsviper-1.2.30-cp310-cp310-macosx_10_15_x86_64.whl
Size 3.1 MB
Tags CPython 3.10 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
970a8ba5352b71bf35156474b31a5003916f3e4198d417938b8a3d0a9c63acf7
BLAKE2b-256 checksum
How to use checksums
c1c0e7b1dbb2856a5edfc2b525d4de60feeffa9abc7f383600d5fedfab39e7a2
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 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.30 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