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
- Community and questions: GitHub Discussions
- Bug reports and feature requests: GitHub Issues
- Python examples: velr-python-examples
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.
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'})")
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:
NULL→NoneBOOL→boolINT64→intDOUBLE→floatTEXT→strby defaultJSON→strby default, or parsed Python objects withparse_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 itrollback()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 activerelease_savepoint(name)releases a named savepoint by name; the named savepoint must be the most recent active named savepointrelease()orrollback()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.Tablepandas.DataFramepolars.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 missing features:
REMOVEclause- 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:
Scalars
id()type()length()nodes()relationships()coalesce()labels()properties()keys()
Aggregates
count()sum()avg()min()max()collect()
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file velr-0.2.6-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: velr-0.2.6-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8d12cc34520b713005a2d498a497c7423bc2ef5173a76103705181ba1bb1eac
|
|
| MD5 |
4858c5cc53a9c773f7a076c3ac1a0a9e
|
|
| BLAKE2b-256 |
15ffaa2f7ad8d555cd58596b02e8474b3a9d201485e1f1be08ab11845cacd804
|
Provenance
The following attestation bundles were made for velr-0.2.6-cp313-cp313-win_amd64.whl:
Publisher:
publish-pypi.yml on velr-ai/velr-repo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
velr-0.2.6-cp313-cp313-win_amd64.whl -
Subject digest:
f8d12cc34520b713005a2d498a497c7423bc2ef5173a76103705181ba1bb1eac - Sigstore transparency entry: 1194597400
- Sigstore integration time:
-
Permalink:
velr-ai/velr-repo@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/velr-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file velr-0.2.6-cp313-cp313-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: velr-0.2.6-cp313-cp313-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f090048cf2ea78d87206649874b44b3a20dc127e5f0942c7b6c6fdcf5caceb24
|
|
| MD5 |
91bce6facf52c9b6471cde6381271c2d
|
|
| BLAKE2b-256 |
d782d5301bd8929715ce0f162a1053a040561373b73830902d6fc10c994b5522
|
Provenance
The following attestation bundles were made for velr-0.2.6-cp313-cp313-manylinux_2_34_x86_64.whl:
Publisher:
publish-pypi.yml on velr-ai/velr-repo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
velr-0.2.6-cp313-cp313-manylinux_2_34_x86_64.whl -
Subject digest:
f090048cf2ea78d87206649874b44b3a20dc127e5f0942c7b6c6fdcf5caceb24 - Sigstore transparency entry: 1194597427
- Sigstore integration time:
-
Permalink:
velr-ai/velr-repo@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/velr-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file velr-0.2.6-cp313-cp313-manylinux_2_34_aarch64.whl.
File metadata
- Download URL: velr-0.2.6-cp313-cp313-manylinux_2_34_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.34+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54bbd48a6a6772cf5ae94bd185a2ea72a9d0ea4aa40e48d9ba6dcf7532e4f68a
|
|
| MD5 |
a84d2aecee395ee68b1d456e1c89431b
|
|
| BLAKE2b-256 |
384539602f396756b9d9f1d030e553d9e816dc692afe6365b95b1369416b5328
|
Provenance
The following attestation bundles were made for velr-0.2.6-cp313-cp313-manylinux_2_34_aarch64.whl:
Publisher:
publish-pypi.yml on velr-ai/velr-repo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
velr-0.2.6-cp313-cp313-manylinux_2_34_aarch64.whl -
Subject digest:
54bbd48a6a6772cf5ae94bd185a2ea72a9d0ea4aa40e48d9ba6dcf7532e4f68a - Sigstore transparency entry: 1194597432
- Sigstore integration time:
-
Permalink:
velr-ai/velr-repo@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/velr-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file velr-0.2.6-cp313-cp313-macosx_11_0_universal2.whl.
File metadata
- Download URL: velr-0.2.6-cp313-cp313-macosx_11_0_universal2.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.13, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9eacaaa3c7c95d8fbd2e203ef8c0a287f718504b36d6dd9380563c4dcac0b10b
|
|
| MD5 |
e6a2d2e5a4e0dcbfc14c218094ba6029
|
|
| BLAKE2b-256 |
d699860e161bc92b8e0dc578f1ce4193e8024f495b4a74840a56065676307320
|
Provenance
The following attestation bundles were made for velr-0.2.6-cp313-cp313-macosx_11_0_universal2.whl:
Publisher:
publish-pypi.yml on velr-ai/velr-repo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
velr-0.2.6-cp313-cp313-macosx_11_0_universal2.whl -
Subject digest:
9eacaaa3c7c95d8fbd2e203ef8c0a287f718504b36d6dd9380563c4dcac0b10b - Sigstore transparency entry: 1194597395
- Sigstore integration time:
-
Permalink:
velr-ai/velr-repo@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/velr-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file velr-0.2.6-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: velr-0.2.6-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f01013bd406448d1caf699944972cfd70f9af529388b75afad2a61064e8bc1a9
|
|
| MD5 |
f66032935c7628919d0a167a7cd866f1
|
|
| BLAKE2b-256 |
e547009c9f5b86bd7902ccb017a2d9f1463587f6d8a5619de7982a4a16604277
|
Provenance
The following attestation bundles were made for velr-0.2.6-cp312-cp312-win_amd64.whl:
Publisher:
publish-pypi.yml on velr-ai/velr-repo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
velr-0.2.6-cp312-cp312-win_amd64.whl -
Subject digest:
f01013bd406448d1caf699944972cfd70f9af529388b75afad2a61064e8bc1a9 - Sigstore transparency entry: 1194597414
- Sigstore integration time:
-
Permalink:
velr-ai/velr-repo@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/velr-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file velr-0.2.6-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: velr-0.2.6-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3d00a69cd752dc00d285859881f8c9b0e205a28069daa979494dee253910564
|
|
| MD5 |
32cdc5532d2fefd8ba81d4c1b4ee0e49
|
|
| BLAKE2b-256 |
e374516a919752ec31323d1dc89800fb2cf73ff1370d616b76868d01b5ccd21e
|
Provenance
The following attestation bundles were made for velr-0.2.6-cp312-cp312-manylinux_2_34_x86_64.whl:
Publisher:
publish-pypi.yml on velr-ai/velr-repo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
velr-0.2.6-cp312-cp312-manylinux_2_34_x86_64.whl -
Subject digest:
a3d00a69cd752dc00d285859881f8c9b0e205a28069daa979494dee253910564 - Sigstore transparency entry: 1194597406
- Sigstore integration time:
-
Permalink:
velr-ai/velr-repo@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/velr-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file velr-0.2.6-cp312-cp312-manylinux_2_34_aarch64.whl.
File metadata
- Download URL: velr-0.2.6-cp312-cp312-manylinux_2_34_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.34+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcc8f009b6e9877056b812f4c9f8916244dcd84a2912eea721864d4e97ce598d
|
|
| MD5 |
fcf362d48ecfeedb0c0b2b3ce407991e
|
|
| BLAKE2b-256 |
ac92cdc27e44a73e9d92f16ce1ff39e6df997f13f399fc6862dbf50345972b6c
|
Provenance
The following attestation bundles were made for velr-0.2.6-cp312-cp312-manylinux_2_34_aarch64.whl:
Publisher:
publish-pypi.yml on velr-ai/velr-repo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
velr-0.2.6-cp312-cp312-manylinux_2_34_aarch64.whl -
Subject digest:
bcc8f009b6e9877056b812f4c9f8916244dcd84a2912eea721864d4e97ce598d - Sigstore transparency entry: 1194597398
- Sigstore integration time:
-
Permalink:
velr-ai/velr-repo@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/velr-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file velr-0.2.6-cp312-cp312-macosx_11_0_universal2.whl.
File metadata
- Download URL: velr-0.2.6-cp312-cp312-macosx_11_0_universal2.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.12, macOS 11.0+ universal2 (ARM64, x86-64)
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c2bb3e760ce32253868c6775cec6e91ea46071dccfc95ac307e834281da7475
|
|
| MD5 |
ed2bb0423a1d8806f5275d02b1effaf5
|
|
| BLAKE2b-256 |
14c33b2c719669ab432eb8192a36b23ad8c5a0efa13f152499607f5eddb19616
|
Provenance
The following attestation bundles were made for velr-0.2.6-cp312-cp312-macosx_11_0_universal2.whl:
Publisher:
publish-pypi.yml on velr-ai/velr-repo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
velr-0.2.6-cp312-cp312-macosx_11_0_universal2.whl -
Subject digest:
1c2bb3e760ce32253868c6775cec6e91ea46071dccfc95ac307e834281da7475 - Sigstore transparency entry: 1194597410
- Sigstore integration time:
-
Permalink:
velr-ai/velr-repo@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Branch / Tag:
refs/tags/v0.2.6 - Owner: https://github.com/velr-ai
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@59adb4f36e3aa25a01353a2631456fad024d0a39 -
Trigger Event:
workflow_dispatch
-
Statement type: