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 dispatch_* rather than commit_mutations, and those are what the undo stack tracks.

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.28

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

Total release size: 96.6 MB

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

Download URL dsviper-1.2.28-cp314-cp314-win_arm64.whl
Size 2.7 MB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
df1e26018d3fd17bda3d114048c526e7088f133f4ef9e1b7805089d1dbed878e
BLAKE2b-256 checksum
How to use checksums
6fedb9d6c40db8569f678ad4be6ad16c488af2a48190be756a27284f3b37e8d3
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-cp314-cp314-win_amd64.whl
Size 2.7 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
1c4bd0b23712ed9649c9ae7abe764ffe7449ff9adbc9ce74e10586f5be3b7fed
BLAKE2b-256 checksum
How to use checksums
2becd17423ae9e08987750854e715b2bcebbcdc9b07a25f05f2af7ce9d4b09c8
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
f4457c5a3662e954f6a5317272fcb3e013436e1d92c4a18ba6ea8bc8dcdad968
BLAKE2b-256 checksum
How to use checksums
f9639e81e07dd75d404b3bc1d151fdd937bd0c46bd61ab1bf15e18b4758ceeac
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
622b7f1a6c838e7234d3fc74225d1ec4f0af58f47b2b6ebda0931111e9c92095
BLAKE2b-256 checksum
How to use checksums
f668e74cb189e7b252b346460eea1722e5a7bbf61966648368b3ca4e87e4b0f5
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
fc59619f37e5fb5f1bf266db8a049bf444d6937a3b3b6e1baa5f6b432e2fd075
BLAKE2b-256 checksum
How to use checksums
d4f92f3249bb3389aa6b58ca390c0037ec330efb392e27b6b52de8c41599fb12
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
78f039fe47b7e569b326de6c724d556b3c0469dcf6d9006e19dc8e51bba2ad2e
BLAKE2b-256 checksum
How to use checksums
4043aaa12799cc529a0084eca6a9d8d3f4cbd5c4d6cf03e3acec4252e7a793f7
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-cp313-cp313-win_arm64.whl
Size 2.7 MB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
790c53bd781459f6b09bcf91cbe52ac1a079a7b93537b892a85c7de8a0574bf1
BLAKE2b-256 checksum
How to use checksums
728f3838c24b8602a4a81a5fa5c492640d493f45eb58f47aadc2ad356a460f83
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-cp313-cp313-win_amd64.whl
Size 2.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
88276e89a214d48a8f85068c8840df2dcdb13ba7ede6b745ba70d03db740bd19
BLAKE2b-256 checksum
How to use checksums
ba75973f2c3a2a4a323ddce1e87f16851a8a6f95b0bff23ac60cff3cdfb6e794
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
f8df5b9aed8220db44707c7be60b5c75d064b76a6d76ed9f11387bf0d7b64758
BLAKE2b-256 checksum
How to use checksums
147843515f8102892234cf9c77c4a01cf5461e0b9051f4f0253822d8eab9b039
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
5fbefa6e90baeeb13fd52eb6ee2c6e95e8d32e610a666ccc3c3af116534e7b00
BLAKE2b-256 checksum
How to use checksums
bbe7bc2f450cdf15cfe59961515a5c46377b6d93cd545ae9c25745b101a06b0e
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
3400ec42167a146e5047a89d2e13617f03014d2f45407bdbeb5fa4760d1ca02f
BLAKE2b-256 checksum
How to use checksums
c960b0ce40a433bc31c885516f5c0673fbf6ace3d7c0345f5c68131d57d86748
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
08b0def209a07fe22fbcf2a61b65efe6ec11bb358da9ed5eeaee90c55e8a99e0
BLAKE2b-256 checksum
How to use checksums
7c3e88d478c45ade7be0583e766362495dd4bf4ace49f762fe8acfe47826b7a8
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-cp312-cp312-win_arm64.whl
Size 2.7 MB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
1eed09ab23f3c7972eeee5ce9589426c624e92278783ef4746beded0d6406385
BLAKE2b-256 checksum
How to use checksums
9a0071815eb6964c8f394c21f95a79d45a0982cef526c49b64a77c32a18d27f2
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-cp312-cp312-win_amd64.whl
Size 2.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
5114029883411a949ba4e818b02b7ef806cc0016a053ea605b518396be4c6918
BLAKE2b-256 checksum
How to use checksums
1f7861deaadd0aa413b68a3f1f4a9d0489e05db584c58a51debc75bb60f86008
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
917e9042fc740480a46f644f0d078800df3d55ea22d6acfa73d43fd8790dc374
BLAKE2b-256 checksum
How to use checksums
cc1c3c3f03d1d1d5994b6b1c642df74dd59f7d456794b6beb73f6431f2707105
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
3f03c60e7ebfa12250585f847fbc2cd40ab909aa04157872df9d44d9d36a727d
BLAKE2b-256 checksum
How to use checksums
2a709f01f1db8f94862def3537963a6bbbab8d3ff9f30bb4c089b3fb35430a83
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
a9f9e40cd4410a7d4581a8c7e47d15945306cd6a6eedd2d08547d3a1b1308802
BLAKE2b-256 checksum
How to use checksums
6f668c080a51abf4a3daa294ccd560a9d48c3bb323cc074849402bff93c9cefb
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
d804f859412d3c45d5fdfea7c3db368190d134c6eee96488acdfecdd33d8892d
BLAKE2b-256 checksum
How to use checksums
75084988e23e07d045ce9c548ac8cdf2a67d8a35316642cc02d1fd7695918fdd
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-cp311-cp311-win_arm64.whl
Size 2.7 MB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
3c9652b5ee74a6b4719e3d06dc5209b9591ef90a8c02b56a35f2cff2c7ddbeea
BLAKE2b-256 checksum
How to use checksums
1df967a2d66bc543ad96e6a1d5af2f1c4a427ea66e4d62194c72db8dd0eecd19
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-cp311-cp311-win_amd64.whl
Size 2.6 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
1923937423e75130a6e7c29ce4b63dbfb6c16219cff84331b7d44d807c1f0b22
BLAKE2b-256 checksum
How to use checksums
b4859a1d8f96b2b6f908c4ffb522d14dd1452d737245ff3d68dec319044c6224
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
c522ab14df177066028de5f726952ad95ef0807a6bcdec553cef3dcc73e97191
BLAKE2b-256 checksum
How to use checksums
ddbf3dd29563d2f3dd860a7229a204f9cc491b95edced49e52645aade452bdb1
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
d5a903512798bfc01ec14cbd48aa7eeab537ade08ac84c23aea55b9f0429ee2d
BLAKE2b-256 checksum
How to use checksums
be219de47613ea163986de9c2b2a95b1b549bd7f91622e965367582bee51dc4c
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
644ab67c94f546c7bfe612547eb60450e99d21f5728cfb9de8ba1c75a345e778
BLAKE2b-256 checksum
How to use checksums
c7ed602efb93de558f82026d2d7820ef867d13353bbda10c5cebc4f55739dfce
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
07754beaf884326813604af6fe3261555e5711900afc6a27594c933a996983dd
BLAKE2b-256 checksum
How to use checksums
16133c5988b75c5f908e24eecee146b0cf4a20918cbe45c249f92aa14368f2c2
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-cp310-cp310-win_amd64.whl
Size 2.6 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
327fb817d7c049815526b0e84c6dac3af7ba17b3dd4bdec451d9f6005e97e3b8
BLAKE2b-256 checksum
How to use checksums
d2c1dcd85185e7fe9a6f7be4f457c4e68a0e61600a141a193ab502b53fbbf758
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
f21bcc55e423d9be75889c58eae1aa33402fb80b8b704abfa1df68bb583e04e6
BLAKE2b-256 checksum
How to use checksums
6fdbf82a30afe3a37b9ceb2e73bd44c76cdaeb631c48d20df7db9e9dbf45160c
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
0a785d174b05a8f03402ca54b21775db3fa99d40df3933426079cf285c7f5ee9
BLAKE2b-256 checksum
How to use checksums
bdad1fb67396b0fc7f6694158fc2be83b1dd57346d22cb6efc2c2d08f68955e9
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
823ea157bb2c8f78d2151450f5fed22c853f5dc21470ce927f15b7f7fc6041fe
BLAKE2b-256 checksum
How to use checksums
c3d3db9e898d281dd2d0ed4c2d9112d7a8be2c473c3bb4619c6fd3b39a555b3d
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 Sep 28, 2026.

Transparency log

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

Download URL dsviper-1.2.28-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
de453da449f283b6d76508546225ed746863408ad9becd694e2a1a2f158af964
BLAKE2b-256 checksum
How to use checksums
e322772ef468a97b45e082b4225dfd40847ab59a1dc58438c746b097fafe421a
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 Sep 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.28 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