projectdavid 1.33.1__tar.gz → 1.33.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.
Potentially problematic release.
This version of projectdavid might be problematic. Click here for more details.
- {projectdavid-1.33.1 → projectdavid-1.33.3}/CHANGELOG.md +14 -0
- {projectdavid-1.33.1/src/projectdavid.egg-info → projectdavid-1.33.3}/PKG-INFO +1 -1
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/vector_store.md +8 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/pyproject.toml +1 -1
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/vectors.py +19 -2
- projectdavid-1.33.3/src/projectdavid/decorators.py +64 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/entity.py +7 -1
- {projectdavid-1.33.1 → projectdavid-1.33.3/src/projectdavid.egg-info}/PKG-INFO +1 -1
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid.egg-info/SOURCES.txt +1 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/LICENSE +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/MANIFEST.in +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/README.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/assistants.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/code_interpretation.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/database.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/database_assistant_example.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/docker_comtainers.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/file_search.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/files.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/function_call_definition.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/function_calls.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/handling_function_calls.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/inference.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/messages.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/runs.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/streams.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/threads.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/tools.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/users.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/docs/versioning.md +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/setup.cfg +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/__init__.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/_version.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/actions_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/api_key_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/assistants_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/base_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/base_vector_store.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/event_handler.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/file_processor.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/file_search.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/files_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/inference_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/messages_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/runs.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/synchronous_inference_wrapper.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/threads_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/tools_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/users_client.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/vector_store_manager.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/constants/platform.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/events.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/serializers.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/services/logging_service.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/synthesis/__init__.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/synthesis/llm_synthesizer.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/synthesis/prompt.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/synthesis/reranker.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/synthesis/retriever.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/utils/__init__.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/utils/function_call_suppressor.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/utils/monitor_launcher.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/utils/peek_gate.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/utils/run_monitor.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/utils/vector_search_formatter.py +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid.egg-info/dependency_links.txt +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid.egg-info/requires.txt +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid.egg-info/top_level.txt +0 -0
- {projectdavid-1.33.1 → projectdavid-1.33.3}/tests/test_clients.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [1.33.3](https://github.com/frankie336/projectdavid/compare/v1.33.2...v1.33.3) (2025-06-11)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* Place vision features in dormant experimental mode with [@experimental](https://github.com/experimental) decorators.py ([1c41702](https://github.com/frankie336/projectdavid/commit/1c41702a55ec9c6c7ad89de559cfa309ace88174))
|
|
7
|
+
|
|
8
|
+
## [1.33.2](https://github.com/frankie336/projectdavid/compare/v1.33.1...v1.33.2) (2025-06-11)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* pass file_processor_kwargs from public interface and add default fallbacks. ([597b274](https://github.com/frankie336/projectdavid/commit/597b274e0f54fc87ac5449ac8259c8ad244b0214))
|
|
14
|
+
|
|
1
15
|
## [1.33.1](https://github.com/frankie336/projectdavid/compare/v1.33.0...v1.33.1) (2025-06-10)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectdavid
|
|
3
|
-
Version: 1.33.
|
|
3
|
+
Version: 1.33.3
|
|
4
4
|
Summary: Python SDK for interacting with the Entities Assistant API.
|
|
5
5
|
Author-email: Francis Neequaye Armah <francis.neequaye@projectdavid.co.uk>
|
|
6
6
|
License: PolyForm Noncommercial License 1.0.0
|
|
@@ -78,6 +78,14 @@ save_file_to_store = client.vectors.add_file_to_vector_store(
|
|
|
78
78
|
|
|
79
79
|
At this point, your file has been vectorized to your store.
|
|
80
80
|
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
## Supporting image vectors
|
|
86
|
+
|
|
87
|
+
Entities now ingests and vectorizes a wide range of image formats for semantic search. You can leverage these image embeddings to extend text-only models into powerful multi-modal workflows; enriching chatbots, document search, recommendation engines, and more.
|
|
88
|
+
|
|
81
89
|
---
|
|
82
90
|
|
|
83
91
|
### Making Searches Against Files in a Store
|
|
@@ -20,6 +20,7 @@ from qdrant_client.http import models as qdrant
|
|
|
20
20
|
|
|
21
21
|
from projectdavid.clients.file_processor import FileProcessor
|
|
22
22
|
from projectdavid.clients.vector_store_manager import VectorStoreManager
|
|
23
|
+
from projectdavid.decorators import experimental
|
|
23
24
|
from projectdavid.synthesis import reranker, retriever
|
|
24
25
|
from projectdavid.synthesis.llm_synthesizer import synthesize_envelope
|
|
25
26
|
from projectdavid.utils.vector_search_formatter import make_envelope
|
|
@@ -72,8 +73,9 @@ class VectorStoreClient:
|
|
|
72
73
|
api_key: Optional[str] = None,
|
|
73
74
|
*,
|
|
74
75
|
vector_store_host: str = "localhost",
|
|
75
|
-
file_processor_kwargs: Optional[dict] = None,
|
|
76
|
+
file_processor_kwargs: Optional[dict] = None,
|
|
76
77
|
):
|
|
78
|
+
|
|
77
79
|
self.base_url = (base_url or os.getenv("BASE_URL", "")).rstrip("/")
|
|
78
80
|
self.api_key = api_key or os.getenv("API_KEY")
|
|
79
81
|
if not self.base_url:
|
|
@@ -94,7 +96,18 @@ class VectorStoreClient:
|
|
|
94
96
|
self.identifier_service = UtilsInterface.IdentifierService()
|
|
95
97
|
|
|
96
98
|
# 🔶 forward kwargs into the upgraded FileProcessor
|
|
97
|
-
|
|
99
|
+
|
|
100
|
+
self.file_processor = FileProcessor(
|
|
101
|
+
**(
|
|
102
|
+
file_processor_kwargs
|
|
103
|
+
or {
|
|
104
|
+
"use_gpu": False,
|
|
105
|
+
"use_detection": True,
|
|
106
|
+
"use_geo": True,
|
|
107
|
+
"use_ocr": True,
|
|
108
|
+
}
|
|
109
|
+
)
|
|
110
|
+
)
|
|
98
111
|
|
|
99
112
|
log.info("VectorStoreClient → %s", self.base_url)
|
|
100
113
|
|
|
@@ -492,6 +505,7 @@ class VectorStoreClient:
|
|
|
492
505
|
)
|
|
493
506
|
)
|
|
494
507
|
|
|
508
|
+
@experimental
|
|
495
509
|
def create_vector_vision_store(
|
|
496
510
|
self,
|
|
497
511
|
name: str,
|
|
@@ -532,6 +546,7 @@ class VectorStoreClient:
|
|
|
532
546
|
)
|
|
533
547
|
)
|
|
534
548
|
|
|
549
|
+
@experimental
|
|
535
550
|
def create_vector_vision_store_for_user(
|
|
536
551
|
self,
|
|
537
552
|
owner_id: str,
|
|
@@ -952,6 +967,7 @@ class VectorStoreClient:
|
|
|
952
967
|
|
|
953
968
|
return hits
|
|
954
969
|
|
|
970
|
+
@experimental
|
|
955
971
|
def image_similarity_search(
|
|
956
972
|
self,
|
|
957
973
|
vector_store_id: str,
|
|
@@ -969,6 +985,7 @@ class VectorStoreClient:
|
|
|
969
985
|
vector_field="image_vector",
|
|
970
986
|
)
|
|
971
987
|
|
|
988
|
+
@experimental
|
|
972
989
|
def search_images(
|
|
973
990
|
self,
|
|
974
991
|
vector_store_id: str,
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# decorators.py
|
|
2
|
+
|
|
3
|
+
import functools
|
|
4
|
+
import warnings
|
|
5
|
+
from typing import Optional
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class ExperimentalWarning(UserWarning):
|
|
9
|
+
"""
|
|
10
|
+
API is experimental, may be incomplete (and possibly not fully functional),
|
|
11
|
+
and may change or be removed without notice.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class InternalWarning(UserWarning):
|
|
16
|
+
"""
|
|
17
|
+
API is internal/admin-only. Intended for framework authors and
|
|
18
|
+
superusers—will likely change or go away without notice.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def experimental(func):
|
|
23
|
+
"""
|
|
24
|
+
Decorator to mark methods as experimental.
|
|
25
|
+
Emits an ExperimentalWarning on first call.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
@functools.wraps(func)
|
|
29
|
+
def wrapper(*args, **kwargs):
|
|
30
|
+
warnings.warn(
|
|
31
|
+
f"{func.__name__} is experimental, may be incomplete, and may change in a future release",
|
|
32
|
+
ExperimentalWarning,
|
|
33
|
+
stacklevel=2,
|
|
34
|
+
)
|
|
35
|
+
return func(*args, **kwargs)
|
|
36
|
+
|
|
37
|
+
wrapper.__experimental__ = True
|
|
38
|
+
return wrapper
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def internal(func):
|
|
42
|
+
"""
|
|
43
|
+
Decorator to mark a method as internal/admin-only.
|
|
44
|
+
Raises PermissionError if self.is_admin is False or missing.
|
|
45
|
+
Emits an InternalWarning on use.
|
|
46
|
+
"""
|
|
47
|
+
|
|
48
|
+
@functools.wraps(func)
|
|
49
|
+
def wrapper(self, *args, **kwargs):
|
|
50
|
+
# 1️⃣ Enforce admin
|
|
51
|
+
if not getattr(self, "is_admin", False):
|
|
52
|
+
raise PermissionError(
|
|
53
|
+
f"{func.__name__} is for admin use only; your client.is_admin is False."
|
|
54
|
+
)
|
|
55
|
+
# 2️⃣ Warn about internal usage
|
|
56
|
+
warnings.warn(
|
|
57
|
+
f"{func.__name__} is internal/admin-only and may change without notice",
|
|
58
|
+
InternalWarning,
|
|
59
|
+
stacklevel=2,
|
|
60
|
+
)
|
|
61
|
+
return func(self, *args, **kwargs)
|
|
62
|
+
|
|
63
|
+
wrapper.__internal__ = True
|
|
64
|
+
return wrapper
|
|
@@ -30,11 +30,15 @@ class Entity:
|
|
|
30
30
|
self,
|
|
31
31
|
base_url: Optional[str] = None,
|
|
32
32
|
api_key: Optional[str] = None,
|
|
33
|
+
file_processor_kwargs: Optional[dict] = None,
|
|
33
34
|
):
|
|
34
35
|
"""
|
|
35
36
|
Initialize the main client with configuration.
|
|
36
37
|
Optionally, a configuration object can be injected to decouple from environment variables.
|
|
37
38
|
"""
|
|
39
|
+
|
|
40
|
+
self.file_processor_kwargs = file_processor_kwargs
|
|
41
|
+
|
|
38
42
|
self.base_url = base_url or os.getenv(
|
|
39
43
|
"ENTITIES_BASE_URL", "http://localhost:9000/"
|
|
40
44
|
)
|
|
@@ -145,7 +149,9 @@ class Entity:
|
|
|
145
149
|
def vectors(self) -> VectorStoreClient:
|
|
146
150
|
if self._vectors_client is None:
|
|
147
151
|
self._vectors_client = VectorStoreClient(
|
|
148
|
-
base_url=self.base_url,
|
|
152
|
+
base_url=self.base_url,
|
|
153
|
+
api_key=self.api_key,
|
|
154
|
+
file_processor_kwargs=self.file_processor_kwargs,
|
|
149
155
|
)
|
|
150
156
|
|
|
151
157
|
return self._vectors_client
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: projectdavid
|
|
3
|
-
Version: 1.33.
|
|
3
|
+
Version: 1.33.3
|
|
4
4
|
Summary: Python SDK for interacting with the Entities Assistant API.
|
|
5
5
|
Author-email: Francis Neequaye Armah <francis.neequaye@projectdavid.co.uk>
|
|
6
6
|
License: PolyForm Noncommercial License 1.0.0
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
{projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/clients/vector_store_manager.py
RENAMED
|
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
|
{projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/utils/function_call_suppressor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{projectdavid-1.33.1 → projectdavid-1.33.3}/src/projectdavid/utils/vector_search_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|