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 CommitDatabaseFromDatabaseConverter, CommitDatabaseToDatabaseConverter move documents and blobs between them, both ways; DatabaseCopier copies a Database into another, CommitDatabaseFlattener one commit of a CommitDatabase into another.
  • 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]. They answer Disable or Enable to commit_header(commit_id).commit_type(), where a change answers Mutations: an undo disables the change, a redo disables that undo, and an undo after a redo enables the first undo again. The label says which call was undone, the type what the commit does to the one it acts on. 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.31

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

Total release size: 98.9 MB

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

Download URL dsviper-1.2.31-cp314-cp314-win_arm64.whl
Size 2.8 MB
Tags CPython 3.14 Windows ARM64
SHA-256 checksum
How to use checksums
3dbc35fa09f019aaaa7228b24322bf23394f637809260bc17fa4a8170bba39ea
BLAKE2b-256 checksum
How to use checksums
09780c0fa0d9abdb81bcf9458c1e4c20180e52dd33124aa388cdee56583c77c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp314-cp314-win_amd64.whl
Size 2.7 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
07e827d134cb14aadaa2b1241ef15fbd09b08f7ba2db6882ed6d41a6f3db2c5e
BLAKE2b-256 checksum
How to use checksums
1d7bff0f3ce826897990f10debd817daa05944e90d25271c61104c9f08d7ad88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp314-cp314-manylinux_2_28_x86_64.whl
Size 4.8 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b87de7704a7effa8142efcf65ae4f1c9782e7bcc848d6e8a27dff1cc713bdd52
BLAKE2b-256 checksum
How to use checksums
489e21dd20ace9a62fda2800cf4f9859d12a4eae6dbca47b032842f90b98a768
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
039c23c3beada71e7523195929773bcab0303c975d85fb87f862d1e5f36cac35
BLAKE2b-256 checksum
How to use checksums
54564a915be493a7e73c0c327280fd09368b6efae7a6eace6fd4a14126ab5962
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp314-cp314-macosx_11_0_arm64.whl
Size 2.9 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
888029cc26cf2e76c0748ceaf386afb9018f1fd02e9a1e3d75d0ece2d5ecc424
BLAKE2b-256 checksum
How to use checksums
a2f183c0663f271398212fab184e1bc34058f28f7dcac6d2c6ebc3837c59ef33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
d09ceb1360f3d7bd4f43b31e753ed305f3d0cc0c6ba3e4c2773d3fc61194dc48
BLAKE2b-256 checksum
How to use checksums
6a78bea746f3fd52ae3cdb458ef4e228087e4cae37b52f1732437e38a2caca7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp313-cp313-win_arm64.whl
Size 2.7 MB
Tags CPython 3.13 Windows ARM64
SHA-256 checksum
How to use checksums
b1b60bfe115f422144f4e8e9e8f3b9ddd47765078b9b882885bf47fdc142a100
BLAKE2b-256 checksum
How to use checksums
3ac6bbcca8385f3fdc807852e371986d0cee2f50744badca5b253d7777792247
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp313-cp313-win_amd64.whl
Size 2.7 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
eee714e1497c215bf509a6420687341ad823645b4364c4def9af71b311e35451
BLAKE2b-256 checksum
How to use checksums
8469c40abe33ac9c12e9e4efcb180d43452a1517eb4498d00fa81428dd2e59b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp313-cp313-manylinux_2_28_x86_64.whl
Size 4.8 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0c120edae50c1459a6b2f15b81b70901773e5d4613a8964b7636abd630628b8c
BLAKE2b-256 checksum
How to use checksums
94e042c93b9692fdc3338dea43536dc2a7eab519807b4a173b571a16146ab567
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
cc31e3b7e1a12dad8c5f008702cff1a0609162983181ee41906c3a3bc6e39dd0
BLAKE2b-256 checksum
How to use checksums
e8ffb77dcbeddc0c078503cc410798f8f9641822298d80df4fb6b5dd60911c8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp313-cp313-macosx_11_0_arm64.whl
Size 2.9 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6c6819c3a12b6f0de81f11c746487270440997f17edb9e26415357bcd99159ca
BLAKE2b-256 checksum
How to use checksums
09b86dc8dc56e573f8b9145f36dde54679b61c509064fa54e085e3d2bfe62061
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
3faf86cf3ef39cd3a0718484fb5233bf1374ebbfdad79961f91c1502687f7cbf
BLAKE2b-256 checksum
How to use checksums
69f80e6eee2f9a271bcdad896950869dc7764077d13da7f60c4a2879bc7f4ca7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp312-cp312-win_arm64.whl
Size 2.7 MB
Tags CPython 3.12 Windows ARM64
SHA-256 checksum
How to use checksums
8c0877f95c75aadab3d5f82424b2fe5e5b318b5a81412e3e36f78bf8c7e48d75
BLAKE2b-256 checksum
How to use checksums
b76df66265e955dcdf1ccc7a00e1f3b27c368f9519f10849d476390e2fb97044
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp312-cp312-win_amd64.whl
Size 2.7 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
1ed0b5f723fa138565c190af2ccdf3bcf01757c3847d49261b34b000751c151e
BLAKE2b-256 checksum
How to use checksums
ab6ae1d48c30b3f8d65273dea375b99b098126b215ea28c2415d0d3af07d2f48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp312-cp312-manylinux_2_28_x86_64.whl
Size 4.8 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a11a7242b5abe60fe8780f096234d64013ac19ae5ec12f3cf4e0f080ac1b8e71
BLAKE2b-256 checksum
How to use checksums
83f2b26a83587be8fa84ea33403665d0bab1a500c0aea44ebe5797104fe31174
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
641fa710f0764780ab144d8ccf9841551eab17906ed3535399495243d1f94057
BLAKE2b-256 checksum
How to use checksums
8f9e7f758a14da06de148e07b2ef612a33c5683a940f346bf5ec16ff21669cbd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp312-cp312-macosx_11_0_arm64.whl
Size 2.9 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
66f6c61cadbc352b2c4d10bb77f619695a67a6228c14e8ed1df3c13b73855837
BLAKE2b-256 checksum
How to use checksums
c7fb9ffc00ec743df62ab3e0179a9ef41f10532c1cebcadd6f7fbe50185f4f44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
0629e0bc06c2acd7122ccc7a6ce06b8d193d1a6bc7759435fcc51e089c1b20d6
BLAKE2b-256 checksum
How to use checksums
a8ad9affd6e7c295c4d0bac3cdd6c99ffa20bc2fa6d0a228ca1f821b0fae57b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp311-cp311-win_arm64.whl
Size 2.7 MB
Tags CPython 3.11 Windows ARM64
SHA-256 checksum
How to use checksums
b132264c345246161d797bb4c4a31d7790ca4afe6117b87f3e63631a111c2018
BLAKE2b-256 checksum
How to use checksums
d8d4e697ad1c963a4d69f7de1d11c7657c3e7300631f8b55c8787d5754416594
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp311-cp311-win_amd64.whl
Size 2.7 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
91162e7deaca8d336c6ed6653353781e2a1a2c566c61147bb405c98c5bba49b9
BLAKE2b-256 checksum
How to use checksums
b43bbb2d01d00268e883c85ba83db304ef3058a7f86b0c68ccfb02ee515c24d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp311-cp311-manylinux_2_28_x86_64.whl
Size 4.8 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1db5426d830bcc623b3a691a15a1b4f19f842a9cf66ac3444a0c773070616681
BLAKE2b-256 checksum
How to use checksums
1a083746e8b3fa4e468785349adb5a84628ff20c11273b5ed1ba911c6c25b11d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
99052f597135ea39c30648c5534852a22b0445618cf70eea647646d1bf45b1cf
BLAKE2b-256 checksum
How to use checksums
5f1c0e9146ae84d15d24278a112b03bc01fbc081e3fed666f7cba80bf94cbc45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp311-cp311-macosx_11_0_arm64.whl
Size 2.9 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fb9c98fc330c10c04b25ce53e18a9bb1d83dd931a88b2783b3e8ed03b440a064
BLAKE2b-256 checksum
How to use checksums
c553fc10b5b2dbaf9bb8360f4ee69fadc0003f552de009326f2b57ad2d0bfa8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
36cf58ccf223e021c18dab10490774befadf3d8d500c8d485a92938f2badbea3
BLAKE2b-256 checksum
How to use checksums
21de16e5ba2c0bc4ce66e964a821a1253f2144307032c6c563a959da14cc30b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp310-cp310-win_amd64.whl
Size 2.7 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
10e7240df59a3c286ca08638c91e2004ea4e32c5a7f69e2d1b5c8db6d23eb07f
BLAKE2b-256 checksum
How to use checksums
aa301d3a1c2b027e3c92ba77e354a116e47a73bf2cbcc9eac56384fa08789738
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp310-cp310-manylinux_2_28_x86_64.whl
Size 4.8 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
de2ac2e34415d72b8e9d9fb91388f24e0aa269378ab731245d4ddc95c9a2475f
BLAKE2b-256 checksum
How to use checksums
5e65a5121b4901b94568c4c13fba9b09c4b2f92ce0dc6af2cea7e1820314b09f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
118d7f75d05cffa8d4ec8cc74ec0dad46943e5b8534786ba60db9cc322d87a60
BLAKE2b-256 checksum
How to use checksums
93e7f150f9bc19b092edb131d551d47cf79d4ec7105ada3640b8a4514768936c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-cp310-cp310-macosx_11_0_arm64.whl
Size 2.9 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f9368ac375a222abbabfa268edd0a7785ace982c4b38c98d46dede4b191b9a1e
BLAKE2b-256 checksum
How to use checksums
32999ba8ed3043c363435bb136240e0801f2596d2845434ff3b5fd7da8a7fbdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

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

Download URL dsviper-1.2.31-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
974b6c3f91f47d744e8f0ed62a3d67d83d84cef998acac822ada4aec2ba23276
BLAKE2b-256 checksum
How to use checksums
467dd72710db9bdd1e518f57ce8f1f7a9c3a4ef96ffa9a3b0e25919cceb19776
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 24, 2026.

Transparency log

Security for dsviper 1.2.31

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.

Full provenance

All 29 files in this release have been uploaded with provenance metadata.

Select from 29 files

Attestation for dsviper-1.2.31-cp314-cp314-win_arm64.whl

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 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.2.31 This release

29 release files Full provenance

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