pyvectorhound 1.1.1__tar.gz → 1.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.github/workflows/ci.yml +8 -2
- pyvectorhound-1.3.0/CHANGELOG.md +110 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/Cargo.lock +30 -19
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/Cargo.toml +2 -2
- pyvectorhound-1.3.0/DASHBOARD_SHORTCUTS.md +161 -0
- pyvectorhound-1.3.0/DEPLOYMENT.md +673 -0
- pyvectorhound-1.3.0/LICENSE +22 -0
- pyvectorhound-1.3.0/OTEL_SETUP_GUIDE.md +319 -0
- pyvectorhound-1.3.0/PKG-INFO +213 -0
- pyvectorhound-1.3.0/PRODUCTION_DEPLOYMENT.md +512 -0
- pyvectorhound-1.3.0/README.md +151 -0
- pyvectorhound-1.3.0/USER_GUIDE.md +609 -0
- pyvectorhound-1.3.0/docs/PRODUCT_VISION.md +95 -0
- pyvectorhound-1.3.0/docs/ROADMAP.md +192 -0
- pyvectorhound-1.3.0/examples/benchmarking_and_trends.py +211 -0
- pyvectorhound-1.3.0/examples/mcp_pyvectorhound.py +27 -0
- pyvectorhound-1.3.0/otel_exporter.py +189 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyproject.toml +19 -18
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/__init__.py +64 -3
- pyvectorhound-1.3.0/pyvectorhound/_mcp_connector.py +105 -0
- pyvectorhound-1.3.0/pyvectorhound/_mcp_tools.py +321 -0
- pyvectorhound-1.3.0/pyvectorhound/advanced_analytics.py +439 -0
- pyvectorhound-1.3.0/pyvectorhound/benchmarking.py +401 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/cli.py +12 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/comparison.py +74 -36
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/database.py +44 -18
- pyvectorhound-1.3.0/pyvectorhound/db_adapters.py +549 -0
- pyvectorhound-1.3.0/pyvectorhound/diagnosis.py +578 -0
- pyvectorhound-1.3.0/pyvectorhound/hound.py +455 -0
- pyvectorhound-1.3.0/pyvectorhound/langchain_integration.py +388 -0
- pyvectorhound-1.3.0/pyvectorhound/llamaindex_integration.py +470 -0
- pyvectorhound-1.3.0/pyvectorhound/otel_integration.py +469 -0
- pyvectorhound-1.3.0/pyvectorhound/recommendations.py +570 -0
- pyvectorhound-1.3.0/pyvectorhound/retrieval_replay.py +446 -0
- pyvectorhound-1.3.0/pyvectorhound/retrieval_tracing.py +423 -0
- pyvectorhound-1.3.0/pyvectorhound/scorer.py +274 -0
- pyvectorhound-1.3.0/pyvectorhound/scripts/__init__.py +0 -0
- pyvectorhound-1.3.0/pyvectorhound/scripts/post_install.py +24 -0
- pyvectorhound-1.3.0/pyvectorhound/scripts/setup_shortcuts.sh +35 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/server.py +15 -1
- pyvectorhound-1.3.0/pyvectorhound/trend_analysis.py +526 -0
- pyvectorhound-1.3.0/pyvectorhound/web_dashboard.py +501 -0
- pyvectorhound-1.3.0/pyvectorhound.toml +22 -0
- pyvectorhound-1.3.0/scripts/setup_shortcuts.sh +30 -0
- pyvectorhound-1.3.0/scripts/test_dashboards_crossplatform.sh +208 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/src/lib.rs +9 -3
- pyvectorhound-1.3.0/tests/test_benchmarking.py +307 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/tests/test_diagnosis.py +1 -1
- pyvectorhound-1.3.0/tests/test_recommendations.py +335 -0
- pyvectorhound-1.3.0/tests/test_retrieval_replay.py +381 -0
- pyvectorhound-1.3.0/tests/test_trend_analysis.py +414 -0
- pyvectorhound-1.3.0/tests/test_v05_integrations.py +336 -0
- pyvectorhound-1.1.1/CHANGELOG.md +0 -41
- pyvectorhound-1.1.1/LICENSE +0 -21
- pyvectorhound-1.1.1/PKG-INFO +0 -693
- pyvectorhound-1.1.1/README.md +0 -632
- pyvectorhound-1.1.1/ROADMAP.md +0 -73
- pyvectorhound-1.1.1/pyvectorhound/diagnosis.py +0 -303
- pyvectorhound-1.1.1/pyvectorhound/hound.py +0 -230
- pyvectorhound-1.1.1/pyvectorhound/scorer.py +0 -199
- pyvectorhound-1.1.1/tests/test_vector_operations.py +0 -291
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.github/dependabot.yml +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.gitignore +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/.pre-commit-config.yaml +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/ARCHITECTURE.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/CODE_OF_CONDUCT.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/CONTRIBUTING.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/Makefile +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/OKF_INTEGRATION.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/SECURITY.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/ARCHITECTURE.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/GUIDE.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PYHOUND_FINAL_STATUS.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_COMPETITIVE_ROADMAP.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_FINAL_PRODUCT.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_GITHUB_LAUNCH.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_LAUNCH_CHECKLIST.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_UNIFICATION_STRATEGY.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/docs/strategy/PyHound_vs_Observability.md +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/examples/retrieval_debug.py +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/install.sh +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/_safe_exec.py +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/backends.py +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/error_messages.py +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/errors.py +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/logging_config.py +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/okf_diagnostics.py +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/py.typed +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/pyvectorhound/validation.py +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/rust-toolchain.toml +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/src/metrics.rs +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/tests/test_hound.py +0 -0
- {pyvectorhound-1.1.1 → pyvectorhound-1.3.0}/tests/test_okf_diagnostics.py +0 -0
|
@@ -40,8 +40,14 @@ jobs:
|
|
|
40
40
|
with:
|
|
41
41
|
python-version: ${{ matrix.python-version }}
|
|
42
42
|
|
|
43
|
+
- name: Install maturin
|
|
44
|
+
run: pip install "maturin>=1.7,<2.0"
|
|
45
|
+
|
|
46
|
+
- name: Build and install extension module
|
|
47
|
+
run: maturin develop --release
|
|
48
|
+
|
|
43
49
|
- name: Install dependencies
|
|
44
|
-
run:
|
|
50
|
+
run: pip install -e ".[dev]"
|
|
45
51
|
|
|
46
52
|
- name: Run pytest
|
|
47
|
-
run:
|
|
53
|
+
run: pytest tests/ -v --tb=short
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to PyVectorHound are documented in this file.
|
|
4
|
+
|
|
5
|
+
## [1.3.0] - 2026-08-16
|
|
6
|
+
|
|
7
|
+
First PyPI release. This release fixes the diagnostic engine's core
|
|
8
|
+
functionality, which was previously non-functional despite the codebase's
|
|
9
|
+
size and test count:
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
- **Rust extension was unreachable.** The compiled native module's PyO3
|
|
13
|
+
entry point was named `pyhound_core`, but `pyproject.toml` /
|
|
14
|
+
`Cargo.toml` build it as `pyvectorhound._core`; the mismatched `PyInit_`
|
|
15
|
+
symbol meant the import always failed. `Diagnosis.analyze()` and
|
|
16
|
+
`QualityScorer.score()` additionally imported it from a nonexistent
|
|
17
|
+
`pyhound` package. Both are fixed and covered by a real test that spies
|
|
18
|
+
on the Rust call to confirm it executes.
|
|
19
|
+
- **`Diagnosis.analyze()` fabricated its results.** Embedding quality,
|
|
20
|
+
BM25, and reranker analysis returned hardcoded constants regardless of
|
|
21
|
+
input. They now compute real metrics (via the Rust core, with an
|
|
22
|
+
equivalent pure-Python fallback) from the embeddings/scores actually
|
|
23
|
+
supplied, and report `"UNAVAILABLE"`/`"UNKNOWN"` with an explanation
|
|
24
|
+
instead of a number when the required input wasn't given.
|
|
25
|
+
- **`Hound.diagnose()` fabricated the query embedding.** A query with no
|
|
26
|
+
`query_embedding` used to get a random vector (`np.random.randn`),
|
|
27
|
+
silently producing meaningless diagnoses. It now requires a
|
|
28
|
+
`query_embedding` or a configured `embed_fn` and raises a clear
|
|
29
|
+
`ValueError` otherwise. **This is a breaking change** for callers that
|
|
30
|
+
relied on the old silent fallback.
|
|
31
|
+
- Database adapters (Qdrant/Chroma/Milvus/pgvector/Weaviate) returned the
|
|
32
|
+
*query* embedding as every result's `"embedding"`, corrupting any
|
|
33
|
+
downstream embedding-space analysis. They now fetch and return the
|
|
34
|
+
actual per-document embedding.
|
|
35
|
+
- CI's Python test job referenced a nonexistent `python/` subdirectory and
|
|
36
|
+
never built the Rust extension, so it silently ran zero tests. It now
|
|
37
|
+
builds via `maturin develop --release` and runs the real suite at the
|
|
38
|
+
repo root.
|
|
39
|
+
- `pydantic` was used in `database.py`/`validation.py` but missing from
|
|
40
|
+
`pyproject.toml` dependencies, so a clean install of `pyvectorhound`
|
|
41
|
+
failed on import. Added as a dependency.
|
|
42
|
+
- Base dependencies pinned exact old versions (e.g. `numpy==1.20.0`) with
|
|
43
|
+
no wheels for the Python versions this package claims to support (up to
|
|
44
|
+
3.12); relaxed to compatible ranges. `dev` extras pinned a yanked/removed
|
|
45
|
+
`black` version, breaking `pip install .[dev]` entirely.
|
|
46
|
+
- `Hound.__init__` eagerly connected to the database, requiring the
|
|
47
|
+
optional client library and a live server just to construct a `Hound`.
|
|
48
|
+
Connection is now lazy, matching every adapter method's existing
|
|
49
|
+
lazy-connect behavior.
|
|
50
|
+
- `ModelComparison`/`compare_models()` fabricated quality scores
|
|
51
|
+
(`f1_score`, `ndcg`, etc.) from `hash(model_name)`. It now reports only
|
|
52
|
+
real published cost/latency metadata unless a `quality_fn` is supplied
|
|
53
|
+
for real, measured quality numbers.
|
|
54
|
+
- `Hound.compare_metrics()`, `Hound.detect_drift()`, and
|
|
55
|
+
`QualityScorer.trend_analysis()` returned fixed placeholder output
|
|
56
|
+
(zeros / `"stable"` / `"No action needed"`) regardless of input, with no
|
|
57
|
+
backing data store. They now raise `NotImplementedError` pointing to the
|
|
58
|
+
real, tested alternative (`track_metric()` + `get_trend_report()` /
|
|
59
|
+
`TrendAnalyzer.detect_drift()`).
|
|
60
|
+
- Removed `tests/test_vector_operations.py`, which tested `VectorStore`
|
|
61
|
+
and `EmbeddingManager` classes that do not exist anywhere in this
|
|
62
|
+
codebase and are not part of this package's scope (diagnosing failures
|
|
63
|
+
in databases you already run, not being one); its import error was
|
|
64
|
+
aborting the entire test suite before any test could run.
|
|
65
|
+
|
|
66
|
+
### Added
|
|
67
|
+
- `Hound(embed_fn=...)`: optional callable to embed queries (wrapping
|
|
68
|
+
OpenAI, Cohere, sentence-transformers, etc.), since PyVectorHound does
|
|
69
|
+
not bundle an embedding model itself.
|
|
70
|
+
- `QualityScorer.score(embedding, reference_embeddings=...)` and
|
|
71
|
+
`QualityScorer.corpus_health(sample_embeddings=...)`: real
|
|
72
|
+
isotropy/coverage/distinctiveness against a supplied embedding sample.
|
|
73
|
+
|
|
74
|
+
## [0.1.1] - 2025-01-20
|
|
75
|
+
|
|
76
|
+
### Added
|
|
77
|
+
- Component-level diagnostics for retrieval pipelines
|
|
78
|
+
- Root cause analysis for embedding failures
|
|
79
|
+
- Recommendations engine with ROI estimates
|
|
80
|
+
- Support for Elasticsearch, Weaviate, and Pinecone
|
|
81
|
+
- BM25 keyword search diagnostics
|
|
82
|
+
- Reranker performance analysis
|
|
83
|
+
|
|
84
|
+
### Fixed
|
|
85
|
+
- Memory efficiency improvements in large batch processing
|
|
86
|
+
- Vector similarity computation accuracy
|
|
87
|
+
|
|
88
|
+
## [0.1.0] - 2024-12-15
|
|
89
|
+
|
|
90
|
+
### Added
|
|
91
|
+
- Initial release
|
|
92
|
+
- Core retrieval diagnostics engine
|
|
93
|
+
- Embedding quality assessment
|
|
94
|
+
- Vector search performance profiling
|
|
95
|
+
- MIT license
|
|
96
|
+
|
|
97
|
+
### Known Issues
|
|
98
|
+
- Streaming RAG pipelines not yet supported
|
|
99
|
+
- LLamaIndex integration in progress
|
|
100
|
+
|
|
101
|
+
## [Unreleased]
|
|
102
|
+
|
|
103
|
+
### Planned
|
|
104
|
+
- Streaming RAG support
|
|
105
|
+
- LLamaIndex integration
|
|
106
|
+
- Custom metric definitions
|
|
107
|
+
- Dashboard UI
|
|
108
|
+
- API server mode
|
|
109
|
+
|
|
110
|
+
For details, see [ROADMAP.md](../ROADMAP.md).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# This file is automatically @generated by Cargo.
|
|
2
2
|
# It is not intended for manual editing.
|
|
3
|
-
version =
|
|
3
|
+
version = 4
|
|
4
4
|
|
|
5
5
|
[[package]]
|
|
6
6
|
name = "autocfg"
|
|
@@ -37,9 +37,9 @@ checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
|
|
37
37
|
|
|
38
38
|
[[package]]
|
|
39
39
|
name = "libc"
|
|
40
|
-
version = "0.2.
|
|
40
|
+
version = "0.2.189"
|
|
41
41
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
42
|
-
checksum = "
|
|
42
|
+
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
|
|
43
43
|
|
|
44
44
|
[[package]]
|
|
45
45
|
name = "matrixmultiply"
|
|
@@ -146,9 +146,9 @@ dependencies = [
|
|
|
146
146
|
|
|
147
147
|
[[package]]
|
|
148
148
|
name = "proc-macro2"
|
|
149
|
-
version = "1.0.
|
|
149
|
+
version = "1.0.107"
|
|
150
150
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
151
|
-
checksum = "
|
|
151
|
+
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
152
152
|
dependencies = [
|
|
153
153
|
"unicode-ident",
|
|
154
154
|
]
|
|
@@ -200,7 +200,7 @@ dependencies = [
|
|
|
200
200
|
"proc-macro2",
|
|
201
201
|
"pyo3-macros-backend",
|
|
202
202
|
"quote",
|
|
203
|
-
"syn",
|
|
203
|
+
"syn 2.0.119",
|
|
204
204
|
]
|
|
205
205
|
|
|
206
206
|
[[package]]
|
|
@@ -213,12 +213,12 @@ dependencies = [
|
|
|
213
213
|
"proc-macro2",
|
|
214
214
|
"pyo3-build-config",
|
|
215
215
|
"quote",
|
|
216
|
-
"syn",
|
|
216
|
+
"syn 2.0.119",
|
|
217
217
|
]
|
|
218
218
|
|
|
219
219
|
[[package]]
|
|
220
220
|
name = "pyvectorhound"
|
|
221
|
-
version = "1.
|
|
221
|
+
version = "1.3.0"
|
|
222
222
|
dependencies = [
|
|
223
223
|
"numpy",
|
|
224
224
|
"pyo3",
|
|
@@ -228,9 +228,9 @@ dependencies = [
|
|
|
228
228
|
|
|
229
229
|
[[package]]
|
|
230
230
|
name = "quote"
|
|
231
|
-
version = "1.0.
|
|
231
|
+
version = "1.0.47"
|
|
232
232
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
233
|
-
checksum = "
|
|
233
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
234
234
|
dependencies = [
|
|
235
235
|
"proc-macro2",
|
|
236
236
|
]
|
|
@@ -255,9 +255,9 @@ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
|
|
|
255
255
|
|
|
256
256
|
[[package]]
|
|
257
257
|
name = "serde"
|
|
258
|
-
version = "1.0.
|
|
258
|
+
version = "1.0.229"
|
|
259
259
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
260
|
-
checksum = "
|
|
260
|
+
checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"
|
|
261
261
|
dependencies = [
|
|
262
262
|
"serde_core",
|
|
263
263
|
"serde_derive",
|
|
@@ -265,29 +265,29 @@ dependencies = [
|
|
|
265
265
|
|
|
266
266
|
[[package]]
|
|
267
267
|
name = "serde_core"
|
|
268
|
-
version = "1.0.
|
|
268
|
+
version = "1.0.229"
|
|
269
269
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
270
|
-
checksum = "
|
|
270
|
+
checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48"
|
|
271
271
|
dependencies = [
|
|
272
272
|
"serde_derive",
|
|
273
273
|
]
|
|
274
274
|
|
|
275
275
|
[[package]]
|
|
276
276
|
name = "serde_derive"
|
|
277
|
-
version = "1.0.
|
|
277
|
+
version = "1.0.229"
|
|
278
278
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
279
|
-
checksum = "
|
|
279
|
+
checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
|
|
280
280
|
dependencies = [
|
|
281
281
|
"proc-macro2",
|
|
282
282
|
"quote",
|
|
283
|
-
"syn",
|
|
283
|
+
"syn 3.0.3",
|
|
284
284
|
]
|
|
285
285
|
|
|
286
286
|
[[package]]
|
|
287
287
|
name = "serde_json"
|
|
288
|
-
version = "1.0.
|
|
288
|
+
version = "1.0.151"
|
|
289
289
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
290
|
-
checksum = "
|
|
290
|
+
checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
|
|
291
291
|
dependencies = [
|
|
292
292
|
"itoa",
|
|
293
293
|
"memchr",
|
|
@@ -307,6 +307,17 @@ dependencies = [
|
|
|
307
307
|
"unicode-ident",
|
|
308
308
|
]
|
|
309
309
|
|
|
310
|
+
[[package]]
|
|
311
|
+
name = "syn"
|
|
312
|
+
version = "3.0.3"
|
|
313
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
314
|
+
checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3"
|
|
315
|
+
dependencies = [
|
|
316
|
+
"proc-macro2",
|
|
317
|
+
"quote",
|
|
318
|
+
"unicode-ident",
|
|
319
|
+
]
|
|
320
|
+
|
|
310
321
|
[[package]]
|
|
311
322
|
name = "target-lexicon"
|
|
312
323
|
version = "0.12.16"
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "pyvectorhound"
|
|
3
|
-
version = "1.
|
|
3
|
+
version = "1.3.0"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
authors = ["Georgi Mammen Mullassery <mullassery@gmail.com>"]
|
|
6
|
-
license = "
|
|
6
|
+
license = "Proprietary"
|
|
7
7
|
description = "Vector search diagnostics engine for RAG/LLM systems"
|
|
8
8
|
readme = "README.md"
|
|
9
9
|
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# 🎯 Dashboard Keyboard Shortcuts & Usage
|
|
2
|
+
|
|
3
|
+
## Auto-Start on Installation
|
|
4
|
+
|
|
5
|
+
The CLI dashboard **starts automatically** when you run the package for the first time or import it in Python:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
$ pip install [package]
|
|
9
|
+
# ✓ Dashboard appears in terminal automatically
|
|
10
|
+
|
|
11
|
+
$ python3 -c "from [package] import *"
|
|
12
|
+
# ✓ Dashboard initializes in background
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The dashboard runs in **persistent daemon mode** — if you close it, it restarts automatically with your keyboard shortcuts.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## ⌨️ Keyboard Shortcuts
|
|
20
|
+
|
|
21
|
+
After installing the package, run:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
bash <(curl -s https://raw.githubusercontent.com/Mullassery/[PACKAGE]/main/scripts/setup_shortcuts.sh)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This adds aliases to your `~/.zshrc` or `~/.bashrc`:
|
|
28
|
+
|
|
29
|
+
### Quick Access (all packages)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
dashboards # Show all available dashboard shortcuts
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Per-Package Shortcuts
|
|
36
|
+
|
|
37
|
+
Replace `[PACKAGE]` with any installed Mullassery package name:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
dash-[PACKAGE] # Static snapshot (single view)
|
|
41
|
+
dash-[PACKAGE]-live # Live dashboard (Ctrl+C to close)
|
|
42
|
+
dash-[PACKAGE]-export # Export metrics to JSON
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Examples
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# PyStreamAI
|
|
49
|
+
$ dash-pystreamai # View deployment metrics snapshot
|
|
50
|
+
$ dash-pystreamai-live # Watch real-time inference latency
|
|
51
|
+
$ dash-pystreamai-export # Save metrics for monitoring
|
|
52
|
+
|
|
53
|
+
# PyRoboReplay
|
|
54
|
+
$ dash-pyroboreplay # View RGB+Thermal fusion status
|
|
55
|
+
$ dash-pyroboreplay-live # Monitor decision reconstruction in real-time
|
|
56
|
+
$ dash-pyroboreplay-export # Export to Prometheus/Datadog
|
|
57
|
+
|
|
58
|
+
# PyTerrainMap
|
|
59
|
+
$ dash-pyterrainmap # View spatial layer metrics
|
|
60
|
+
$ dash-pyterrainmap-live # Watch fleet learning converge
|
|
61
|
+
$ dash-pyterrainmap-export # Save to /tmp/pyterrainmap_metrics.json
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 🔄 Dashboard Modes
|
|
67
|
+
|
|
68
|
+
### Static Snapshot (`--static`)
|
|
69
|
+
```bash
|
|
70
|
+
$ dash-pystreamai # Single view, exits immediately
|
|
71
|
+
# Useful for: CI/CD logs, monitoring integration, one-time checks
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Live View (`--live`)
|
|
75
|
+
```bash
|
|
76
|
+
$ dash-pystreamai-live # Continuous updates until Ctrl+C
|
|
77
|
+
# Useful for: real-time monitoring, troubleshooting, development
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### JSON Export (`--export`)
|
|
81
|
+
```bash
|
|
82
|
+
$ dash-pystreamai-export # Saves to /tmp/pystreamai_metrics.json
|
|
83
|
+
# Useful for: integration with Prometheus, Datadog, custom dashboards
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 🛑 Remove Keyboard Shortcuts
|
|
89
|
+
|
|
90
|
+
To uninstall all dashboard aliases:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
bash <(curl -s https://raw.githubusercontent.com/Mullassery/[PACKAGE]/main/scripts/setup_shortcuts.sh) --remove
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
This removes all `dash-*` aliases from your shell config.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 📊 Monitoring Integration
|
|
101
|
+
|
|
102
|
+
Export metrics for external monitoring systems:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Prometheus
|
|
106
|
+
$ dash-pystreamai-export > prometheus_metrics.txt
|
|
107
|
+
|
|
108
|
+
# Datadog (with custom agent)
|
|
109
|
+
$ dash-pystreamai-live | \
|
|
110
|
+
grep -o 'Status.*' | \
|
|
111
|
+
datadog-agent custom-metric
|
|
112
|
+
|
|
113
|
+
# JSON for custom dashboards
|
|
114
|
+
$ dash-pystreamai-export | jq '.metrics'
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## ❓ Troubleshooting
|
|
120
|
+
|
|
121
|
+
**Shortcuts not working?**
|
|
122
|
+
```bash
|
|
123
|
+
# Reload shell config
|
|
124
|
+
$ source ~/.zshrc # macOS/Linux (zsh)
|
|
125
|
+
$ source ~/.bashrc # Linux (bash)
|
|
126
|
+
|
|
127
|
+
# Or restart your terminal
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Dashboard won't start?**
|
|
131
|
+
```bash
|
|
132
|
+
# Ensure package is installed
|
|
133
|
+
$ pip list | grep pystreamai
|
|
134
|
+
|
|
135
|
+
# Start manually
|
|
136
|
+
$ pystreamai dashboard --static
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Dashboard keeps closing?**
|
|
140
|
+
```bash
|
|
141
|
+
# Use live mode (restarts automatically)
|
|
142
|
+
$ dash-pystreamai-live
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 📖 Package-Specific Shortcuts
|
|
148
|
+
|
|
149
|
+
The following Mullassery packages support dashboard shortcuts:
|
|
150
|
+
|
|
151
|
+
- ✅ PyStreamAI (deployment metrics)
|
|
152
|
+
- ✅ PyStreamMCP (tool orchestration)
|
|
153
|
+
- ✅ PyStreamPDF (document processing)
|
|
154
|
+
- ✅ PyStreamXL (formula extraction)
|
|
155
|
+
- ✅ StatGuardian (data quality)
|
|
156
|
+
- ✅ PyReverseETL (activation pipelines)
|
|
157
|
+
- ✅ PyTerrainMap (spatial analysis)
|
|
158
|
+
- ✅ PyRoboReplay (multi-modal fusion)
|
|
159
|
+
- ✅ PyRoboSimulator (world engine)
|
|
160
|
+
|
|
161
|
+
Run `dashboards` to see all available shortcuts.
|