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 —
CommitDatabasekeeps every mutation as a commit;Databasekeeps only the current state and writes inside a transaction. Neither is a mode of the other, andDatabaseToCommitDatabaseConverter,CommitDatabaseToDatabaseConverter,DatabaseCopierandCommitDatabaseFlattenermove documents and blobs between them, both ways. - Blob System —
BlobArrayreads a sealed blob as a flat array, andnumpy.asarray()over it is a read-only view on the blob's own bytes: the dtype follows the layout with nothing to declare, andreshape(-1, blob_layout.components())gives the elements, still without a copy.BlobArrayBuilderfills one the same way —copy(buffer)in a single call, or a writable view for in-place work.BlobPackcarries structured binary data, andBlobStreamwrites a blob past 2 GB —read_blobreads one back in pieces, sinceblob()refuses them. - Codecs —
Codecresolves the three stream codecs by name and says which to take, and what each keeps.Valuealso encodes to and from JSON and XML as text, and a structure to and from BSON. - Services —
ServiceRemotecalls 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 —
Htmlrenders a value, a type or a whole document as syntax-coloured HTML, andHtml.style()supplies the stylesheet those classes need.DocumentNodepresents 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)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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