Metadata-Version: 2.4
Name: picovolt
Version: 2.3.0
Summary: Embedded SQL database with MVCC history and single-file deployment
License-Expression: LicenseRef-PicoVolt-Public-Source-1.1
Project-URL: Homepage, https://github.com/MiniJe/picovolt
Project-URL: Repository, https://github.com/MiniJe/picovolt
Project-URL: Documentation, https://github.com/MiniJe/picovolt/tree/main/bindings/python
Project-URL: Changelog, https://github.com/MiniJe/picovolt/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/MiniJe/picovolt/issues
Keywords: database,embedded,sql,storage-engine,mvcc,time-travel
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Database :: Database Engines/Servers
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: APACHE-2.0-LEGACY.txt
License-File: NOTICE
License-File: third-party-notices/aead-0.5.2/LICENSE-APACHE
License-File: third-party-notices/aead-0.5.2/LICENSE-MIT
License-File: third-party-notices/ahash-0.8.12/LICENSE-APACHE
License-File: third-party-notices/ahash-0.8.12/LICENSE-MIT
License-File: third-party-notices/android_system_properties-0.1.6/LICENSE-APACHE
License-File: third-party-notices/android_system_properties-0.1.6/LICENSE-MIT
License-File: third-party-notices/argon2-0.5.3/LICENSE-APACHE
License-File: third-party-notices/argon2-0.5.3/LICENSE-MIT
License-File: third-party-notices/arrayvec-0.7.8/LICENSE-APACHE
License-File: third-party-notices/arrayvec-0.7.8/LICENSE-MIT
License-File: third-party-notices/arrow-array-59.3.0/LICENSE-MIT
License-File: third-party-notices/arrow-array-59.3.0/LICENSE.txt
License-File: third-party-notices/arrow-array-59.3.0/NOTICE.txt
License-File: third-party-notices/arrow-buffer-59.3.0/LICENSE.txt
License-File: third-party-notices/arrow-buffer-59.3.0/NOTICE.txt
License-File: third-party-notices/arrow-data-59.3.0/LICENSE.txt
License-File: third-party-notices/arrow-data-59.3.0/NOTICE.txt
License-File: third-party-notices/arrow-ipc-59.3.0/LICENSE.txt
License-File: third-party-notices/arrow-ipc-59.3.0/NOTICE.txt
License-File: third-party-notices/arrow-schema-59.3.0/LICENSE.txt
License-File: third-party-notices/arrow-schema-59.3.0/NOTICE.txt
License-File: third-party-notices/arrow-select-59.3.0/LICENSE.txt
License-File: third-party-notices/arrow-select-59.3.0/NOTICE.txt
License-File: third-party-notices/ascii-1.1.0/LICENSE-APACHE
License-File: third-party-notices/ascii-1.1.0/LICENSE-MIT
License-File: third-party-notices/autocfg-1.5.1/LICENSE-APACHE
License-File: third-party-notices/autocfg-1.5.1/LICENSE-MIT
License-File: third-party-notices/base64-0.23.1/LICENSE-APACHE
License-File: third-party-notices/base64-0.23.1/LICENSE-MIT
License-File: third-party-notices/base64ct-1.8.3/LICENSE-APACHE
License-File: third-party-notices/base64ct-1.8.3/LICENSE-MIT
License-File: third-party-notices/bitflags-2.13.1/LICENSE-APACHE
License-File: third-party-notices/bitflags-2.13.1/LICENSE-MIT
License-File: third-party-notices/blake2-0.10.6/LICENSE-APACHE
License-File: third-party-notices/blake2-0.10.6/LICENSE-MIT
License-File: third-party-notices/blake3-1.8.7/LICENSE_A2
License-File: third-party-notices/blake3-1.8.7/LICENSE_A2LLVM
License-File: third-party-notices/blake3-1.8.7/LICENSE_CC0
License-File: third-party-notices/block-buffer-0.10.4/LICENSE-APACHE
License-File: third-party-notices/block-buffer-0.10.4/LICENSE-MIT
License-File: third-party-notices/block-buffer-0.12.1/LICENSE-APACHE
License-File: third-party-notices/block-buffer-0.12.1/LICENSE-MIT
License-File: third-party-notices/bumpalo-3.20.3/LICENSE-APACHE
License-File: third-party-notices/bumpalo-3.20.3/LICENSE-MIT
License-File: third-party-notices/bytes-1.12.1/LICENSE
License-File: third-party-notices/cc-1.4.5/LICENSE-APACHE
License-File: third-party-notices/cc-1.4.5/LICENSE-MIT
License-File: third-party-notices/cfg-if-1.0.4/LICENSE-APACHE
License-File: third-party-notices/cfg-if-1.0.4/LICENSE-MIT
License-File: third-party-notices/chacha20-0.9.1/LICENSE-APACHE
License-File: third-party-notices/chacha20-0.9.1/LICENSE-MIT
License-File: third-party-notices/chacha20poly1305-0.10.1/LICENSE-APACHE
License-File: third-party-notices/chacha20poly1305-0.10.1/LICENSE-MIT
License-File: third-party-notices/chrono-0.4.45/LICENSE.txt
License-File: third-party-notices/chunked_transfer-1.5.0/LICENSE-APACHE
License-File: third-party-notices/chunked_transfer-1.5.0/LICENSE-MIT
License-File: third-party-notices/cipher-0.4.4/LICENSE-APACHE
License-File: third-party-notices/cipher-0.4.4/LICENSE-MIT
License-File: third-party-notices/console_error_panic_hook-0.1.7/LICENSE-APACHE
License-File: third-party-notices/console_error_panic_hook-0.1.7/LICENSE-MIT
License-File: third-party-notices/const-random-0.1.18/LICENSE-APACHE
License-File: third-party-notices/const-random-0.1.18/LICENSE-MIT
License-File: third-party-notices/const-random-macro-0.1.16/LICENSE-APACHE
License-File: third-party-notices/const-random-macro-0.1.16/LICENSE-MIT
License-File: third-party-notices/constant_time_eq-0.4.2/LICENSE-APACHE
License-File: third-party-notices/constant_time_eq-0.4.2/LICENSE-CC0
License-File: third-party-notices/constant_time_eq-0.4.2/LICENSE-MIT0
License-File: third-party-notices/core-foundation-sys-0.8.7/LICENSE-APACHE
License-File: third-party-notices/core-foundation-sys-0.8.7/LICENSE-MIT
License-File: third-party-notices/cpufeatures-0.2.17/LICENSE-APACHE
License-File: third-party-notices/cpufeatures-0.2.17/LICENSE-MIT
License-File: third-party-notices/cpufeatures-0.3.1/LICENSE-APACHE
License-File: third-party-notices/cpufeatures-0.3.1/LICENSE-MIT
License-File: third-party-notices/crunchy-0.2.4/LICENSE
License-File: third-party-notices/crypto-common-0.1.7/LICENSE-APACHE
License-File: third-party-notices/crypto-common-0.1.7/LICENSE-MIT
License-File: third-party-notices/crypto-common-0.2.2/LICENSE-APACHE
License-File: third-party-notices/crypto-common-0.2.2/LICENSE-MIT
License-File: third-party-notices/curve25519-dalek-5.0.0/LICENSE
License-File: third-party-notices/curve25519-dalek-derive-0.1.1/LICENSE-APACHE
License-File: third-party-notices/curve25519-dalek-derive-0.1.1/LICENSE-MIT
License-File: third-party-notices/digest-0.10.7/LICENSE-APACHE
License-File: third-party-notices/digest-0.10.7/LICENSE-MIT
License-File: third-party-notices/digest-0.11.3/LICENSE-APACHE
License-File: third-party-notices/digest-0.11.3/LICENSE-MIT
License-File: third-party-notices/ed25519-3.0.0/LICENSE-APACHE
License-File: third-party-notices/ed25519-3.0.0/LICENSE-MIT
License-File: third-party-notices/ed25519-dalek-3.0.0/LICENSE
License-File: third-party-notices/equivalent-1.0.2/LICENSE-APACHE
License-File: third-party-notices/equivalent-1.0.2/LICENSE-MIT
License-File: third-party-notices/errno-0.3.14/LICENSE-APACHE
License-File: third-party-notices/errno-0.3.14/LICENSE-MIT
License-File: third-party-notices/fallible-iterator-0.3.0/LICENSE-APACHE
License-File: third-party-notices/fallible-iterator-0.3.0/LICENSE-MIT
License-File: third-party-notices/fallible-streaming-iterator-0.1.9/LICENSE-APACHE
License-File: third-party-notices/fallible-streaming-iterator-0.1.9/LICENSE-MIT
License-File: third-party-notices/fastrand-2.5.0/LICENSE-APACHE
License-File: third-party-notices/fastrand-2.5.0/LICENSE-MIT
License-File: third-party-notices/fiat-crypto-0.3.0/LICENSE-APACHE
License-File: third-party-notices/fiat-crypto-0.3.0/LICENSE-BSD-1
License-File: third-party-notices/fiat-crypto-0.3.0/LICENSE-MIT
License-File: third-party-notices/find-msvc-tools-0.1.12/LICENSE-APACHE
License-File: third-party-notices/find-msvc-tools-0.1.12/LICENSE-MIT
License-File: third-party-notices/flate2-1.1.10/LICENSE-APACHE
License-File: third-party-notices/flate2-1.1.10/LICENSE-MIT
License-File: third-party-notices/foldhash-0.1.5/LICENSE
License-File: third-party-notices/fs2-0.4.3/LICENSE-APACHE
License-File: third-party-notices/fs2-0.4.3/LICENSE-MIT
License-File: third-party-notices/futures-core-0.3.34/LICENSE-APACHE
License-File: third-party-notices/futures-core-0.3.34/LICENSE-MIT
License-File: third-party-notices/futures-task-0.3.34/LICENSE-APACHE
License-File: third-party-notices/futures-task-0.3.34/LICENSE-MIT
License-File: third-party-notices/futures-util-0.3.34/LICENSE-APACHE
License-File: third-party-notices/futures-util-0.3.34/LICENSE-MIT
License-File: third-party-notices/generic-array-0.14.7/LICENSE
License-File: third-party-notices/getrandom-0.2.17/LICENSE-APACHE
License-File: third-party-notices/getrandom-0.2.17/LICENSE-MIT
License-File: third-party-notices/getrandom-0.3.4/LICENSE-APACHE
License-File: third-party-notices/getrandom-0.3.4/LICENSE-MIT
License-File: third-party-notices/getrandom-0.4.3/LICENSE-APACHE
License-File: third-party-notices/getrandom-0.4.3/LICENSE-MIT
License-File: third-party-notices/half-2.7.1/LICENSE-APACHE
License-File: third-party-notices/half-2.7.1/LICENSE-MIT
License-File: third-party-notices/hashbrown-0.15.5/LICENSE-APACHE
License-File: third-party-notices/hashbrown-0.15.5/LICENSE-MIT
License-File: third-party-notices/hashbrown-0.17.1/LICENSE-APACHE
License-File: third-party-notices/hashbrown-0.17.1/LICENSE-MIT
License-File: third-party-notices/httpdate-1.0.3/LICENSE-APACHE
License-File: third-party-notices/httpdate-1.0.3/LICENSE-MIT
License-File: third-party-notices/hybrid-array-0.4.14/LICENSE-APACHE
License-File: third-party-notices/hybrid-array-0.4.14/LICENSE-MIT
License-File: third-party-notices/iana-time-zone-0.1.65/LICENSE-APACHE
License-File: third-party-notices/iana-time-zone-0.1.65/LICENSE-MIT
License-File: third-party-notices/iana-time-zone-haiku-0.1.2/LICENSE-APACHE
License-File: third-party-notices/iana-time-zone-haiku-0.1.2/LICENSE-MIT
License-File: third-party-notices/indexmap-2.14.1/LICENSE-APACHE
License-File: third-party-notices/indexmap-2.14.1/LICENSE-MIT
License-File: third-party-notices/inout-0.1.4/LICENSE-APACHE
License-File: third-party-notices/inout-0.1.4/LICENSE-MIT
License-File: third-party-notices/itoa-1.0.18/LICENSE-APACHE
License-File: third-party-notices/itoa-1.0.18/LICENSE-MIT
License-File: third-party-notices/jobserver-0.1.35/LICENSE-APACHE
License-File: third-party-notices/jobserver-0.1.35/LICENSE-MIT
License-File: third-party-notices/js-sys-0.3.104/LICENSE-APACHE
License-File: third-party-notices/js-sys-0.3.104/LICENSE-MIT
License-File: third-party-notices/leb128fmt-0.1.0/LICENSE-APACHE
License-File: third-party-notices/leb128fmt-0.1.0/LICENSE-MIT
License-File: third-party-notices/libc-0.2.189/LICENSE-APACHE
License-File: third-party-notices/libc-0.2.189/LICENSE-MIT
License-File: third-party-notices/libm-0.2.16/LICENSE.txt
License-File: third-party-notices/libsqlite3-sys-0.38.2/LICENSE
License-File: third-party-notices/linux-raw-sys-0.12.1/LICENSE-APACHE
License-File: third-party-notices/linux-raw-sys-0.12.1/LICENSE-Apache-2.0_WITH_LLVM-exception
License-File: third-party-notices/linux-raw-sys-0.12.1/LICENSE-MIT
License-File: third-party-notices/log-0.4.34/LICENSE-APACHE
License-File: third-party-notices/log-0.4.34/LICENSE-MIT
License-File: third-party-notices/memchr-2.8.3/COPYING
License-File: third-party-notices/memchr-2.8.3/LICENSE-MIT
License-File: third-party-notices/memmap2-0.9.11/LICENSE-APACHE
License-File: third-party-notices/memmap2-0.9.11/LICENSE-MIT
License-File: third-party-notices/num-bigint-0.5.1/LICENSE-APACHE
License-File: third-party-notices/num-bigint-0.5.1/LICENSE-MIT
License-File: third-party-notices/num-complex-0.4.6/LICENSE-APACHE
License-File: third-party-notices/num-complex-0.4.6/LICENSE-MIT
License-File: third-party-notices/num-integer-0.1.47/LICENSE-APACHE
License-File: third-party-notices/num-integer-0.1.47/LICENSE-MIT
License-File: third-party-notices/num-traits-0.2.19/LICENSE-APACHE
License-File: third-party-notices/num-traits-0.2.19/LICENSE-MIT
License-File: third-party-notices/once_cell-1.21.4/LICENSE-APACHE
License-File: third-party-notices/once_cell-1.21.4/LICENSE-MIT
License-File: third-party-notices/opaque-debug-0.3.1/LICENSE-APACHE
License-File: third-party-notices/opaque-debug-0.3.1/LICENSE-MIT
License-File: third-party-notices/parquet-59.3.0/LICENSE.txt
License-File: third-party-notices/parquet-59.3.0/NOTICE.txt
License-File: third-party-notices/password-hash-0.5.0/LICENSE-APACHE
License-File: third-party-notices/password-hash-0.5.0/LICENSE-MIT
License-File: third-party-notices/pin-project-lite-0.2.17/LICENSE-APACHE
License-File: third-party-notices/pin-project-lite-0.2.17/LICENSE-MIT
License-File: third-party-notices/pkg-config-0.3.34/LICENSE-APACHE
License-File: third-party-notices/pkg-config-0.3.34/LICENSE-MIT
License-File: third-party-notices/poly1305-0.8.0/LICENSE-APACHE
License-File: third-party-notices/poly1305-0.8.0/LICENSE-MIT
License-File: third-party-notices/proc-macro2-1.0.107/LICENSE-APACHE
License-File: third-party-notices/proc-macro2-1.0.107/LICENSE-MIT
License-File: third-party-notices/quote-1.0.47/LICENSE-APACHE
License-File: third-party-notices/quote-1.0.47/LICENSE-MIT
License-File: third-party-notices/rand_core-0.6.4/LICENSE-APACHE
License-File: third-party-notices/rand_core-0.6.4/LICENSE-MIT
License-File: third-party-notices/rusqlite-0.40.2/LICENSE
License-File: third-party-notices/rustc_version-0.4.1/LICENSE-APACHE
License-File: third-party-notices/rustc_version-0.4.1/LICENSE-MIT
License-File: third-party-notices/rustix-1.1.4/LICENSE-APACHE
License-File: third-party-notices/rustix-1.1.4/LICENSE-Apache-2.0_WITH_LLVM-exception
License-File: third-party-notices/rustix-1.1.4/LICENSE-MIT
License-File: third-party-notices/rustversion-1.0.23/LICENSE-APACHE
License-File: third-party-notices/rustversion-1.0.23/LICENSE-MIT
License-File: third-party-notices/semver-1.0.28/LICENSE-APACHE
License-File: third-party-notices/semver-1.0.28/LICENSE-MIT
License-File: third-party-notices/seq-macro-0.3.6/LICENSE-APACHE
License-File: third-party-notices/seq-macro-0.3.6/LICENSE-MIT
License-File: third-party-notices/serde-1.0.229/LICENSE-APACHE
License-File: third-party-notices/serde-1.0.229/LICENSE-MIT
License-File: third-party-notices/serde_core-1.0.229/LICENSE-APACHE
License-File: third-party-notices/serde_core-1.0.229/LICENSE-MIT
License-File: third-party-notices/serde_derive-1.0.229/LICENSE-APACHE
License-File: third-party-notices/serde_derive-1.0.229/LICENSE-MIT
License-File: third-party-notices/serde_json-1.0.151/LICENSE-APACHE
License-File: third-party-notices/serde_json-1.0.151/LICENSE-MIT
License-File: third-party-notices/sha2-0.11.0/LICENSE-APACHE
License-File: third-party-notices/sha2-0.11.0/LICENSE-MIT
License-File: third-party-notices/shlex-2.0.1/LICENSE-APACHE
License-File: third-party-notices/shlex-2.0.1/LICENSE-MIT
License-File: third-party-notices/signature-3.0.0/LICENSE-APACHE
License-File: third-party-notices/signature-3.0.0/LICENSE-MIT
License-File: third-party-notices/slab-0.4.12/LICENSE
License-File: third-party-notices/smallvec-1.16.0/LICENSE-APACHE
License-File: third-party-notices/smallvec-1.16.0/LICENSE-MIT
License-File: third-party-notices/snap-1.1.2/COPYING
License-File: third-party-notices/spin-0.9.9/LICENSE
License-File: third-party-notices/string-interner-0.19.0/LICENSE-APACHE
License-File: third-party-notices/string-interner-0.19.0/LICENSE-MIT
License-File: third-party-notices/subtle-2.6.1/LICENSE
License-File: third-party-notices/syn-2.0.119/LICENSE-APACHE
License-File: third-party-notices/syn-2.0.119/LICENSE-MIT
License-File: third-party-notices/syn-3.0.4/LICENSE-APACHE
License-File: third-party-notices/syn-3.0.4/LICENSE-MIT
License-File: third-party-notices/tempfile-3.27.0/LICENSE-APACHE
License-File: third-party-notices/tempfile-3.27.0/LICENSE-MIT
License-File: third-party-notices/thiserror-2.0.20/LICENSE-APACHE
License-File: third-party-notices/thiserror-2.0.20/LICENSE-MIT
License-File: third-party-notices/thiserror-impl-2.0.20/LICENSE-APACHE
License-File: third-party-notices/thiserror-impl-2.0.20/LICENSE-MIT
License-File: third-party-notices/tiny-keccak-2.0.2/LICENSE
License-File: third-party-notices/tiny_http-0.12.0/LICENSE-APACHE
License-File: third-party-notices/tiny_http-0.12.0/LICENSE-MIT
License-File: third-party-notices/twox-hash-2.1.4/LICENSE.txt
License-File: third-party-notices/typenum-1.20.1/LICENSE
License-File: third-party-notices/typenum-1.20.1/LICENSE-APACHE
License-File: third-party-notices/typenum-1.20.1/LICENSE-MIT
License-File: third-party-notices/unicode-ident-1.0.24/LICENSE-APACHE
License-File: third-party-notices/unicode-ident-1.0.24/LICENSE-MIT
License-File: third-party-notices/unicode-ident-1.0.24/LICENSE-UNICODE
License-File: third-party-notices/unicode-width-0.2.2/LICENSE-APACHE
License-File: third-party-notices/unicode-width-0.2.2/LICENSE-MIT
License-File: third-party-notices/universal-hash-0.5.1/LICENSE-APACHE
License-File: third-party-notices/universal-hash-0.5.1/LICENSE-MIT
License-File: third-party-notices/vcpkg-0.2.15/LICENSE-APACHE
License-File: third-party-notices/vcpkg-0.2.15/LICENSE-MIT
License-File: third-party-notices/version_check-0.9.5/LICENSE-APACHE
License-File: third-party-notices/version_check-0.9.5/LICENSE-MIT
License-File: third-party-notices/wasi-0.11.1+wasi-snapshot-preview1/LICENSE-APACHE
License-File: third-party-notices/wasi-0.11.1+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception
License-File: third-party-notices/wasi-0.11.1+wasi-snapshot-preview1/LICENSE-MIT
License-File: third-party-notices/wasip2-1.0.4+wasi-0.2.12/LICENSE-APACHE
License-File: third-party-notices/wasip2-1.0.4+wasi-0.2.12/LICENSE-Apache-2.0_WITH_LLVM-exception
License-File: third-party-notices/wasip2-1.0.4+wasi-0.2.12/LICENSE-MIT
License-File: third-party-notices/wasm-bindgen-0.2.127/LICENSE-APACHE
License-File: third-party-notices/wasm-bindgen-0.2.127/LICENSE-MIT
License-File: third-party-notices/wasm-bindgen-macro-0.2.127/LICENSE-APACHE
License-File: third-party-notices/wasm-bindgen-macro-0.2.127/LICENSE-MIT
License-File: third-party-notices/wasm-bindgen-macro-support-0.2.127/LICENSE-APACHE
License-File: third-party-notices/wasm-bindgen-macro-support-0.2.127/LICENSE-MIT
License-File: third-party-notices/wasm-bindgen-shared-0.2.127/LICENSE-APACHE
License-File: third-party-notices/wasm-bindgen-shared-0.2.127/LICENSE-MIT
License-File: third-party-notices/wasm-encoder-0.258.0/LICENSE-APACHE
License-File: third-party-notices/wasm-encoder-0.258.0/LICENSE-Apache-2.0_WITH_LLVM-exception
License-File: third-party-notices/wasm-encoder-0.258.0/LICENSE-MIT
License-File: third-party-notices/wasmparser-0.258.0/LICENSE-APACHE
License-File: third-party-notices/wasmparser-0.258.0/LICENSE-Apache-2.0_WITH_LLVM-exception
License-File: third-party-notices/wasmparser-0.258.0/LICENSE-MIT
License-File: third-party-notices/wast-258.0.0/LICENSE-APACHE
License-File: third-party-notices/wast-258.0.0/LICENSE-Apache-2.0_WITH_LLVM-exception
License-File: third-party-notices/wast-258.0.0/LICENSE-MIT
License-File: third-party-notices/wat-1.258.0/LICENSE-APACHE
License-File: third-party-notices/wat-1.258.0/LICENSE-Apache-2.0_WITH_LLVM-exception
License-File: third-party-notices/wat-1.258.0/LICENSE-MIT
License-File: third-party-notices/winapi-0.3.9/LICENSE-APACHE
License-File: third-party-notices/winapi-0.3.9/LICENSE-MIT
License-File: third-party-notices/wit-bindgen-0.57.1/LICENSE-APACHE
License-File: third-party-notices/wit-bindgen-0.57.1/LICENSE-Apache-2.0_WITH_LLVM-exception
License-File: third-party-notices/wit-bindgen-0.57.1/LICENSE-MIT
License-File: third-party-notices/zerocopy-0.8.56/LICENSE-APACHE
License-File: third-party-notices/zerocopy-0.8.56/LICENSE-BSD
License-File: third-party-notices/zerocopy-0.8.56/LICENSE-MIT
License-File: third-party-notices/zerocopy-derive-0.8.56/LICENSE-APACHE
License-File: third-party-notices/zerocopy-derive-0.8.56/LICENSE-BSD
License-File: third-party-notices/zerocopy-derive-0.8.56/LICENSE-MIT
License-File: third-party-notices/zeroize-1.9.0/LICENSE-APACHE
License-File: third-party-notices/zeroize-1.9.0/LICENSE-MIT
License-File: third-party-notices/zlib-rs-0.6.7/LICENSE
License-File: third-party-notices/zmij-1.0.23/LICENSE-MIT
License-File: third-party-notices/zstd-0.13.3/LICENSE
License-File: third-party-notices/zstd-safe-7.3.0/LICENSE
License-File: third-party-notices/zstd-sys-2.1.0+zstd.1.5.7/LICENSE
License-File: third-party-notices/zstd-sys-2.1.0+zstd.1.5.7/LICENSE.BSD-3-Clause
Dynamic: license-file

# PicoVolt for Python

For 2.0, see the [interface quickstart](../../docs/QUICKSTART_2_0.md)
for batching, persistence and diagnostics. Use matching 2.0 artifacts.

Python bindings for the [PicoVolt](https://github.com/MiniJe/picovolt) embedded
database engine, via its C ABI and `ctypes`. Released platform wheels bundle the
native library, so installing from PyPI does not require a Rust or C compiler.

Like the engine itself, this is for embedded use (single writer, SQL with MVCC
time-travel, compile-to-`.pvdb`), not a drop-in for a concurrent server's
primary database.

## Install

Platform wheels bundle the native library, so released builds install without a
Rust compiler. The compatibility floor is Python 3.9, but production deployments
should use a Python release that still receives upstream security fixes:

```sh
python -m pip install picovolt
```

Build the shared library from the repository root:

```sh
cargo build --release --features capi
```

That produces `target/release/libpicovolt.so` (Linux),
`target/release/libpicovolt.dylib` (macOS), or `target/release/picovolt.dll`
(Windows). When you run from a checkout, the wrapper finds it in
`target/release` automatically. Otherwise set `PICOVOLT_LIB` to the file:

```sh
export PICOVOLT_LIB=/path/to/libpicovolt.so
```

## Usage

```python
from picovolt import Database

with Database.open_memory() as db:
    db.query("CREATE TABLE users (id, name)")
    db.query("INSERT INTO users VALUES (1, 'alice')")
    print(db.query("SELECT * FROM users"))
    # {'columns': ['id', 'name'], 'rows': [[1, 'alice']]}
```

`query` returns the already-parsed result (a `dict`): `{"columns": [...],
"rows": [[...]]}` for a `SELECT`, `{"mutated": n}` for a mutation, or
`{"done": True}` otherwise. Other methods: `open_dev`, `open_prod`, `from_bytes`,
`export`, `begin`, `commit`, `rollback`, `in_transaction`, `current_tx`, and the
module-level `version()`. A PEP 249 adapter is available as
`picovolt.dbapi2`.

For SQL executed repeatedly, prepare it once. The wrapper caches the SQL text
and positional-parameter count, validates arity before each execution, and
passes values through the same injection-safe binder as `query`:

```python
with db.prepare("INSERT INTO users VALUES (?, ?)") as insert:
    print(insert.parameter_count)  # 2
    insert.execute((1, "Ada"))
    insert.execute((2, "Lin"))
```

Preparation validates SQL and retains a native statement handle. Close the
statement (or use its context manager) before closing the database. A statement
does not own or close its database, and executing it after either handle has
been closed raises `PicoVoltError`.

Run the demo:

```sh
python example.py
```

Release wheels are built for Linux x86-64, macOS universal2, and Windows x86-64
by GitHub Actions. Source checkouts and other architectures can instead use
`PICOVOLT_LIB` to select a locally built library.
