Skip to main content

Embedded vector database using the TurboQuant algorithm (arXiv:2504.19874) — zero training, 2-4 bit compression, fast inner-product search

Project description

TurboQuantDB

License PyPI

An embedded vector database with a Python API, built around the TurboQuant algorithm (arXiv:2504.19874) — two-stage quantization that achieves near-optimal vector compression with zero training time.

Goal: make massive embedding datasets practical on lightweight hardware. A 100k-vector, 1536-dim collection that would occupy 586 MB as raw float32 fits in 108 MB on disk with TQDB b=4, or just 59 MB with b=2 — enabling laptop-scale RAG over millions of documents without a dedicated server.

Two deployment modes:

  • Embeddedtqdb Python package (pip install tqdb), runs in-process (no daemon)
  • Server — Axum HTTP service in server/, with multi-tenancy, RBAC, quotas, and async jobs

Key Properties

  • Zero training — No train() step. Vectors are quantized and stored immediately on insert.
  • 5–10× compression — b=4 reduces 1536-dim float32 embeddings from 586 MB to 108 MB (5.4×); b=2 reaches 59 MB (9.9×) at 100k vectors.
  • Two quantizer modes — default (dense, best recall) and a faster ingest variant (srht) for streaming/high-d workloads. See docs/QUANTIZER_MODES.md for a full breakdown.
  • Optional ANN index — Build an HNSW graph after loading data for fast approximate search.
  • Hybrid retrieval — Built-in BM25 keyword index fuses with dense search via RRF (db.search(..., hybrid={"text": "..."})). Pure-dense behaviour is unchanged when the kwarg is omitted.
  • Multi-vector / ColBERTMultiVectorStore for late-interaction retrieval with N token vectors per document and MaxSim scoring (Σ_i max_j <q_i, d_j>). See docs/MULTI_VECTOR.md.
  • Framework integrations — native VectorStore for LangChain v2 and LlamaIndex, plus an asyncio-friendly AsyncDatabase.
  • Drop-in migrationpython -m tqdb.migrate {chroma|lancedb} <src> <dst> imports an existing collection in one command. See docs/MIGRATION.md.
  • Metadata filtering — MongoDB-style filter operators on any metadata field.
  • Crash recovery — Write-ahead log (WAL) ensures durability without explicit flushing.
  • Python nativepip install tqdb; no server or sidecar required.

Installation

pip install tqdb                       # core engine + Python API

# Optional integrations (install only what you need):
pip install 'tqdb[langchain]'          # LangChain v2 VectorStore
pip install 'tqdb[llamaindex]'         # LlamaIndex BasePydanticVectorStore
pip install 'tqdb[migrate]'            # Chroma + LanceDB import toolkit
pip install 'tqdb[migrate-chroma]'     # Chroma migrator only
pip install 'tqdb[migrate-lancedb]'    # LanceDB migrator only

Building from source (Rust toolchain required): see DEVELOPMENT.md. Upgrading from v0.7? See docs/WHAT_S_NEW_0_8.md.


Config Advisor

The interactive Config Advisor selects the best configuration for your embedding dimension and use case (RAG, search-at-scale, edge deployment, etc.), scored against real benchmark data with adjustable priority weights for recall, compression, and speed.

Config Advisor


Recommended Setup

rerank=True stores raw INT8 vectors alongside compressed codes for exact second-pass rescoring. fast_mode=True (default) uses MSE-only quantization — optimal for d < 1536.

from tqdb import Database

# Best recall, any dimension — brute-force
db = Database.open(path, dimension=DIM, bits=4, rerank=True)   # INT8 rerank storage
results = db.search(query, top_k=10)
# GloVe-200 (d=200):     R@1 ≈ 1.00  |  ~30 MB disk
# arXiv-768 (d=768):     R@1 ≈ 0.98  |  ~116 MB disk
# DBpedia-1536 (d=1536): R@1 ≈ 0.95  |  ~231 MB disk

# Best recall, high-d (d ≥ 1536) — also enable QJL residuals
db = Database.open(path, dimension=1536, bits=4, rerank=True, fast_mode=False)

# Minimum disk — MSE codes only (library default, no extra vector storage)
db = Database.open(path, dimension=DIM, bits=4)

# Low latency at N ≥ 100k — HNSW index
db = Database.open(path, dimension=DIM, bits=4, rerank=True)
db.create_index()
results = db.search(query, top_k=10, _use_ann=True)       # p50 < 10ms

# Tune rerank oversampling at query time (default 10×)
results = db.search(query, top_k=10, rerank_factor=20)    # higher recall, higher latency

Full configuration guide: docs/CONFIGURATION.md | Python API: docs/PYTHON_API.md


Quick Start

import numpy as np
from tqdb import Database

db = Database.open("./my_db", dimension=1536, bits=4, metric="ip", rerank=True)

db.insert("doc-1", np.random.randn(1536).astype("f4"), metadata={"topic": "ml"}, document="Machine learning intro")
db.insert("doc-2", np.random.randn(1536).astype("f4"), metadata={"topic": "systems"}, document="Rust memory model")

results = db.search(np.random.randn(1536).astype("f4"), top_k=5)
for r in results:
    print(r["id"], r["score"], r["document"])

Python API

Full reference: docs/PYTHON_API.md

# Open / create
db = Database.open(path, dimension, bits=4, seed=42, metric="ip",
                   rerank=True, fast_mode=False, rerank_precision=None,
                   collection=None, wal_flush_threshold=None,
                   quantizer_type=None)  # None/"dense" = default (Haar QR + Gaussian); "srht" = fast O(d log d) ingest
# NOTE: rerank=True with rerank_precision=None uses per-vector-scaled INT8 reranking (default),
#       which is approximate. Use rerank_precision="f16" or "f32" for higher-precision rescoring.
#       rerank_factor (default 10× brute / 20× ANN) controls oversampling.

# Write
db.insert(id, vector, metadata=None, document=None)
db.insert_batch(ids, vectors, metadatas=None, documents=None, mode="insert")  # "insert"|"upsert"|"update"
db.upsert(id, vector, metadata=None, document=None)
db.update(id, vector, metadata=None, document=None)        # RuntimeError if not found
db.update_metadata(id, metadata=None, document=None)       # RuntimeError if not found

# Delete & retrieve
db.delete(id)                        # → bool
db.delete_batch(ids)                 # → int (count deleted)
db.get(id)                           # → {id, metadata, document} | None
db.get_many(ids)                     # → list[dict | None]
db.list_all()                        # → list[str]
db.list_ids(where_filter=None, limit=None, offset=0)       # paginated
db.count(filter=None)                # → int
db.stats()                           # → dict
len(db) / "id" in db                 # container protocol

# Search — brute-force by default; pass _use_ann=True to use HNSW index
results = db.search(query, top_k=10, filter=None, _use_ann=False,
                    ann_search_list_size=None, rerank_factor=None, include=None,
                    nprobe=None,        # nprobe=N activates IVF routing (see create_coarse_index)
                    hybrid=None)        # hybrid={"text": "...", "weight": 0.5} = sparse+dense via RRF
# include: list of "id"|"score"|"metadata"|"document" (default all)
# ann_search_list_size: HNSW ef_search override (only used when _use_ann=True)
# rerank_factor: candidate oversampling multiplier (default 10 brute / 20 ANN)

# Hybrid (sparse BM25 + dense) — recovers keyword/exact-match queries dense alone misses
results = db.search(query, top_k=10,
                    hybrid={"text": "user query string", "weight": 0.3, "rrf_k": 60})

all_results = db.query(query_embeddings, n_results=10, where_filter=None,
                       rerank_factor=None, include=None,
                       hybrid=None)  # also accepts hybrid={"texts": [str], ...} for per-row text
# query_embeddings: np.ndarray (N, D) — returns list[list[dict]]

# Manual maintenance checkpoint (WAL flush + segment compaction)
db.checkpoint()

# Index
db.create_index(max_degree=32, ef_construction=200, n_refinements=5,
                search_list_size=128, alpha=1.2)

# IVF coarse routing (fast approximate search at large N)
db.create_coarse_index(n_clusters=256)          # build once after loading data
results = db.search(query, top_k=10, nprobe=16) # score ~6% of corpus

# Metadata filter operators — $in/$nin/$or use index fast paths (O(1) per field)
# $eq $ne $gt $gte $lt $lte $in $nin $exists $and $or $contains
db.search(query, top_k=5, filter={"year": {"$gte": 2023}})
db.search(query, top_k=5, filter={"$and": [{"topic": "ml"}, {"year": {"$gte": 2023}}]})
db.search(query, top_k=5, filter={"topic": {"$in": ["ml", "systems"]}})    # O(1) indexed

Dataset Recovery (WAL)

TurboQuantDB replays wal.log automatically on reopen. For a local crash/power-loss recovery:

  1. Stop all writers to the DB directory.
  2. Make a copy of the DB folder (manifest.json, live_codes.bin, live_ids.bin, wal.log, etc.).
  3. Reopen the DB normally:
    db = Database.open("./my_db")
    
  4. Validate state:
    • db.stats()["vector_count"]
    • sample db.get(...) / db.search(...)
  5. Persist a clean post-recovery state:
    db.checkpoint()   # flush WAL + compact
    db.close()
    

If files are corrupted beyond WAL replay, restore from a snapshot/backup copy (server mode also supports snapshot/restore jobs; see docs/SERVER_API.md).


Benchmarks

Three datasets, 100k vectors each, matching arXiv:2504.19874 Figure 5. Benchmark config: quantizer_type=None (dense), fast_mode=True, rerank=True (MSE-only, matching paper Figure 5 bit allocation).

Benchmark recall curves — TQDB vs paper

Key results at 100k × d=1536 (DBpedia), brute-force, b=4, rerank=True:

Metric Value
Recall@1 92.2%
Recall@4 99.9%
Disk 108 MB (5.4× compression)
p50 latency ~51ms

Full tables (all 8 configs × 3 datasets), ANN guidance, and reproduction steps: docs/BENCHMARKS.md

Rerank unlocks recall at any bit depth

bits=2, rerank=True matches bits=4, rerank=True recall while using ~10% less disk, and outperforms bits=4, rerank=False at lower disk cost. (bit_sweep, n=10k, brute-force, fast_mode=True)

Dataset b=2, no rerank b=4, no rerank b=2 + rerank b=4 + rerank
GloVe-200 (d=200) 0.528 (1.8 MB) 0.822 (2.3 MB) 0.992 (3.8 MB) 0.992 (4.2 MB)
arXiv-768 (d=768) 0.426 (7.4 MB) 0.696 (9.2 MB) 0.978 (14.7 MB) 0.978 (16.6 MB)
GIST-960 (d=960) 0.294 (10.4 MB) 0.566 (12.7 MB) 0.974 (19.6 MB) 0.974 (21.9 MB)

Coverage across d=65–3072

R@1 ≥ 0.87 across all 9 benchmark datasets at b=4, rerank=True, brute-force, fast_mode=True, n=10k:

Dataset d R@1 Disk p50
lastfm-64 65 0.874 2.0 MB 1.1 ms
deep-96 96 0.980 2.5 MB 1.2 ms
glove-100 100 0.990 2.6 MB 1.4 ms
glove-200 200 0.992 4.2 MB 1.7 ms
nytimes-256 256 0.992 5.2 MB 2.0 ms
arXiv-768 768 0.978 16.6 MB 7.6 ms
GIST-960 960 0.974 21.9 MB 7.3 ms
DBpedia-1536 1536 0.998 41.1 MB 10.3 ms
DBpedia-3072 3072 1.000 117.0 MB 46.8 ms

RAG Integration

from tqdb.rag import TurboQuantRetriever

retriever = TurboQuantRetriever(db_path="./rag_db", dimension=1536, bits=4)
retriever.add_texts(texts=texts, embeddings=embeddings, metadatas=metadatas)

results = retriever.similarity_search(query_embedding=query_vec, k=5)
for r in results:
    print(r["score"], r["text"])

Server Mode

An optional Axum HTTP server in server/ adds multi-tenancy, RBAC, and async jobs. See docs/SERVER_API.md for setup, launch, and the full API reference.

For disaster recovery beyond local WAL replay, see Server Recovery Runbook (Snapshot/Restore) in docs/SERVER_API.md.


Research Basis

This is an independent implementation of ideas from the TurboQuant paper. The algorithm itself was authored by the original researchers.

Zandieh, A., Daliri, M., Hadian, M., & Mirrokni, V. (2025). TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate. arXiv:2504.19874

@article{zandieh2025turboquant,
  title={TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate},
  author={Zandieh, Amir and Daliri, Majid and Hadian, Majid and Mirrokni, Vahab},
  journal={arXiv preprint arXiv:2504.19874},
  year={2025}
}

License

Apache License 2.0 — see LICENSE.

Project details


Download files

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

Source Distribution

tqdb-0.8.1.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

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

tqdb-0.8.1-cp313-cp313-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.13Windows x86-64

tqdb-0.8.1-cp313-cp313-manylinux_2_28_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tqdb-0.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tqdb-0.8.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (5.7 MB view details)

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

tqdb-0.8.1-cp312-cp312-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.12Windows x86-64

tqdb-0.8.1-cp312-cp312-manylinux_2_28_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tqdb-0.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tqdb-0.8.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (5.7 MB view details)

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

tqdb-0.8.1-cp311-cp311-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.11Windows x86-64

tqdb-0.8.1-cp311-cp311-manylinux_2_28_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tqdb-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tqdb-0.8.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (5.7 MB view details)

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

tqdb-0.8.1-cp310-cp310-win_amd64.whl (4.3 MB view details)

Uploaded CPython 3.10Windows x86-64

tqdb-0.8.1-cp310-cp310-manylinux_2_28_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tqdb-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

tqdb-0.8.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (5.7 MB view details)

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

File details

Details for the file tqdb-0.8.1.tar.gz.

File metadata

  • Download URL: tqdb-0.8.1.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for tqdb-0.8.1.tar.gz
Algorithm Hash digest
SHA256 f487102385f9f900d1868d5af47566889c362b5399609013dc5f01696a7ab850
MD5 530fbc41b95b02307373eef7e39f6ee6
BLAKE2b-256 2ddc84716660eeb8ce0e9a133523f5dfc720f37733b5038372d16f0bbe795bd6

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: tqdb-0.8.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for tqdb-0.8.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 0e0aa79a57f3d4fcec192ed096dcd67d2c508d53a0e530ee951f9194d5eb51ae
MD5 141d35f0e3a12744e812547b51285c64
BLAKE2b-256 f788e375e128f709fbcff2f3cea38840d5da53c85b0c2b966c76939842f1f81a

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 619e84674fbe827fcda2edc9c14cc8420eee780c124f852641a04a4ac48344fc
MD5 a99ef5664b2745d34ba111c63958691f
BLAKE2b-256 bac189269399c8ad778eb15270d6f0dcf113f6589243cc92bd999925eadc326c

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4119d46b19f50dc5951c578b3723dd6adac518ce327e78e1d3df1bf033b647c5
MD5 c576e206ada6da480bcf32a1564b1d51
BLAKE2b-256 4afbf5f55b7bc5ddac585f1e3e29d722286273db817656c7f5692bdf26853399

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 936578c74a8429a454a1347436714b05659797f66e8a32d5a3b1e60a631ac575
MD5 56a936c16c8b596d29f704b34ce27980
BLAKE2b-256 3185cc345b678711b26ed5e60db49c9c2e879e72fe3025b3b1f8af3eff4b57a9

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tqdb-0.8.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for tqdb-0.8.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d5ba17319b2e8da9ef6fd5f23d5276c05507f5284c88a163a4127f04737dfe77
MD5 81f41942f35b1cb2de6874ebefd7ce7a
BLAKE2b-256 a237d5fcaf067d34867865f12ec09f8865e27aa71c7d550afe5964d95ab33178

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4289318b424a18a8bd663bd7103b52ffa8c6ab2b711ed28caf67ae82ee223b71
MD5 c9feb35b791eeecc42f927e10e48a4ba
BLAKE2b-256 fad5be8daae0bdd8ed1d6c436df4f64c3d022d6501382a41788def59518ce72e

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1334b9b752aaa60f8c8b44f1075b55dafcc969f099ea5c3cbfb6a9edd113b36f
MD5 d9147298962573d43d1d8ef877982ab6
BLAKE2b-256 fbcde082c2450a25e3d3e8ef25e934d2ec9a05b5bf9e214c0c33f5e919ecd17a

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 d4a715d8bfc5c35f1b3f53d928de95f0a3dc69ebd4040fad278cfa4bf41417dc
MD5 32babd4cf0653c528a3eaa568c937817
BLAKE2b-256 a6c80b78d0d8d509fb4e5e025f0f67770f9b1a008309d734a2e2a8838ca15116

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tqdb-0.8.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for tqdb-0.8.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cfb57719176b879d9dec0822166e35d6e7740fb2f1fd7a1451fdc2d63b473292
MD5 5dd3c952b0659a37f137e601ab57e725
BLAKE2b-256 442315bef908f4a82701c797bc0fc6f1c57727854adbad34b938db53a1fa8dcf

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0c280510f4bbce32c242b94e75317d9ea7957e641541bb4e8881abdb0ca9b6d3
MD5 bf037b01992b3de72ce0a1d978c01377
BLAKE2b-256 b58e9c2015af1bc74abb899aa95946a2cdb327a5e7cbb4726949424300080e40

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f48efc33767c53923c2d843b0d4486114c95ca24866234dc7f9f139cb795eae2
MD5 20547412d90b6690bb0da765d2153858
BLAKE2b-256 ed9f954a4b025d51d7645bc83bb7996e1700d86e2452851525c1e744ffdb05f2

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 38b0967850c943804bd6221dfab7a10fbb4bb8509640a3ec385ec4a38631cce0
MD5 827dcd645e1734f6271eab4038d25648
BLAKE2b-256 4d8c8c9697519b27ae2871be2c242f9943cd7312e2ed7c9341d5d06f881f23b8

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tqdb-0.8.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.13.1

File hashes

Hashes for tqdb-0.8.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 55b58ad226808909b293fefe5d6da572f5c321f8ab28e48897ad6238d1e646ad
MD5 be8757d9678fb0d26fdb4cc224b76a12
BLAKE2b-256 5251c2c3f9a3be63700dd1405661a8d947358a44aea45f25cf231c0c4f95638f

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fd415fefd2790c564f187bd014e33500f0258f3fe679810f2565281720d91f02
MD5 3a96f10976541129ae864b2f5fe39d3f
BLAKE2b-256 d44c87ad8383fc7d13a57c718dbe241b6ea329a48e50380aab8fd30d5cbcd962

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00ed07300fd97acb55fb71db7db57e753bd8d834ce5e071fac53358a2f82325f
MD5 88fe143f31d635535eb6107b0a0b1f58
BLAKE2b-256 3a8898713f44520ec715bd57439a0a944423dd91277b26dfb81bf4f2adcefea7

See more details on using hashes here.

File details

Details for the file tqdb-0.8.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for tqdb-0.8.1-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 51e0647c5c1bfe7c2cd8817e879be4a4bf32ea5373e4ff7a296d06ba3f62ee13
MD5 7a670028872c5155a0d64366f48373a9
BLAKE2b-256 6f591fd00f64efc8888c8db24d0bb305ed30dd7a45aa1fa90e8b7a2c9dc7159a

See more details on using hashes here.

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