Zero-Gravity Embedded Vector Database - Dynamic dimensions, RAM-efficient vector search
Project description
SrvDB: Embedded Vector Database for Offline AI Applications
SrvDB is a Rust-based embedded vector database designed for offline and edge AI deployments. It provides exact nearest neighbor search with a focus on simplicity, deterministic behavior, and zero external dependencies.
Design Philosophy
Target Use Cases:
- RAG (Retrieval-Augmented Generation): Local knowledge bases where accuracy is critical.
- Edge Deployment: Raspberry Pi, mobile devices, and air-gapped systems.
- Desktop Analytics: High-throughput batch processing on consumer hardware.
- Offline Applications: Environments where network connectivity cannot be assumed.
Core Principles:
- Simplicity: Drop-in deployment (
pip install srvdb) with zero configuration required. - Accuracy First: Exact search modes guarantee 100% recall, ensuring reliable AI responses.
- Resource Efficiency: Optimized for low-memory CPUs and limited storage bandwidth.
Architecture
Storage Layer Index Layer API Layer
--------------- ----------------- --------------
| vectors.bin | | Flat Index | | Python API |
| (mmap) | | (Exact) | | (PyO3) |
| | | | | (Native) |
| metadata.db | | HNSW Graph | | Rust API |
| (redb) | | (Approximate) | | |
| | | | | |
---------------- ---------------- --------------
^ ^ ^
SIMD Accel Thread Safety GIL-Free Search
(AVX-512/NEON) (parking_lot) (Concurrent)
Performance Characteristics
Benchmarks on M1 MacBook (16GB RAM, Apple Silicon)
| Mode | Ingestion | Search Latency (P99) | Memory (RAM) | Disk Usage | Recall@10 |
|---|---|---|---|---|---|
| Flat | 23,978 vec/s | 11.2ms | 78MB | 594MB | 99.9% |
| HNSW | 23,562 vec/s | 10.6ms | 21MB | 594MB | 99.9% |
| HNSW+PQ | 4,613 vec/s | 3.5ms | -79MB* | 28MB | 13.4%** |
*Negative value indicates memory reclamation during PQ training
PQ recall degrades significantly on clustered semantic data
Benchmarks on Consumer Linux Laptop (5.6GB RAM, x86_64)
| Mode | Ingestion | Search Latency (P99) | Memory (RAM) | Disk Usage | Recall@10 |
|---|---|---|---|---|---|
| Flat | 8,211 vec/s | 4.67ms | 42.16MB | 59.52MB | 99.9% |
| HNSW | 8,772 vec/s | 6.73ms | -1.01MB | 59.52MB | 99.9% |
| SQ8 (Scalar Quantization) | 9,560 vec/s | 45.79ms | 61.49MB | 16.03MB | 92.4% |
| SQ8 (IVF-HNSW) | 2,142 vec/s | 5.98ms | 43.38MB | 16.03MB | 92.4% |
Observation: The SQ8 mode offers 4x disk compression (60MB -> 16MB) but introduces significant latency (45ms). The IVF-HNSW variant attempts to mitigate this by combining compression with graph indexing but remains latency-bound compared to pure graph approaches.
Installation
pip install srvdb
Build from Source
git clone https://github.com/Srinivas26k/srvdb
cd srvdb
cargo build --release --features python
maturin develop --release
Quick Start
import srvdb
import numpy as np
# Initialize database
db = srvdb.SrvDBPython("./vectors")
# Bulk insert
ids = [f"doc_{i}" for i in range(10000)]
embeddings = np.random.randn(10000, 1536).astype(np.float32)
metadatas = [f'{{"id": {i}}}' for i in range(10000)]
db.add(
ids=ids,
embeddings=embeddings.tolist(),
metadatas=metadatas
)
db.persist()
# Fast search
results = db.search(query=[0.1] * 1536, k=10)
for id, score in results:
print(f"{id}: {score:.4f}")
Supported Embedding Models
Supported Dimensions: 128 - 4096 (Runtime)
Compatible Models:
- OpenAI
text-embedding-ada-002(1536-dim) - OpenAI
text-embedding-3-small(1536-dim) - Nomic
nomic-embed-text-v1(768-dim, 1536-dim variant) - Cohere
embed-english-v3.0(1024-dim, unsupported) - Use workaround below
Workaround for Non-1536 Embeddings:
from sentence_transformers import SentenceTransformer
import numpy as np
# Load model
model = SentenceTransformer('all-MiniLM-L6-v2') # 384-dim
texts = ["sample text 1", "sample text 2"]
embeddings = model.encode(texts) # Shape: (2, 384)
# Pad to 1536 dimensions
padded = np.pad(embeddings, ((0, 0), (0, 1536 - 384)), mode='constant')
padded = padded.astype(np.float32)
# Now compatible with SrvDB
db.add(
ids=["id1", "id2"],
embeddings=padded.tolist(),
metadatas=['{"source": "text1"}', '{"source": "text2"}']
)
Indexing Modes
1. Flat Index (Exact Search)
Description: Brute-force linear scan with SIMD-accelerated cosine similarity.
When to Use:
- Datasets < 50,000 vectors.
- 100% recall required.
- Predictable latency needed.
Characteristics:
- Time Complexity: O(n)
- Space Complexity: 6KB per vector (1536-dim x 4 bytes)
- Recall: 100% (exact)
2. HNSW Graph Index
Description: Hierarchical Navigable Small World graph for O(log n) search.
When to Use:
- Datasets > 100,000 vectors.
- Sub-millisecond latency required.
- 95-99% recall acceptable.
Characteristics:
- Time Complexity: O(log n)
- Space Complexity: ~6.2KB per vector (graph overhead: ~200 bytes)
- Recall: 95-99.9% (configurable via
ef_search)
3. HNSW + Product Quantization (Memory-Efficient Hybrid)
Description: Combines HNSW with 32x vector compression.
When to Use:
- Memory-constrained environments (edge devices).
- Dataset > 500,000 vectors.
- 85-95% recall acceptable.
Characteristics:
- Time Complexity: O(log n)
- Space Complexity: ~392 bytes per vector (32x compression)
- Recall: 90-95% (dependent on data distribution)
Critical Limitation: PQ mode exhibits recall degradation (13-20%) on clustered semantic data (e.g., document embeddings from the same topic). It is safe for uniformly distributed data but not recommended for RAG applications unless high recall loss is acceptable.
4. SQ8 (Scalar Quantization)
Description: Stores vectors as 8-bit integers on disk with 32x compression. Optimized for read-heavy workloads.
When to Use:
- Read-mostly workloads (archival, backups).
- Disk storage is at a premium.
Characteristics:
- Time Complexity: O(n) (Linear scan)
- Space Complexity: ~1.5KB per vector (32-bit integer)
- Recall: 92.4% (Adversarial Mix: 70% Random / 30% Clustered)
- Latency: Significantly higher than HNSW (10-45ms P99 at 50k vectors).
5. IVF-HNSW (Scalable Inverted File)
Description: Partitions vector space into Voronoi cells (Inverted File) and refines candidates using HNSW. Optimized for datasets exceeding 1M vectors.
When to Use:
- Massive scale datasets (1M+ vectors).
- Sub-10ms latency requirement (P99).
- High recall (90-99%) maintained at scale.
Architecture:
- Coarse Search: Identifies closest Voronoi cell centers (partitions) for the query.
- Fine Search: Performs HNSW graph traversal only within the selected partitions.
- Parallelism: Uses Rayon for concurrent partition access.
Performance:
- Latency: ~6ms P50 at 100k vectors.
- Scalability: Linear throughput up to 1M vectors.
- Memory: Low overhead per partition compared to full graph.
API Reference
Initialization
# Flat mode (default)
db = srvdb.SrvDBPython(path: str)
# HNSW mode
db = srvdb.SrvDBPython.new_with_hnsw(
path: str,
m: int = 16,
ef_construction: int = 200,
ef_search: int = 50
)
# HNSW + PQ mode
db = srvdb.SrvDBPython.new_with_hnsw_quantized(
path: str,
training_vectors: List[List[float]],
m: int = 16,
ef_construction: int = 200,
ef_search: int = 50
)
# IVF-HNSW mode
db = srvdb.SrvDBPython(path: str)
db.set_mode("ivf")
db.configure_ivf(nlist=1024, nprobe=16)
db.train_ivf(ids, vectors)
Operations
# Insert vectors
db.add(
ids: List[str],
embeddings: List[List[float]], # 1536-dim default
metadatas: List[str] # JSON strings
) -> int
# Search
db.search(
query: List[float], # 1536-dim
k: int
) -> List[Tuple[str, float]]
# Batch search (parallel)
db.search_batch(
queries: List[List[float]],
k: int
) -> List[List[Tuple[str, float]]]
# HNSW runtime tuning
db.set_ef_search(ef: int) -> None # HNSW and IVF modes only
# Get metadata
db.get(id: str) -> Optional[str]
# Count vectors
db.count() -> int
# Persist to disk
db.persist() -> None
# IVF specific training
db.train_ivf(
ids: List[str],
vectors: List[List[float]]
) -> None
Performance Tuning
HNSW Parameters
# High accuracy (slower, more memory)
db = srvdb.SrvDBPython.new_with_hnsw(
path,
m=32, # More connections
ef_construction=500,
ef_search=200
)
# Balanced (recommended)
db = srvdb.SrvDBPython.new_with_hnsw(
path,
m=16,
ef_construction=200,
ef_search=50
)
# Fast (lower accuracy)
db = srvdb.SrvDBPython.new_with_hnsw(
path,
m=8,
ef_construction=100,
ef_search=20
)
Benchmarking Your Hardware
We provide a standardized benchmark script to validate performance on your specific hardware.
pip install srvdb numpy scikit-learn psutil
python universal_benchmark.py
The script automatically detects available RAM, adjusts dataset size (10k-1M vectors), and uses an adversarial data mix (70% random / 30% clustered) to stress-test quantization accuracy.
Community Contribution:
Share your results in GitHub Discussions to help validate performance across different CPU architectures (Intel, AMD, ARM/M1).
Known Limitations
Critical Limitations
- Dimensionality: v0.2.0 fully supports dynamic dimensions (128-4096).
- Product Quantization (PQ) Recall: PQ mode exhibits severe recall degradation (13-20%) on clustered semantic data (e.g., RAG documents). It is recommended to use Flat or HNSW modes for semantic tasks.
- Concurrent Write Contention: Single-writer design; multiple processes cannot write simultaneously.
- No Dynamic Updates: Vector deletion/update requires index rebuild.
Minor Limitations
- SQ8 Latency: Scalar Quantization (SQ8) is optimized for disk compression and read-heavy workloads but incurs significant latency (10-45ms) for search.
- Memory Measurement: Benchmark reports may show inconsistent memory deltas due to OS caching behavior.
Future Work
v0.2.1 Roadmap (Q1 2026)
High Priority:
- Incremental vector updates/deletion.
- Async I/O for ingestion.
- Memory optimization (target: <100MB for 10k vectors).
Medium Priority:
- IVF optimization (OPQ - Optimized Product Quantization) to solve PQ recall loss on clustered data.
- Filtered search (metadata-based pre-filtering).
- GPU acceleration (CUDA/Metal) for SIMD operations.
Low Priority:
- Distributed sharding (multi-node deployment).
- Approximate quantization (scalar/binary).
Contributing
We invite you to help shape the future of offline vector search.
Areas of Focus:
- Algorithm Improvements: Better clustering for PQ/OPQ, alternative indexing structures (IVF, LSH).
- Engineering: Dimension flexibility, async I/O refactoring, memory profiling.
- Testing: Benchmark validation on diverse hardware and integration with popular embedding models.
See CONTRIBUTING.md for development setup and guidelines.
License
SrvDB is open-source software licensed under the GNU Affero General Public License v3.0 (AGPLv3).
🟢 Open Source Use
You are free to use SrvDB for personal projects, academic research, and open-source applications under the terms of the AGPLv3.
🔴 Commercial & Cloud Use
If you are building a proprietary application, a cloud service (SaaS), or embedding SrvDB in a commercial product where you cannot or do not wish to open-source your code, you must purchase a Commercial License.
Commercial Licensing Benefits:
- Exemption from AGPLv3 open-source requirements.
- Priority support & direct access to the maintainer.
- Legal assurance for enterprise deployment.
For commercial licensing inquiries, please contact: srinivasvarma764@gmail.com
Acknowledgments
SrvDB relies on the following open-source projects:
- SimSIMD - SIMD distance kernels
- Rayon - Data parallelism
- PyO3 - Python-Rust bindings
- redb - Embedded key-value store
- parking_lot - Fast synchronization primitives
Support
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: srinivasvarma764@gmail.com
For bug reports or feature requests, please include system information and minimal reproduction code.
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
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 srvdb-0.2.0.tar.gz.
File metadata
- Download URL: srvdb-0.2.0.tar.gz
- Upload date:
- Size: 455.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9eea0bc6ca3b404187f2aaa57934ad850c404822c2fa3a1039a1cd6417f04efb
|
|
| MD5 |
26872327780cce9259d62000c16812d2
|
|
| BLAKE2b-256 |
ba079077b61a7b4892cec4ffa3d7f692ce1d7f6c50ae9fa47cf04610996bd9d3
|
File details
Details for the file srvdb-0.2.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 654.4 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47160593024bee1b1a46561a98349097544dcecc02c71138b6a40b41e8ec6b7b
|
|
| MD5 |
76598c408b0c3458493428dbea745efd
|
|
| BLAKE2b-256 |
d9c476454e03f5e7545a3bd74690d9c7906eceb31fea08547371968d88b0983b
|
File details
Details for the file srvdb-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 778.1 kB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d13ab6e9c5259a975255ee0368a6035de56678b2230ba3f583567359816abf9b
|
|
| MD5 |
54a179d7a73264a8a1837f24e73c85bd
|
|
| BLAKE2b-256 |
ff80676e2760a39c9d0abfa0234fbfe77969d0dc50d0d9d7f658adc541c97f9d
|
File details
Details for the file srvdb-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 665.1 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1aa1e50be6373c1dfcb5271d37e647c8d1965da501b46f28240ebcf9692bae4c
|
|
| MD5 |
80fba4069eb6e4b1f4523d5820d94811
|
|
| BLAKE2b-256 |
2131974a2e1bf26d176ec7e702a8602d0ad2c8c60691be43e62a46fd0f255d35
|
File details
Details for the file srvdb-0.2.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 652.5 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fd766d916dbc4149806e1bbc047febc94397fa30c0eedbddbe16088e8036163
|
|
| MD5 |
196948d420f5f00c8dcb3c43885d3baa
|
|
| BLAKE2b-256 |
07601b2ad1a5bae6ef6bfe743cd2674921063f4d4db6848169a6a54a5a0760f2
|
File details
Details for the file srvdb-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 777.0 kB
- Tags: CPython 3.11, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a599ccf811aab6d34fe50f4927ec804ff7023151cb9b2ba0ae6f842a962c9810
|
|
| MD5 |
d4b84a102982d6fab814cfd4fa132966
|
|
| BLAKE2b-256 |
eb2982053611b1be231a9a2773d1af7d6a842d0b2ff98593e3cb07cd7b028b77
|
File details
Details for the file srvdb-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 664.7 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed3db78a41af99cbe8558a1e031e5170174eea402305b90ebb420849dc9b036a
|
|
| MD5 |
7606b5d351e780c0d7db5561032ef111
|
|
| BLAKE2b-256 |
5c1f88d89d1918a027924cbf0e6b8989e71d6ce32e6327a8812f7de00dd948c8
|
File details
Details for the file srvdb-0.2.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 653.1 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed4bbe47b812ad7f710b5f8c69531af48211b985c2ed4e6e8d5ad73895514a22
|
|
| MD5 |
b889236f99e76f7830051b4fd3aab7e1
|
|
| BLAKE2b-256 |
06809e4ad634e23bec09b49c890553867ddb8300712b97d566055672de227717
|
File details
Details for the file srvdb-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 777.4 kB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef396231020d85c2f4370ef167c202bfa1fef8b9b26f2a4a935e1f2d29dac1be
|
|
| MD5 |
966160c646ac4d4c83b3b81ff2f3d056
|
|
| BLAKE2b-256 |
9d464759bdc2fbc78d536229503e9edd086945b97bb59a50e15a40bee6ba03a6
|
File details
Details for the file srvdb-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 664.8 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52e1ba32b8cf6521314422ceb1df549a90442831f4f68cce708e4fffcfbca898
|
|
| MD5 |
33d6934a12becc63843345fa247ad810
|
|
| BLAKE2b-256 |
0f5d1efb29c2fe7737a742a3f29ebd5373966a59b4291f56720aca3c864d93a6
|
File details
Details for the file srvdb-0.2.0-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 653.4 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cb8bd966ac9b8e193e5d133bfd4e133b021e2877837a41b3a65fa9a3dde49a6
|
|
| MD5 |
2e43a11f3a13a25177e6aeeba5e64edc
|
|
| BLAKE2b-256 |
e01abd27465e7bc71376fda6c6a4c3a865586205a54bccf8f86529993d3292a9
|
File details
Details for the file srvdb-0.2.0-cp39-cp39-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp39-cp39-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 777.7 kB
- Tags: CPython 3.9, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1214b52ae85bb99fc5813cacccfa1b3f93f66a18e6bf5073db0669343a1a2e6a
|
|
| MD5 |
35b138be5ebde5762669391bab6eaef0
|
|
| BLAKE2b-256 |
353c8466b82ed5a1e276a3b16f46f550a922191eafeb847bd3a84e21d6dcf14e
|
File details
Details for the file srvdb-0.2.0-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 664.9 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc634abb4e5f6071d2eabd33afe62830595b396bb6f5fec5ad4d9f8df1ff735c
|
|
| MD5 |
66392f9cacf1fe3acfaa299d27e8123e
|
|
| BLAKE2b-256 |
588d87e47159a1d06af95722126fb75db603f8560afaea3b21f446f5829b7080
|
File details
Details for the file srvdb-0.2.0-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 653.5 kB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d9ea3baccdb59191b632d5d565e79af5ab31a6e15d6eaa3d93602162325e66b
|
|
| MD5 |
d4850fa7993a3a407bf067fa3f3d784c
|
|
| BLAKE2b-256 |
8acd3647ad88e98297f4aa144b84a5f16e5a2c6def41dd017bd639fd487b31f3
|
File details
Details for the file srvdb-0.2.0-cp38-cp38-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp38-cp38-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 777.8 kB
- Tags: CPython 3.8, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f35eb4148b2fdfc20805001ad1d2bb590348c6260ee3abfbd55e6b536a3342d0
|
|
| MD5 |
3b3eed75d49fdb6f3cfa1e2cfbda3fdc
|
|
| BLAKE2b-256 |
c17f1a0290a197cae0e13b8d4825edf8c579b7468fb919664dc41e072fd87299
|
File details
Details for the file srvdb-0.2.0-cp38-cp38-macosx_11_0_arm64.whl.
File metadata
- Download URL: srvdb-0.2.0-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 665.0 kB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ebc1bb13a7d9475db27b6ce9103e7c3d1fcb2cfc2c614c5377578713a240026
|
|
| MD5 |
d012730dcc50d602ccc6c54a7cd31b06
|
|
| BLAKE2b-256 |
56599bc007372a13fa8807af086ca8bc37d7143f682bce04308d8bdb2ab123c8
|