vecscope 0.1.0__tar.gz → 0.1.1__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.
Files changed (36) hide show
  1. vecscope-0.1.1/.gitattributes +3 -0
  2. {vecscope-0.1.0 → vecscope-0.1.1}/CHANGELOG.md +11 -0
  3. {vecscope-0.1.0 → vecscope-0.1.1}/CONTRIBUTING.md +26 -0
  4. {vecscope-0.1.0 → vecscope-0.1.1}/PKG-INFO +3 -2
  5. {vecscope-0.1.0 → vecscope-0.1.1}/pyproject.toml +2 -1
  6. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/__init__.py +1 -1
  7. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/mcp_server.py +5 -2
  8. {vecscope-0.1.0 → vecscope-0.1.1}/tests/test_audit.py +11 -0
  9. {vecscope-0.1.0 → vecscope-0.1.1}/.agents/skills/vecscope/SKILL.md +0 -0
  10. {vecscope-0.1.0 → vecscope-0.1.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  11. {vecscope-0.1.0 → vecscope-0.1.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  12. {vecscope-0.1.0 → vecscope-0.1.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  13. {vecscope-0.1.0 → vecscope-0.1.1}/.github/pull_request_template.md +0 -0
  14. {vecscope-0.1.0 → vecscope-0.1.1}/.github/workflows/ci.yml +0 -0
  15. {vecscope-0.1.0 → vecscope-0.1.1}/.github/workflows/release.yml +0 -0
  16. {vecscope-0.1.0 → vecscope-0.1.1}/.gitignore +0 -0
  17. {vecscope-0.1.0 → vecscope-0.1.1}/AGENTS.md +0 -0
  18. {vecscope-0.1.0 → vecscope-0.1.1}/LICENSE +0 -0
  19. {vecscope-0.1.0 → vecscope-0.1.1}/README.md +0 -0
  20. {vecscope-0.1.0 → vecscope-0.1.1}/SECURITY.md +0 -0
  21. {vecscope-0.1.0 → vecscope-0.1.1}/docs/readme/README_ko.md +0 -0
  22. {vecscope-0.1.0 → vecscope-0.1.1}/examples/make_examples.py +0 -0
  23. {vecscope-0.1.0 → vecscope-0.1.1}/examples/real_models.py +0 -0
  24. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/_knn.py +0 -0
  25. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/cli.py +0 -0
  26. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/diagnostics/__init__.py +0 -0
  27. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/diagnostics/anisotropy.py +0 -0
  28. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/diagnostics/ann_recall.py +0 -0
  29. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/diagnostics/clusters.py +0 -0
  30. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/diagnostics/collapse.py +0 -0
  31. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/diagnostics/geometry.py +0 -0
  32. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/diagnostics/hubness.py +0 -0
  33. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/diagnostics/queries.py +0 -0
  34. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/evidence.py +0 -0
  35. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/io.py +0 -0
  36. {vecscope-0.1.0 → vecscope-0.1.1}/src/vecscope/sweep.py +0 -0
@@ -0,0 +1,3 @@
1
+ * text=auto eol=lf
2
+ *.npy binary
3
+ *.png binary
@@ -6,6 +6,17 @@ All notable changes to this project are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.1] - 2026-10-26
10
+
11
+ ### Fixed
12
+
13
+ - MCP server failed to import with `mcp` 2.x, which renamed `FastMCP` to `MCPServer`; both
14
+ 1.x and 2.x are now supported and the server is smoke-tested in CI
15
+
16
+ ### Added
17
+
18
+ - Python 3.14 classifier and a `.gitattributes` that normalizes line endings
19
+
9
20
  ## [0.1.0] - 2026-10-25
10
21
 
11
22
  ### Added
@@ -42,3 +42,29 @@ audit time, or when it makes two runs on the same input produce different output
42
42
 
43
43
  Keep PRs focused on one change. Fill in the template, especially the evidence section.
44
44
  Dependencies stay at NumPy for the core; optional extras are fine for loaders and the MCP server.
45
+
46
+ ## Releasing
47
+
48
+ Releases are published to PyPI by `.github/workflows/release.yml` through PyPI trusted
49
+ publishing; no token is stored anywhere. PyPI never lets a version number be reused, so bump
50
+ the version before tagging.
51
+
52
+ 1. Bump `__version__` in `src/vecscope/__init__.py` (the only place the version lives).
53
+ 2. Move the entries under `Unreleased` in `CHANGELOG.md` into a new `## [x.y.z] - YYYY-MM-DD`
54
+ section.
55
+ 3. Commit and push to `main`, and wait for CI to pass.
56
+ 4. Tag and push the tag. The workflow builds, publishes to PyPI, and finishes in about a minute:
57
+
58
+ ```bash
59
+ git tag -a vx.y.z -m "vx.y.z"
60
+ git push origin vx.y.z
61
+ ```
62
+
63
+ 5. Create the GitHub release from the changelog section, attaching the built files:
64
+
65
+ ```bash
66
+ python -m build
67
+ gh release create vx.y.z dist/* --title "vx.y.z" --notes-file <notes.md>
68
+ ```
69
+
70
+ 6. Check `pip install vecscope==x.y.z` in a clean environment.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: vecscope
3
- Version: 0.1.0
3
+ Version: 0.1.1
4
4
  Summary: Embedding space evidence for agents: hubness, anisotropy, collapse, ANN recall.
5
5
  Project-URL: Homepage, https://github.com/076923/vecscope
6
6
  Project-URL: Repository, https://github.com/076923/vecscope
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
18
  Classifier: Programming Language :: Python :: 3.12
19
19
  Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: 3.14
20
21
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
22
  Requires-Python: >=3.10
22
23
  Requires-Dist: numpy>=1.24
@@ -26,7 +27,7 @@ Requires-Dist: ruff>=0.5; extra == 'dev'
26
27
  Provides-Extra: index
27
28
  Requires-Dist: faiss-cpu>=1.8; extra == 'index'
28
29
  Provides-Extra: mcp
29
- Requires-Dist: mcp>=1.0; extra == 'mcp'
30
+ Requires-Dist: mcp>=1.2; extra == 'mcp'
30
31
  Description-Content-Type: text/markdown
31
32
 
32
33
  <div align="center">
@@ -20,6 +20,7 @@ classifiers = [
20
20
  "Programming Language :: Python :: 3.11",
21
21
  "Programming Language :: Python :: 3.12",
22
22
  "Programming Language :: Python :: 3.13",
23
+ "Programming Language :: Python :: 3.14",
23
24
  "Topic :: Scientific/Engineering :: Artificial Intelligence",
24
25
  ]
25
26
  dependencies = ["numpy>=1.24"]
@@ -30,7 +31,7 @@ Repository = "https://github.com/076923/vecscope"
30
31
  Issues = "https://github.com/076923/vecscope/issues"
31
32
 
32
33
  [project.optional-dependencies]
33
- mcp = ["mcp>=1.0"]
34
+ mcp = ["mcp>=1.2"]
34
35
  index = ["faiss-cpu>=1.8"]
35
36
  dev = ["pytest>=8", "ruff>=0.5"]
36
37
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  from vecscope.evidence import Evidence, Finding, audit
4
4
 
5
- __version__ = "0.1.0"
5
+ __version__ = "0.1.1"
6
6
  __all__ = ["Evidence", "Finding", "__version__", "audit"]
@@ -2,12 +2,15 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from mcp.server.fastmcp import FastMCP
5
+ try: # mcp >= 2.0 renamed FastMCP to MCPServer
6
+ from mcp.server.mcpserver import MCPServer as _Server
7
+ except ImportError: # mcp 1.x
8
+ from mcp.server.fastmcp import FastMCP as _Server
6
9
 
7
10
  from vecscope.evidence import audit
8
11
  from vecscope.io import load_vectors
9
12
 
10
- mcp = FastMCP("vecscope")
13
+ mcp = _Server("vecscope")
11
14
 
12
15
 
13
16
  @mcp.tool()
@@ -240,3 +240,14 @@ def test_sweep_device_selection():
240
240
  rng = np.random.default_rng(0)
241
241
  res = sweep(rng.standard_normal((1000, 16)).astype(np.float32), k=5, n_queries=50, device="cpu")
242
242
  assert res.device == "cpu" and all(p.device == "cpu" for p in res.points)
243
+
244
+
245
+ def test_mcp_server_exposes_tools():
246
+ pytest = __import__("pytest")
247
+ pytest.importorskip("mcp")
248
+ import asyncio
249
+
250
+ from vecscope.mcp_server import mcp as server
251
+
252
+ tools = asyncio.run(server.list_tools())
253
+ assert {t.name for t in tools} >= {"audit_embeddings", "sweep_index"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes