Need more information? Visit here
VectorWave
Semantic caching and golden-data regression testing for your LLM functions — from one decorator.
@vectorize captures every call your function makes — inputs, outputs, vectors, timing. That single execution history powers two things teams usually build and wire up separately: a semantic cache that skips re-running work you've already done, and a pytest regression oracle that catches the drift assert a == b can't. Drift detection and an experimental auto-diagnosis step fall out of the same history — but caching and testing are the core.
pip install vectorwave # Pro mode (Weaviate)
pip install "vectorwave[lite]" # Lite mode (LanceDB, no Docker)
pip install "vectorwave[otel]" # + OpenTelemetry mirror
Requirements
- Python: 3.10 – 3.13
- Docker (Pro mode only): runs the Weaviate database. Skip with Lite mode.
- OpenAI API Key (optional): for AI auto-documentation and high-performance embeddings.
How to reach us
- GitHub Issues: https://github.com/cozymori/vectorwave/issues
- Contributors: github.com/Cozymori/VectorWave/graphs/contributors
- Contributing guide: Contributing.md
🚀 What is VectorWave?
VectorWave solves two problems that LLM-backed Python code keeps running into — with one mechanism:
- The same prompt is processed twice. Direct LLM calls are expensive; the same semantic input usually has the same useful output. → Semantic caching with cosine-similarity lookup.
- You can't
assert a == bon an LLM. Output drifts a little every run. A regression that drops a clause looks identical to one that swaps a word. → Pytest plugin that compares to golden data by similarity, exact match, or LLM judge.
Both come from the same source: @vectorize records every call, and that golden execution history is reused as the cache and as the test oracle. Two more capabilities fall out of the same history — semantic drift detection and an experimental automatic error diagnosis step (opt-in; see below) — but caching and testing are the load-bearing core.
😊 Quick Start
1. Install
pip install vectorwave # Pro mode (default; requires Weaviate)
# or
pip install "vectorwave[lite]" # Lite mode — embedded LanceDB, no Docker
For Pro mode (Weaviate), bring your own instance or use the bundled dev stack:
vectorwave dev start # starts Weaviate + console on localhost
For Lite mode, no setup beyond pip install:
export VECTORWAVE_MODE=lite
2. Two demos in one decorator
A. Semantic caching
import time
from vectorwave import vectorize, initialize_database
initialize_database() # Pro mode only; in Lite mode (VECTORWAVE_MODE=lite) skip this
@vectorize(semantic_cache=True, cache_threshold=0.95, capture_return_value=True)
def expensive_llm_task(query: str):
time.sleep(2)
return f"Processed result for: {query}"
# First call: cache miss → ~2.0s
print(expensive_llm_task("How do I fix a Python bug?"))
# Second call — different words, same meaning: cache hit → ~0.02s
print(expensive_llm_task("What's the best way to fix a bug in Python?"))
B. Pytest regression test
After your function has built up some golden executions, drop this in any test file:
import pytest
@pytest.mark.vectorwave(
target="myapp.expensive_llm_task",
strategy="similarity",
threshold=0.85,
limit=10,
)
def test_no_regression():
pass
pytest re-runs the function against captured inputs and fails the test if the new output drifts below the threshold. There is also a vw_replay fixture for programmatic inspection. Configuration layers from marker kwargs → [tool.vectorwave.check."<target>"] in pyproject.toml → global defaults.
To pick a threshold instead of guessing:
vectorwave check calibrate myapp.expensive_llm_task
# Reports p5/p10/p25/p50/p75/p95 of pairwise similarity and a recommended threshold.
# Use --rerun to measure the honest noise floor by re-executing the function.
Experimental — Automatic error diagnosis: VectorWave can also read a function's runtime errors from its execution history and open a GitHub PR with a suggested patch (opt-in, Pro-only, needs an LLM + GitHub token). It's deliberately not a headline guarantee — see Automatic Error Diagnosis & Patch PRs under Key Features below.
⭐ Key Features
⚡ Semantic Caching
Cache LLM calls by meaning, not by exact string. Powered by HNSW vector indexes in Weaviate (Pro) or LanceDB (Lite). Threshold-based hit decisions per function.
- Latency: seconds → milliseconds.
- Cost: up to 90% fewer LLM tokens.
🧪 Pytest Regression Testing — new in 1.0
One marker, one threshold. Reuses your golden execution history as the test oracle.
@pytest.mark.vectorwave(target="myapp.fn", strategy="similarity", threshold=0.85)
def test_fn_regression():
pass
Three strategies: exact, similarity, llm (LLM-as-a-judge). See ADR-0002 for the design rationale.
🎯 Threshold Calibration — new in 1.0
vectorwave check calibrate myapp.summarize # cheap: output diversity
vectorwave check calibrate myapp.summarize --rerun # honest: noise floor
Outputs a percentile distribution + a ready-to-paste [tool.vectorwave.check."<target>"] snippet. Recommends strategy="exact" for deterministic targets and strategy="llm" for highly variable ones.
💾 Lite Mode — new in 1.0
Embedded LanceDB backend. No Docker, no ports, single on-disk directory.
pip install "vectorwave[lite]"
export VECTORWAVE_MODE=lite
Trade-off documented in ADR-0001: Lite mode gives up server-side vectorization and distributed batching in exchange for zero setup.
📡 OpenTelemetry Mirror — new in 1.0
VW spans appear in your existing OTel stack (Datadog, Honeycomb, Jaeger, Tempo) alongside the rest of your service traces.
pip install "vectorwave[otel]"
export OTEL_SERVICE_NAME=myapp
Mirror, not replacement — VW's own pipeline keeps full semantic context. See ADR-0003.
📊 Semantic Drift Radar
Detect when your users start asking things your model wasn't trained for.
- Anomaly Detection: distance between new queries and the Golden Dataset.
- Alerting: Discord / webhook notifications past the drift threshold (default 0.25).
🧪 Automatic Error Diagnosis & Patch PRs — experimental
Opt-in and Pro-only. When a @vectorized function raises, VectorWave can read the error from its execution history, ask an LLM for a fix, and open a GitHub Pull Request with the suggested patch — for you to review, never auto-merged.
- RAG over your execution history for root-cause context.
- You stay in the loop: it opens a PR, you approve. A cooldown prevents PR spam for the same error.
- Requirements:
OPENAI_API_KEY,GITHUB_TOKEN+GITHUB_REPO_NAME, and Pro mode (Weaviate).
This is the most experimental part of VectorWave and is intentionally not one of its headline guarantees. Rationale and internals in healer.py.
🏗 Architecture
VectorWave sits as a transparent layer between your application and the LLM / infrastructure. Storage is pluggable behind a VectorStore protocol — Pro (Weaviate) and Lite (LanceDB) backends share every other component.
Core Components
- Optimization Engine: intercepts function calls, checks semantic cache, returns a hit if one exists within threshold.
- Trace Context Manager: collects execution logs, inputs, outputs, vectors — without modifying your code structure.
- VectorStore Layer: backend-neutral storage protocol. New backends are a single-file addition.
- Auto-Diagnosis Pipeline (experimental): on errors, diagnoses from history and opens a patch PR for review.
- Check Plugin (
vectorwave.check): pytest entry-point + calibration CLI.
⏱ Performance
Caching gains (Pro mode, real LLM call)
| Metric | Direct execution | With VectorWave | Improvement |
|---|---|---|---|
| Latency (cache hit) | ~2.5 s (LLM API) | ~0.02 s | 125× faster |
| Cost (cache hit) | $0.03 / call | $0.00 | 100% savings |
Wrapper overhead (@vectorize on a bare Python function)
Median time per call, measured via pytest src/tests/benchmarks/ --benchmark-only on Darwin / CPython 3.12 / Apple Silicon:
| Variant | Median | Overhead vs bare |
|---|---|---|
| bare Python function (anchor) | 33.8 ns | 1× |
@vectorize, no capture |
11.4 µs | ~338× |
@vectorize + capture_return_value |
13.9 µs | ~411× |
@vectorize + capture_inputs |
14.8 µs | ~439× |
For any function doing >1 ms of real work, the wrapper tax is in the noise. The 33.8 ns baseline is an empty function — the "× vs bare" numbers look dramatic until you remember that.
Embeddings: how many, and how to keep them cheap
VectorWave embeds input text, and does so sparingly — one small vector per stored call:
Per @vectorize call |
Embeddings |
|---|---|
cache hit (semantic_cache=True) |
1 — the lookup vector is reused for the hit log |
cache miss (semantic_cache=True) |
2 — one to look up, one to store the new execution |
logging only (no semantic_cache) |
1 — the stored execution vector |
| a call that errors | 1 — the error message (used for error search) |
Function registration embeds a one-line description once per function and caches it (.vectorwave_functions_cache.json) — it does not re-embed on every call. Drift detection reuses the stored vector, so it adds zero extra embeddings.
Keeping it cheap:
VECTORIZER=huggingface(default) — embeddings run locally on CPU withall-MiniLM-L6-v2(384-dim). No API calls, no per-call cost, nothing leaves the process.VECTORIZER=weaviate_module— Weaviate embeds server-side (one round trip, no Python-side model).VECTORIZER=openai_client— each embedding is an OpenAI API call (highest quality, but real cost + latency per call). Reserve it for when you need it.VECTORIZER=none— no embeddings at all (disables semantic caching and drift).
Only calibration batches embeddings (embed_batch); the per-call path embeds one text at a time, and the batch manager batches DB writes, not embeddings.
🆚 How does VectorWave compare?
| Feature | GPTCache | ragas / deepeval / promptfoo | VectorWave |
|---|---|---|---|
| Semantic caching (execution-level) | O | X | O |
| Golden-data regression testing | X | O | O |
| Pytest integration | X | △ | O (marker + fixture) |
| Threshold calibration (CLI) | X | △ | O (percentile-backed) |
| Auto error diagnosis & patch PR (experimental) | X | X | O |
| OpenTelemetry mirror | X | X | O |
| Drift detection | X | △ | O |
| Zero-config local mode | △ | △ | O (Lite mode) |
Most teams pick a caching tool and a regression-testing tool and an observability integration and wire them up themselves. VectorWave gives you one decorator and one config file.
🧠 How it works
Unlike traditional Key-Value caching (e.g., Redis), VectorWave understands Context.
- Vectorization: function arguments → high-dimensional vectors via OpenAI / HuggingFace.
- Search: Approximate Nearest Neighbor (ANN) lookup in the vector store.
- Decision:
- Neighbor within
threshold→ return cached result. - Otherwise → execute function → async-log to DB (the new entry becomes future golden data).
- Neighbor within
Golden executions feed the regression-test layer. Drift over time feeds the radar. Errors feed the experimental auto-diagnosis step. Same substrate — caching and testing at the core, the rest derived.
🔒 Data Handling
VectorWave stores what your functions do, so it's worth knowing exactly what lands where:
- What's captured: per call, the function's inputs (with
capture_inputs/replay), return value (withcapture_return_value), a vector embedding of the input text, and timing/status metadata. The function's source code is also stored (used by regression replay and the experimental auto-diagnosis). - Redaction: before anything is stored, values whose keys match
sensitive_keysare replaced with[MASKED](defaults:password,api_key,token,secret,auth_token). Add your own PII/secret keys via settings — masking runs in themask_and_serializepath on the way in. - Where it lives: Lite mode keeps everything in a local on-disk directory (
.vectorwave/) — nothing leaves your machine. Pro mode writes to the Weaviate instance you run. - Embeddings & third parties: with
VECTORIZER=huggingface, embeddings are computed locally; withopenai_clientor Weaviate'stext2vec-openai, the input text is sent to OpenAI to be embedded. The experimental auto-diagnosis also sends source + error context to an LLM. - Retention: 1.0 has no automatic TTL — you own the store's lifecycle. Drop collections to delete history; back up the Weaviate volume (Pro) or the
.vectorwave/directory (Lite) as you would any datastore.
Treat the execution store like application logs that may contain user data: scope sensitive_keys to your fields, and prefer Lite mode with local embeddings when inputs are sensitive.
📚 Further reading
- CHANGELOG.md — release history.
- docs/adr/ — architectural decision records.
- Contributing.md — how to set up the dev environment and submit a PR.
😍 Contributing
We are extremely open to contributions — new vectorizers, better diagnosis prompts, additional backends, doc improvements, typo fixes. Please read the Contributing guide before opening a PR.
Metadata
Release files for vectorwave 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vectorwave-1.0.2.tar.gz | 79.8 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| vectorwave-1.0.2-cp314-cp314-win_amd64.whl | CPython 3.14 | CPython 3.14 | Windows x86-64 | Details |
| vectorwave-1.0.2-cp314-cp314-manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.28+ x86-64 | Details |
| vectorwave-1.0.2-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 | Details |
| vectorwave-1.0.2-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| vectorwave-1.0.2-cp313-cp313-manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ x86-64 | Details |
| vectorwave-1.0.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
| vectorwave-1.0.2-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| vectorwave-1.0.2-cp312-cp312-manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64 | Details |
| vectorwave-1.0.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
| vectorwave-1.0.2-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| vectorwave-1.0.2-cp311-cp311-manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64 | Details |
| vectorwave-1.0.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 | Details |
| vectorwave-1.0.2-cp310-cp310-win_amd64.whl | CPython 3.10 | CPython 3.10 | Windows x86-64 | Details |
| vectorwave-1.0.2-cp310-cp310-manylinux_2_28_x86_64.whl | CPython 3.10 | CPython 3.10 | Linux glibc 2.28+ x86-64 | Details |
| vectorwave-1.0.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.10 | CPython 3.10 | macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
Total release size: 7.1 MB
Release files / vectorwave-1.0.2.tar.gz
| Download URL | vectorwave-1.0.2.tar.gz |
|---|---|
| Size | 79.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8602c13638b9a773bbc8641659ffa066ad57aac5722bbd4e8f034c765d655d7b
|
|
BLAKE2b-256 checksum How to use checksums |
693ac0f8c04bf7ec2af0b8347943fac0a7f18f06bed3b1104c23621103236cf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp314-cp314-win_amd64.whl
| Download URL | vectorwave-1.0.2-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 286.4 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
47988ac948bacf3bb1e60e549ab53cca07e8bc7644f9d74674464804418d90a5
|
|
BLAKE2b-256 checksum How to use checksums |
ae25edc77bae4866d29b6cce38f2e6f4df5f402ac6789cab0ce5479f9e4c9d8f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | vectorwave-1.0.2-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 437.8 kB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
8f5fb9ace320b72ca4bd37f2d455d1aa0f712373df034b95515f86f28b3af4f4
|
|
BLAKE2b-256 checksum How to use checksums |
18894d138e8e755628cfeeaebc4275b0f790d8f096b489f251c7167bacd4138f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | vectorwave-1.0.2-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 684.4 kB |
| Tags | CPython 3.14 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9da1c2b8ec92078423466a4c46ddd9f13fe35ebfbdaa4f463a3c536740672c4c
|
|
BLAKE2b-256 checksum How to use checksums |
5debbecc25c8d6e1f23bd653d9d018546d5208a539219aba8ac352190938f5dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp313-cp313-win_amd64.whl
| Download URL | vectorwave-1.0.2-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 286.4 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
dc5bcc5f6619b9714e9a9852163315661be6efeac6e35dca1152e27d4942bd81
|
|
BLAKE2b-256 checksum How to use checksums |
d1d3ae86fae85d2cc8bcd1c07ffc202df50295b849850c86f2a9e0cc4b6bcbef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | vectorwave-1.0.2-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 437.8 kB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
b9d875a13840c79e02160cbc5c98ec8ae28f7ca2043d6d7e31dcc5c328ac853d
|
|
BLAKE2b-256 checksum How to use checksums |
495ce9fb74c4a769ab0b9f0b2b9b50946ff8a5d0bbd35c45df1eb3f91a671fc8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | vectorwave-1.0.2-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 684.4 kB |
| Tags | CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
35a08aabb9661a4158cad279494c5410ed3d618913222850f18a4b518e1fd37e
|
|
BLAKE2b-256 checksum How to use checksums |
6ebddac9c49b3e9d2ae5757af6e4176d5f4820542b09bc0748ae972b0b33a3b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp312-cp312-win_amd64.whl
| Download URL | vectorwave-1.0.2-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 286.5 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
33bad017156cd6313428eb2cfe8c6b65ef37a838d1beebbb7afcab9e607f14a4
|
|
BLAKE2b-256 checksum How to use checksums |
210072a4e1b0d441bd4716ebd10c258085a07d1b8b26748e49de8af1d50d7a9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | vectorwave-1.0.2-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 437.5 kB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9113c1998b21b5cc290bf7a19c15fc3593a51fe1a03d1d2bbe9180c5e164483b
|
|
BLAKE2b-256 checksum How to use checksums |
ad950a75ad86b021e4726a2acd106a44809f4dfa1f0510b9db9df27e0fa3fc0d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | vectorwave-1.0.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 684.5 kB |
| Tags | CPython 3.12 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e6e4beb329f7d7b8d438998c5a66f0a736ceaec18d9d69c8e748c75241d079b6
|
|
BLAKE2b-256 checksum How to use checksums |
667236a38f529f107081f22c641af515ee80f4d64fbfe2eadd869cb51c4f68bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp311-cp311-win_amd64.whl
| Download URL | vectorwave-1.0.2-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 286.7 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
ebc8580fc95d4f73d050ea1f631b6f4b461366d6efe574a711a5bbd89606ec39
|
|
BLAKE2b-256 checksum How to use checksums |
82dc146eea2973645a2792f14ad6c94b215da615b680328f304d46e27ef5656d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | vectorwave-1.0.2-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 437.8 kB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f4073877d8af52a463e438d1e2136674701e437ca496c8e73ae2a3128906d15d
|
|
BLAKE2b-256 checksum How to use checksums |
2635de73d2826e5de2bfcd9894fd2f869e46859813affe319a634a5f11c108f3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | vectorwave-1.0.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 689.5 kB |
| Tags | CPython 3.11 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7b5f414b99ed4f372ccd97b0aa7ecb5faa6a10bb1fcf34087467fc9814c9f9c6
|
|
BLAKE2b-256 checksum How to use checksums |
0911d7bedb89bafd594a0d0bc421d4e9a442272a07efca2ba2e10e9aac621063
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp310-cp310-win_amd64.whl
| Download URL | vectorwave-1.0.2-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 288.9 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
eaf87fcd07aed211280a8edad836c972a3cad627f092f8c2e2953ae50bd666f6
|
|
BLAKE2b-256 checksum How to use checksums |
9dc43dabbcea1bc7ebd4f895e7257142c5b6614633e17fa6a5fd90e1fade6afe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | vectorwave-1.0.2-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 440.1 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d88377c2d0bd50c073ee57c1941c0ed8da3351b9527049c664471e4c6f667e90
|
|
BLAKE2b-256 checksum How to use checksums |
0512e88cf041d33eaf4aabc329e2d44d31863cf7e7d2b6d6fce1b56bd90a1a43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|
Release files / vectorwave-1.0.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | vectorwave-1.0.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 693.3 kB |
| Tags | CPython 3.10 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
67266cb69508cbe53e1b9c71e5e7af2ac4142ae8feb61a89527737f8b71f4f0a
|
|
BLAKE2b-256 checksum How to use checksums |
a20c84ba5f970ad2175e84aef48803f30daac73e80a96ee655821dc625d68fc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.15.0
|