Skip to main content

Python bindings for Velr, an embedded openCypher graph database built on SQLite

Project description

Velr

Velr is an embedded property-graph database from Velr.ai, written in Rust, built on top of SQLite (persisting to a standard SQLite database file) and queried using the openCypher language.

It runs in-process and is designed for local, embedded, and edge use cases.

This package provides the Python bindings for Velr. It wraps a bundled native runtime with a C ABI, implemented in Rust, and exposes a small, Pythonic API for executing Cypher queries, streaming result tables, working with transactions, and exporting results to Arrow, pandas, and Polars.

For the main Velr public entry point, see velr-ai/velr.
For the Velr website, see velr.ai.

Community

We’d love to have you join the Velr community.


Release status

Velr is currently in public alpha.

  • The Python API and query support are still evolving.
  • openCypher coverage is already substantial, but some features are still missing.
  • During the 0.2.x series, we do not guarantee database migration or on-disk database compatibility between releases.
  • Velr 0.2.14 includes a breaking on-disk storage change; existing databases from earlier releases must be recreated by re-importing the source data.
  • Starting with the 0.3.x series, we intend to guarantee internal database compatibility within the branch.

Schema version 5 compatibility

This release's current on-disk schema is version 5. Supported older databases can be opened with Velr.open() or Velr.open_readonly() without changing the file. Reads continue to work on those databases, but writes (CREATE, MERGE, SET, DELETE, DETACH DELETE, and other mutating queries) are only available after migrating to schema version 5. This is intentional: migration is an explicit maintenance operation, not a side effect of opening a database.

Velr is already usable for real workflows and representative use cases, but rough edges remain and the API is not yet stable.

Velr 1.0 is focused on strong openCypher compatibility.
Vector search, time-series, and federation are planned as post-1.0 capabilities.


Installation

Install from PyPI:

pip install velr

For Arrow / dataframe workflows, install the optional Python dependencies you want to use:

pip install pyarrow pandas polars

Licensing in simple terms

  • The Python binding source code in this package is licensed under MIT.
  • The bundled native runtime binaries may be used and freely redistributed in unmodified form under the terms of LICENSE.runtime.

Quick start

from velr.driver import Velr

MOVIES_CREATE = r"""
CREATE
  (keanu:Person:Actor {name:'Keanu Reeves', born:1964}),
  (nolan:Person:Director {name:'Christopher Nolan'}),
  (matrix:Movie {title:'The Matrix', released:1999, genres:['Sci-Fi','Action']}),
  (inception:Movie {title:'Inception', released:2010, genres:['Sci-Fi','Heist']}),
  (keanu)-[:ACTED_IN {roles:['Neo']}]->(matrix),
  (nolan)-[:DIRECTED]->(inception);
"""

with Velr.open(None) as db:
    db.run(MOVIES_CREATE)

    with db.exec_one(
        "MATCH (m:Movie {title:'Inception'}) "
        "RETURN m.title AS title, m.released AS year, m.genres AS genres"
    ) as table:
        print(table.column_names())

        with table.rows() as rows:
            row = next(rows)

    title, year, genres = row
    print(title.as_python())
    print(year.as_python())
    print(genres.as_python())

Open a file-backed database instead of an in-memory database:

from velr.driver import Velr

with Velr.open("mygraph.db") as db:
    db.run("CREATE (:Person {name:'Alice'})")

Open an existing database for reads only:

from velr.driver import Velr

with Velr.open_readonly("mygraph.db") as db:
    with db.exec_one("MATCH (n) RETURN count(n) AS count") as table:
        print(table.collect(lambda row: [cell.as_python() for cell in row]))

open_readonly() never creates, initializes, migrates, or repairs a database. The file must already exist and have a supported Velr schema version. Older supported databases, such as schema version 3 or 4 databases opened by a schema version 5 runtime, remain available for reads. Writes and features that require schema version 5 fail with a normal query error until the database is explicitly migrated.


Schema migration

Velr does not migrate supported older databases automatically on open. Use the driver migration API, or run MIGRATE DATABASE, from maintenance code when you intend to update the on-disk schema. See the release-status note above for the schema version 5 read/write compatibility behavior.

from velr.driver import Velr

with Velr.open("mygraph.db") as db:
    if db.needs_migration():
        report = db.migrate()
        print(report.status, report.from_version, report.to_version, report.steps)

The equivalent Cypher command is useful for scripts and tools that already work through query execution:

from velr.driver import Velr

with Velr.open("mygraph.db") as db:
    with db.exec_one("MIGRATE DATABASE") as table:
        print(table.collect(lambda row: [cell.as_python() for cell in row]))

Introspection

Use SHOW CURRENT GRAPH SHAPE to inspect the observed schema of the graph. It reports the shape present in stored data: node labels, relationship types, properties, observed value types, and counts. It is an observed shape surface, not a declared GQL graph type.

SHOW CURRENT GRAPH SHAPE is available on schema version 5 databases. Older supported databases can still be opened for reads, but must be migrated explicitly before this command is valid. Schema version 5 maintains this inventory through the write planner instead of persistent graph-shape triggers.

The default projection returns element_kind, element_name, property_name, observed_type, owner_count, present_count, and missing_count. YIELD * exposes the full row shape, including surface, source_label, target_label, required, storage_class, and tag.

from velr.driver import Velr

with Velr.open("mygraph.db") as db:
    with db.exec_one(
        """
        SHOW CURRENT GRAPH SHAPE
        YIELD element_kind, element_name, property_name, observed_type, owner_count
        WHERE element_kind = 'node_property'
        RETURN element_name, property_name, observed_type, owner_count
        """
    ) as table:
        with table.rows() as rows:
            for row in rows:
                print([cell.as_python() for cell in row])

Use YIELD to compose the command with WHERE and RETURN. Plain SHOW CURRENT GRAPH SHAPE returns the default projection; YIELD * exposes the full current row shape.


Query model

A query may produce zero or more result tables.

Velr exposes three main ways to run Cypher:

  • run() executes a query or script and drains all result tables.
  • exec() returns a stream of result tables.
  • exec_one() expects exactly one result table.

run()

Use run() when you only care about side effects:

with Velr.open(None) as db:
    db.run("CREATE (:Movie {title:'Interstellar', released:2014})")

exec_one()

Use exec_one() when the query should yield exactly one table:

with Velr.open(None) as db:
    db.run("CREATE (:Person {name:'Alice', age:30})")

    with db.exec_one("MATCH (p:Person) RETURN p.name AS name, p.age AS age") as table:
        print(table.column_names())
        print(table.collect(lambda row: [cell.as_python() for cell in row]))

exec()

Use exec() when a query or script may produce multiple result tables:

with Velr.open(None) as db:
    db.run(MOVIES_CREATE)

    with db.exec(
        "MATCH (m:Movie {title:'The Matrix'}) RETURN m.title AS title; "
        "MATCH (m:Movie {title:'Inception'}) RETURN m.released AS released"
    ) as stream:
        for table in stream.iter_tables():
            print(table.column_names())
            print(table.collect(lambda row: [cell.as_python() for cell in row]))

Table lifetime and ownership

Table lifetime depends on how a table was obtained.

Tables from exec()

Tables pulled from exec() are stream-scoped.

They remain valid while the producing stream remains open, and closing the stream closes any still-open tables produced by that stream.

with db.exec("MATCH (n) RETURN n") as stream:
    table = stream.next_table()
    # table is valid here

# stream is now closed, so any still-open table from it is also closed

Tables from exec_one()

Tables returned by exec_one() are parent-scoped, not stream-scoped.

  • Velr.exec_one() returns a table parented to the connection.
  • VelrTx.exec_one() returns a table parented to the transaction.

That means the returned table remains usable after the internal stream logic used by exec_one() has finished.

Even so, tables should still be closed when no longer needed, ideally by using them as context managers.


Rows and cells

Rows are exposed through Rows. Each yielded row is a tuple of Cell objects.

Cell.as_python() converts values to normal Python objects:

  • NULLNone
  • BOOLbool
  • INT64int
  • DOUBLEfloat
  • TEXTstr by default
  • JSONstr by default, or parsed Python objects with parse_json=True

Example:

with db.exec_one("MATCH (p:Person) RETURN p.name AS name, p.age AS age") as table:
    with table.rows() as rows:
        for row in rows:
            print(row[0].as_python(), row[1].as_python())

For convenience and safety, TEXT and JSON payloads are copied into Python bytes as rows are read, so row contents remain valid after the next fetch.


Transactions and savepoints

Use begin_tx() to open a transaction:

from velr.driver import Velr

with Velr.open(None) as db:
    with db.begin_tx() as tx:
        tx.run("CREATE (:Movie {title:'Interstellar', released:2014})")
        tx.commit()

If a transaction context exits without commit(), it is rolled back.

After commit() or rollback(), a transaction can no longer be used.

Savepoints

Velr supports two savepoint styles:

  • savepoint() creates a scoped, handle-owned savepoint.
  • savepoint_named(name) creates a transaction-owned named savepoint.

Scoped savepoints are owned by the Python handle:

  • dropping the handle closes the savepoint
  • release() releases it
  • rollback() rolls back to it and releases it

Named savepoints are owned by the transaction:

  • dropping the returned Python handle does not remove the named savepoint
  • rollback_to(name) rolls back to that named savepoint, discards any newer named savepoints, and keeps the target named savepoint active
  • release_savepoint(name) releases a named savepoint by name; the named savepoint must be the most recent active named savepoint
  • release() or rollback() on a named savepoint handle consume that named savepoint

Active named savepoints are released automatically during commit() so that surviving changes are preserved in the committed transaction.

Example:

with Velr.open(None) as db:
    with db.begin_tx() as tx:
        tx.run("CREATE (:Temp {k:'outer'})")

        tx.savepoint_named("sp1")
        tx.run("CREATE (:Temp {k:'a'})")

        tx.savepoint_named("sp2")
        tx.run("CREATE (:Temp {k:'b'})")

        tx.rollback_to("sp1")  # undoes a and b, drops sp2, keeps sp1 active
        tx.run("CREATE (:Temp {k:'c'})")

        tx.release_savepoint("sp1")
        tx.commit()

pandas / Polars / PyArrow interop

Velr can export result tables as Arrow IPC and convert them into:

  • pyarrow.Table
  • pandas.DataFrame
  • polars.DataFrame

pandas

with Velr.open(None) as db:
    db.run(MOVIES_CREATE)

    df = db.to_pandas(
        "MATCH (m:Movie) "
        "RETURN m.title AS title, m.released AS released "
        "ORDER BY released"
    )
    print(df)

Polars

with Velr.open(None) as db:
    db.run(MOVIES_CREATE)

    df = db.to_polars(
        "MATCH (m:Movie) "
        "RETURN m.title AS title, m.released AS released "
        "ORDER BY released"
    )
    print(df)

PyArrow

with Velr.open(None) as db:
    db.run(MOVIES_CREATE)

    tbl = db.to_pyarrow(
        "MATCH (m:Movie) "
        "RETURN m.title AS title, m.released AS released "
        "ORDER BY released"
    )
    print(tbl)

Export from an existing table

with db.exec_one("MATCH (m:Movie) RETURN m.title AS title") as table:
    pa_tbl = table.to_pyarrow()
    df = table.to_pandas()
    pl_df = table.to_polars()

Binding Arrow, pandas, Polars, NumPy, and records

Velr can also bind external columnar data under a logical name and query it from Cypher.

Supported bind helpers include:

  • bind_arrow()
  • bind_pandas()
  • bind_polars()
  • bind_numpy()
  • bind_records()

Bind a pandas DataFrame

import pandas as pd
from velr.driver import Velr

df = pd.DataFrame(
    [
        {"name": "Alice", "age": 30},
        {"name": "Bob", "age": 41},
    ]
)

with Velr.open(None) as db:
    db.bind_pandas("_people", df)

    db.run("""
    UNWIND BIND('_people') AS r
    CREATE (:Person {name:r.name, age:r.age})
    """)

    out = db.to_pandas("MATCH (p:Person) RETURN p.name AS name, p.age AS age ORDER BY age")
    print(out)

Bind a list of dicts

rows = [
    {"name": "Alice", "age": 30},
    {"name": "Bob", "age": 41},
]

with Velr.open(None) as db:
    db.bind_records("_people", rows)
    db.run("""
    UNWIND BIND('_people') AS r
    CREATE (:Person {name:r.name, age:r.age})
    """)

Explain support

Velr exposes explain traces through:

  • Velr.explain()
  • Velr.explain_analyze()
  • VelrTx.explain()
  • VelrTx.explain_analyze()

These return an ExplainTrace, which can be navigated incrementally or fully materialized with snapshot().

with Velr.open(None) as db:
    with db.explain("MATCH (p:Person) RETURN p.name AS name") as xp:
        print(xp.to_compact_string())

Query language support

Velr supports most of openCypher, but some features are not yet implemented.

Notable current limitations:

  • Driver-level query parameters (for example $name)
  • The query planner does not yet use indexes in all cases where expected.

Supported functions

Velr currently supports these openCypher functions and constructors:

Graph and path

  • id()
  • type()
  • labels()
  • keys()
  • properties()
  • length()
  • nodes()
  • relationships()

Lists and predicates

  • size()
  • head()
  • last()
  • tail()
  • reverse()
  • range()
  • all()
  • any()
  • none()
  • single()

Strings and conversion

  • coalesce()
  • toInteger()
  • toString()
  • toLower()
  • trim()
  • substring()
  • split()

Numeric

  • abs()
  • ceil()
  • rand()
  • sign()
  • sqrt()

Temporal

  • date()
  • time()
  • localtime()
  • datetime()
  • localdatetime()
  • duration()
  • datetime.fromepoch()
  • datetime.fromepochmillis()
  • date.realtime(), date.transaction(), date.statement()
  • time.realtime(), time.transaction(), time.statement()
  • localtime.realtime(), localtime.transaction(), localtime.statement()
  • datetime.realtime(), datetime.transaction(), datetime.statement()
  • localdatetime.realtime(), localdatetime.transaction(), localdatetime.statement()

Aggregates

  • count()
  • sum()
  • avg()
  • min()
  • max()
  • collect()
  • percentileDisc()
  • percentileCont()

Thread safety

Velr connections and active result handles are not safe for concurrent use from multiple threads.

If you need parallelism:

  • open one connection per thread
  • do not share active connections
  • do not share transactions, streams, tables, row iterators, or explain traces across threads

Platform support

The Python package wraps a bundled native runtime implemented in Rust.

Supported distributions may include prebuilt binary wheels for common platforms. Where binary wheels are available, the compiled runtime is included with the package.

Currently bundled targets:

* macOS (arm64)
* Linux x86_64
* Linux aarch64
* Windows x86_64

License

See LICENSE and LICENSE.runtime for the full license texts.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

velr-0.2.23-cp314-cp314-win_amd64.whl (2.6 MB view details)

Uploaded CPython 3.14Windows x86-64

velr-0.2.23-cp314-cp314-manylinux_2_34_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

velr-0.2.23-cp314-cp314-manylinux_2_34_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

velr-0.2.23-cp314-cp314-macosx_11_0_universal2.whl (2.4 MB view details)

Uploaded CPython 3.14macOS 11.0+ universal2 (ARM64, x86-64)

velr-0.2.23-cp313-cp313-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.13Windows x86-64

velr-0.2.23-cp313-cp313-manylinux_2_34_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

velr-0.2.23-cp313-cp313-manylinux_2_34_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

velr-0.2.23-cp313-cp313-macosx_11_0_universal2.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 11.0+ universal2 (ARM64, x86-64)

velr-0.2.23-cp312-cp312-win_amd64.whl (2.5 MB view details)

Uploaded CPython 3.12Windows x86-64

velr-0.2.23-cp312-cp312-manylinux_2_34_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

velr-0.2.23-cp312-cp312-manylinux_2_34_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

velr-0.2.23-cp312-cp312-macosx_11_0_universal2.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 11.0+ universal2 (ARM64, x86-64)

File details

Details for the file velr-0.2.23-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: velr-0.2.23-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for velr-0.2.23-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 dbce9b59cba22a06957aac270b76d57e6aa2e7d4fe0194b74cdd1d9c7b0a23b1
MD5 28fda4e4d9858da3db4dcc120200a3f3
BLAKE2b-256 0431065fc91ed2800d60b877709cb6fc9dbd915814da82ba9af673a2de0da1ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp314-cp314-win_amd64.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for velr-0.2.23-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c0868cd65de55558cda331ec2443188bfdbe6b4c0a89b2584d4897009b96d19f
MD5 87816b41f9d0aa61b3f533d9ebdaadd7
BLAKE2b-256 78dd2152eed409824615556b48cc9705722301dbaf1ac6ce03455c56745b922d

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp314-cp314-manylinux_2_34_x86_64.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for velr-0.2.23-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 b88aa84126f4ff73cf5b3472526265e2f0fb170725e33ccb5f4875c9bce950f8
MD5 cd094709361a00f19afc1cce57a831d3
BLAKE2b-256 e27554538a530623ed8b72468eb9d78ca2710d2c6a7a35be26915955874809c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp314-cp314-manylinux_2_34_aarch64.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp314-cp314-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for velr-0.2.23-cp314-cp314-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 9ee505bf9d3c2b40fb29c595f0b9b684ffe396139788c82520852aec1222120f
MD5 04da3150f1837ba0d0289017bce07249
BLAKE2b-256 56630cfbe1675d5b77563973d2b21ea86a81cc814fb2bdf3a683eab50c979263

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp314-cp314-macosx_11_0_universal2.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: velr-0.2.23-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for velr-0.2.23-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3dfa63659b56a2b962f5440c95689ff58c43b6cce7650f84eb200d22ce54eb65
MD5 4ac589776e204a67ec37d8616e39e636
BLAKE2b-256 6053c5ef31f0cde2df354e53c933ec9c8374e461d1f00f190ba24a79c2538ecf

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp313-cp313-win_amd64.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for velr-0.2.23-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 22b4d345ab85792c9a8e79d057b38a71f0c64a730d325a4811fbf3f23f348253
MD5 938ef9ed7e16f9c009e61b0b82434479
BLAKE2b-256 f3fb3612d06558b3e906f0a2f79f6427943c109cf8fea8e02389fddde9936d3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for velr-0.2.23-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 bd74c927428c09e02f6ddf1e401e3ade1df8adc88228f725da66d0de74afb366
MD5 0dbfcaaa19e05f3dcdc533f6735c6e57
BLAKE2b-256 19e44a4f733d3ec9efcaf19334eb5efcee8a0c7297d39561906a9a528e977d0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp313-cp313-manylinux_2_34_aarch64.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp313-cp313-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for velr-0.2.23-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 c77d38112985d3655cce50856b66f99e79a5d787cd1c3dba2c7856e70a126a15
MD5 563902e52b7b85d22d9ae4a641d6e3b3
BLAKE2b-256 9eccaee01a13f6e827f3df3208b23d697d12b4847bee91e0a918767606011ec4

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp313-cp313-macosx_11_0_universal2.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: velr-0.2.23-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for velr-0.2.23-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 04f27cbe916ea1bdbe317cbf960916d6ec567c55a0806503ae06f35853b0b155
MD5 d06d8ce4afcc9533acf28017fd8d67ea
BLAKE2b-256 948379c7317eae9ffbb99b13b976416110284fa85fbd93d3d68437fb736f03da

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp312-cp312-win_amd64.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for velr-0.2.23-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e25b98134070af3ea77a56d23f9aff341a33031815ef56f0618b60ac9bc20e75
MD5 5afbd8bef5929ed66c4b3016a553d6ce
BLAKE2b-256 12da2aa4167895431a576b8e944a60dcec4b5af4b1993c3c6bb5815f101deffd

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for velr-0.2.23-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 26919d8a7eac8b2292d7552371a0f5c98cc1bd8ad3c4f6eaea4efbe1c1c10a8d
MD5 c3ba20207c2e7f7208c8b551431696d4
BLAKE2b-256 b4cf7a0f5480acdc895b4903be881c2ff045e9d99bb4238d54ba5e6a356e69d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp312-cp312-manylinux_2_34_aarch64.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file velr-0.2.23-cp312-cp312-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for velr-0.2.23-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 867a09372dce9d8dafbb32bd41c0fcd0efded9927f4e6b6fe9969dd586aefe5d
MD5 b431532cedbe9d493581eec7ae4f6024
BLAKE2b-256 bc78b56046518b140f3adeaf9f17bce25fd2f7ff8c24c79e6da8a25bf3159ae5

See more details on using hashes here.

Provenance

The following attestation bundles were made for velr-0.2.23-cp312-cp312-macosx_11_0_universal2.whl:

Publisher: publish-pypi.yml on velr-ai/velr-repo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page