vicinity 0.4.2__tar.gz → 0.4.3__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. {vicinity-0.4.2 → vicinity-0.4.3}/PKG-INFO +2 -2
  2. {vicinity-0.4.2 → vicinity-0.4.3}/README.md +1 -1
  3. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/backends/__init__.py +26 -1
  4. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/version.py +1 -1
  5. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity.egg-info/PKG-INFO +2 -2
  6. {vicinity-0.4.2 → vicinity-0.4.3}/.github/workflows/ci.yaml +0 -0
  7. {vicinity-0.4.2 → vicinity-0.4.3}/.gitignore +0 -0
  8. {vicinity-0.4.2 → vicinity-0.4.3}/.pre-commit-config.yaml +0 -0
  9. {vicinity-0.4.2 → vicinity-0.4.3}/LICENSE +0 -0
  10. {vicinity-0.4.2 → vicinity-0.4.3}/Makefile +0 -0
  11. {vicinity-0.4.2 → vicinity-0.4.3}/assets/images/vicinity_logo.png +0 -0
  12. {vicinity-0.4.2 → vicinity-0.4.3}/pyproject.toml +0 -0
  13. {vicinity-0.4.2 → vicinity-0.4.3}/setup.cfg +0 -0
  14. {vicinity-0.4.2 → vicinity-0.4.3}/tests/conftest.py +0 -0
  15. {vicinity-0.4.2 → vicinity-0.4.3}/tests/test_utils.py +0 -0
  16. {vicinity-0.4.2 → vicinity-0.4.3}/tests/test_vicinity.py +0 -0
  17. {vicinity-0.4.2 → vicinity-0.4.3}/uv.lock +0 -0
  18. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/__init__.py +0 -0
  19. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/backends/annoy.py +0 -0
  20. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/backends/base.py +0 -0
  21. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/backends/basic.py +0 -0
  22. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/backends/faiss.py +0 -0
  23. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/backends/hnsw.py +0 -0
  24. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/backends/pynndescent.py +0 -0
  25. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/backends/usearch.py +0 -0
  26. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/backends/voyager.py +0 -0
  27. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/datatypes.py +0 -0
  28. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/integrations/dataset_card_template.md +0 -0
  29. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/integrations/huggingface.py +0 -0
  30. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/py.typed +0 -0
  31. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/utils.py +0 -0
  32. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity/vicinity.py +0 -0
  33. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity.egg-info/SOURCES.txt +0 -0
  34. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity.egg-info/dependency_links.txt +0 -0
  35. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity.egg-info/requires.txt +0 -0
  36. {vicinity-0.4.2 → vicinity-0.4.3}/vicinity.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vicinity
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Lightweight Nearest Neighbors with Flexible Backends
5
5
  Author-email: Stéphan Tulkens <stephantul@gmail.com>, Thomas van Dongen <thomas123@live.nl>
6
6
  License: MIT License
@@ -103,7 +103,7 @@ Requires-Dist: voyager; extra == "all"
103
103
  <div align="center">
104
104
  <h2>
105
105
  <a href="https://pypi.org/project/vicinity/"><img src="https://img.shields.io/pypi/v/vicinity?color=%23007ec6&label=pypi%20package" alt="Package version"></a>
106
- <a href="https://pypi.org/project/vicinity/"><img src="https://img.shields.io/pypi/pyversions/vicinity" alt="Supported Python versions"></a>
106
+ <a href="https://minish.ai/packages/vicinity/introduction"><img src="https://img.shields.io/badge/docs-minish.ai-blue.svg" alt="Docs"></a>
107
107
  <a href="https://pepy.tech/project/vicinity">
108
108
  <img src="https://static.pepy.tech/badge/vicinity" alt="Downloads">
109
109
  </a>
@@ -7,7 +7,7 @@
7
7
  <div align="center">
8
8
  <h2>
9
9
  <a href="https://pypi.org/project/vicinity/"><img src="https://img.shields.io/pypi/v/vicinity?color=%23007ec6&label=pypi%20package" alt="Package version"></a>
10
- <a href="https://pypi.org/project/vicinity/"><img src="https://img.shields.io/pypi/pyversions/vicinity" alt="Supported Python versions"></a>
10
+ <a href="https://minish.ai/packages/vicinity/introduction"><img src="https://img.shields.io/badge/docs-minish.ai-blue.svg" alt="Docs"></a>
11
11
  <a href="https://pepy.tech/project/vicinity">
12
12
  <img src="https://static.pepy.tech/badge/vicinity" alt="Downloads">
13
13
  </a>
@@ -1,3 +1,4 @@
1
+ from importlib.util import find_spec
1
2
  from typing import Union
2
3
 
3
4
  from vicinity.backends.base import AbstractBackend
@@ -5,35 +6,59 @@ from vicinity.backends.basic import BasicBackend, BasicVectorStore
5
6
  from vicinity.datatypes import Backend
6
7
 
7
8
 
9
+ class OptionalDependencyError(ImportError):
10
+ def __init__(self, backend: Backend, extra: str) -> None:
11
+ msg = f"{backend} requires extra '{extra}'.\n" f"Install it with: pip install 'vicinity[{extra}]'\n"
12
+ super().__init__(msg)
13
+ self.backend = backend
14
+ self.extra = extra
15
+
16
+
17
+ def _require(module_name: str, backend: Backend, extra: str) -> None:
18
+ """Check if a dependency is importable, otherwise raise an error."""
19
+ if find_spec(module_name) is None:
20
+ raise OptionalDependencyError(backend, extra)
21
+
22
+
8
23
  def get_backend_class(backend: Union[Backend, str]) -> type[AbstractBackend]:
9
- """Get all available backends."""
24
+ """Get the requested backend and ensure its dependencies are installed."""
10
25
  backend = Backend(backend)
26
+
11
27
  if backend == Backend.BASIC:
12
28
  return BasicBackend
29
+
13
30
  elif backend == Backend.HNSW:
31
+ _require("hnswlib", backend, "hnsw")
14
32
  from vicinity.backends.hnsw import HNSWBackend
15
33
 
16
34
  return HNSWBackend
35
+
17
36
  elif backend == Backend.ANNOY:
37
+ _require("annoy", backend, "annoy")
18
38
  from vicinity.backends.annoy import AnnoyBackend
19
39
 
20
40
  return AnnoyBackend
41
+
21
42
  elif backend == Backend.PYNNDESCENT:
43
+ _require("pynndescent", backend, "pynndescent")
22
44
  from vicinity.backends.pynndescent import PyNNDescentBackend
23
45
 
24
46
  return PyNNDescentBackend
25
47
 
26
48
  elif backend == Backend.FAISS:
49
+ _require("faiss", backend, "faiss")
27
50
  from vicinity.backends.faiss import FaissBackend
28
51
 
29
52
  return FaissBackend
30
53
 
31
54
  elif backend == Backend.USEARCH:
55
+ _require("usearch", backend, "usearch")
32
56
  from vicinity.backends.usearch import UsearchBackend
33
57
 
34
58
  return UsearchBackend
35
59
 
36
60
  elif backend == Backend.VOYAGER:
61
+ _require("voyager", backend, "voyager")
37
62
  from vicinity.backends.voyager import VoyagerBackend
38
63
 
39
64
  return VoyagerBackend
@@ -1,2 +1,2 @@
1
- __version_triple__ = (0, 4, 2)
1
+ __version_triple__ = (0, 4, 3)
2
2
  __version__ = ".".join(map(str, __version_triple__))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vicinity
3
- Version: 0.4.2
3
+ Version: 0.4.3
4
4
  Summary: Lightweight Nearest Neighbors with Flexible Backends
5
5
  Author-email: Stéphan Tulkens <stephantul@gmail.com>, Thomas van Dongen <thomas123@live.nl>
6
6
  License: MIT License
@@ -103,7 +103,7 @@ Requires-Dist: voyager; extra == "all"
103
103
  <div align="center">
104
104
  <h2>
105
105
  <a href="https://pypi.org/project/vicinity/"><img src="https://img.shields.io/pypi/v/vicinity?color=%23007ec6&label=pypi%20package" alt="Package version"></a>
106
- <a href="https://pypi.org/project/vicinity/"><img src="https://img.shields.io/pypi/pyversions/vicinity" alt="Supported Python versions"></a>
106
+ <a href="https://minish.ai/packages/vicinity/introduction"><img src="https://img.shields.io/badge/docs-minish.ai-blue.svg" alt="Docs"></a>
107
107
  <a href="https://pepy.tech/project/vicinity">
108
108
  <img src="https://static.pepy.tech/badge/vicinity" alt="Downloads">
109
109
  </a>
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
File without changes
File without changes
File without changes
File without changes