digitalkin 0.2.9__tar.gz → 0.2.11__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.
- {digitalkin-0.2.9 → digitalkin-0.2.11}/PKG-INFO +1 -1
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/modules/storage_module.py +2 -2
- {digitalkin-0.2.9 → digitalkin-0.2.11}/pyproject.toml +1 -1
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/__version__.py +1 -1
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/storage/grpc_storage.py +3 -3
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/storage/storage_strategy.py +7 -7
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin.egg-info/PKG-INFO +1 -1
- {digitalkin-0.2.9 → digitalkin-0.2.11}/LICENSE +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/README.md +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/base_server/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/base_server/mock/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/base_server/mock/mock_pb2.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/base_server/server_async_insecure.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/base_server/server_async_secure.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/base_server/server_sync_insecure.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/base_server/server_sync_secure.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/modules/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/modules/minimal_llm_module.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/examples/modules/text_transform_module.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/setup.cfg +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/_base_server.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/module_server.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/registry_server.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/registry_servicer.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/utils/factory.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/utils/models.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/utils/types.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/logger.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/models/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/models/module/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/models/module/module.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/models/module/module_types.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/models/services/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/models/services/cost.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/models/services/storage.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/modules/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/modules/_base_module.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/modules/archetype_module.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/modules/job_manager.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/modules/tool_module.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/modules/trigger_module.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/py.typed +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/agent/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/agent/agent_strategy.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/agent/default_agent.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/base_strategy.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/cost/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/cost/cost_strategy.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/cost/default_cost.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/cost/grpc_cost.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/filesystem/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/identity/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/identity/default_identity.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/identity/identity_strategy.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/registry/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/registry/default_registry.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/registry/registry_strategy.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/services_config.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/services_models.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/setup/default_setup.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/setup/grpc_setup.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/setup/setup_strategy.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/snapshot/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/storage/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/storage/default_storage.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/utils/__init__.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/utils/arg_parser.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/utils/llm_ready_schema.py +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin.egg-info/SOURCES.txt +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin.egg-info/dependency_links.txt +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin.egg-info/requires.txt +0 -0
- {digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin.egg-info/top_level.txt +0 -0
|
@@ -62,7 +62,7 @@ class ExampleModule(ArchetypeModule[ExampleInput, ExampleOutput, ExampleSetup, E
|
|
|
62
62
|
|
|
63
63
|
# Define services_config_params with default values
|
|
64
64
|
services_config_strategies = {}
|
|
65
|
-
services_config_params = {"storage": {"config": {"
|
|
65
|
+
services_config_params = {"storage": {"config": {"example": ExampleOutput}}, "filesystem": {"config": {}}}
|
|
66
66
|
|
|
67
67
|
def __init__(self, job_id: str, mission_id: str) -> None:
|
|
68
68
|
"""Initialize the example module.
|
|
@@ -172,7 +172,7 @@ async def test_module() -> None:
|
|
|
172
172
|
def test_storage_directly() -> None:
|
|
173
173
|
"""Test the storage service directly."""
|
|
174
174
|
# Initialize storage service
|
|
175
|
-
storage = ServicesConfig().storage(mission_id="test-mission", config={"
|
|
175
|
+
storage = ServicesConfig().storage(mission_id="test-mission", config={"example": ExampleStorage})
|
|
176
176
|
|
|
177
177
|
# Create a test record
|
|
178
178
|
storage.store("example", "test_table", {"test_key": "test_value"}, "OUTPUT")
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
|
|
13
13
|
keywords = [ "digitalkin", "kin", "agent", "gprc", "sdk" ]
|
|
14
14
|
# Version of the package automatically updated by bump2version (that is why it is separated)
|
|
15
|
-
version = "0.2.
|
|
15
|
+
version = "0.2.11"
|
|
16
16
|
|
|
17
17
|
classifiers = [
|
|
18
18
|
"Development Status :: 3 - Alpha",
|
|
@@ -37,7 +37,7 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
37
37
|
dtype = DataType[raw["data_type"]]
|
|
38
38
|
payload = raw.get("data", {})
|
|
39
39
|
|
|
40
|
-
validated = self._validate_data(
|
|
40
|
+
validated = self._validate_data(coll, payload)
|
|
41
41
|
return StorageRecord(
|
|
42
42
|
mission_id=mission,
|
|
43
43
|
collection=coll,
|
|
@@ -114,10 +114,10 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
|
|
|
114
114
|
collection=collection,
|
|
115
115
|
record_id=record_id,
|
|
116
116
|
)
|
|
117
|
-
resp = self.exec_grpc_query("
|
|
117
|
+
resp = self.exec_grpc_query("UpdateRecord", req)
|
|
118
118
|
return self._build_record_from_proto(resp.stored_data)
|
|
119
119
|
except Exception:
|
|
120
|
-
logger.exception("gRPC
|
|
120
|
+
logger.exception("gRPC UpdateRecord failed for %s:%s", collection, record_id)
|
|
121
121
|
return None
|
|
122
122
|
|
|
123
123
|
def _remove(self, collection: str, record_id: str) -> bool:
|
|
@@ -39,11 +39,11 @@ class StorageRecord(BaseModel):
|
|
|
39
39
|
class StorageStrategy(BaseStrategy, ABC):
|
|
40
40
|
"""Define CRUD + list/remove-collection against a collection/record store."""
|
|
41
41
|
|
|
42
|
-
def _validate_data(self,
|
|
42
|
+
def _validate_data(self, collection: str, data: dict[str, Any]) -> BaseModel:
|
|
43
43
|
"""Validate data against the model schema for the given key.
|
|
44
44
|
|
|
45
45
|
Args:
|
|
46
|
-
|
|
46
|
+
collection: The unique name for the record type
|
|
47
47
|
data: The data to validate
|
|
48
48
|
|
|
49
49
|
Returns:
|
|
@@ -52,15 +52,15 @@ class StorageStrategy(BaseStrategy, ABC):
|
|
|
52
52
|
Raises:
|
|
53
53
|
ValueError: If the key has no associated model or validation fails
|
|
54
54
|
"""
|
|
55
|
-
model_cls = self.config.get(
|
|
55
|
+
model_cls = self.config.get(collection)
|
|
56
56
|
if not model_cls:
|
|
57
|
-
msg = f"No schema registered for collection '{
|
|
57
|
+
msg = f"No schema registered for collection '{collection}'"
|
|
58
58
|
raise ValueError(msg)
|
|
59
59
|
|
|
60
60
|
try:
|
|
61
61
|
return model_cls.model_validate(data)
|
|
62
62
|
except Exception as e:
|
|
63
|
-
msg = f"Validation failed for '{
|
|
63
|
+
msg = f"Validation failed for '{collection}': {e!s}"
|
|
64
64
|
raise ValueError(msg) from e
|
|
65
65
|
|
|
66
66
|
def _create_storage_record(
|
|
@@ -200,7 +200,7 @@ class StorageStrategy(BaseStrategy, ABC):
|
|
|
200
200
|
raise ValueError(msg)
|
|
201
201
|
record_id = record_id or uuid4().hex
|
|
202
202
|
data_type_enum = DataType[data_type]
|
|
203
|
-
validated_data = self._validate_data(
|
|
203
|
+
validated_data = self._validate_data(collection, {**data, "mission_id": self.mission_id})
|
|
204
204
|
record = self._create_storage_record(collection, record_id, validated_data, data_type_enum)
|
|
205
205
|
return self._store(record)
|
|
206
206
|
|
|
@@ -227,7 +227,7 @@ class StorageStrategy(BaseStrategy, ABC):
|
|
|
227
227
|
Returns:
|
|
228
228
|
StorageRecord: The modified record
|
|
229
229
|
"""
|
|
230
|
-
validated_data = self._validate_data(
|
|
230
|
+
validated_data = self._validate_data(collection, data)
|
|
231
231
|
return self._update(collection, record_id, validated_data)
|
|
232
232
|
|
|
233
233
|
def remove(self, collection: str, record_id: str) -> bool:
|
|
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
|
{digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.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
|
|
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
|
{digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/filesystem/default_filesystem.py
RENAMED
|
File without changes
|
{digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/filesystem/filesystem_strategy.py
RENAMED
|
File without changes
|
{digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/filesystem/grpc_filesystem.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/identity/identity_strategy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/registry/registry_strategy.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
|
{digitalkin-0.2.9 → digitalkin-0.2.11}/src/digitalkin/services/snapshot/snapshot_strategy.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
|