digitalkin 0.2.5__tar.gz → 0.2.6__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 (83) hide show
  1. {digitalkin-0.2.5 → digitalkin-0.2.6}/PKG-INFO +1 -1
  2. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/modules/minimal_llm_module.py +4 -5
  3. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/modules/text_transform_module.py +8 -5
  4. {digitalkin-0.2.5 → digitalkin-0.2.6}/pyproject.toml +1 -1
  5. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/__version__.py +1 -1
  6. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/filesystem/grpc_filesystem.py +4 -4
  7. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/storage/grpc_storage.py +38 -5
  8. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin.egg-info/PKG-INFO +1 -1
  9. {digitalkin-0.2.5 → digitalkin-0.2.6}/LICENSE +0 -0
  10. {digitalkin-0.2.5 → digitalkin-0.2.6}/README.md +0 -0
  11. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/base_server/__init__.py +0 -0
  12. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/base_server/mock/__init__.py +0 -0
  13. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/base_server/mock/mock_pb2.py +0 -0
  14. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
  15. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/base_server/server_async_insecure.py +0 -0
  16. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/base_server/server_async_secure.py +0 -0
  17. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/base_server/server_sync_insecure.py +0 -0
  18. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/base_server/server_sync_secure.py +0 -0
  19. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/modules/__init__.py +0 -0
  20. {digitalkin-0.2.5 → digitalkin-0.2.6}/examples/modules/storage_module.py +0 -0
  21. {digitalkin-0.2.5 → digitalkin-0.2.6}/setup.cfg +0 -0
  22. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/__init__.py +0 -0
  23. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/__init__.py +0 -0
  24. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/_base_server.py +0 -0
  25. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/module_server.py +0 -0
  26. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/module_servicer.py +0 -0
  27. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/registry_server.py +0 -0
  28. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/registry_servicer.py +0 -0
  29. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
  30. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/utils/factory.py +0 -0
  31. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +0 -0
  32. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/utils/models.py +0 -0
  33. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/grpc_servers/utils/types.py +0 -0
  34. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/logger.py +0 -0
  35. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/models/__init__.py +0 -0
  36. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/models/module/__init__.py +0 -0
  37. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/models/module/module.py +0 -0
  38. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/models/module/module_types.py +0 -0
  39. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/models/services/__init__.py +0 -0
  40. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/models/services/cost.py +0 -0
  41. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/models/services/storage.py +0 -0
  42. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/modules/__init__.py +0 -0
  43. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/modules/_base_module.py +0 -0
  44. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/modules/archetype_module.py +0 -0
  45. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/modules/job_manager.py +0 -0
  46. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/modules/tool_module.py +0 -0
  47. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/modules/trigger_module.py +0 -0
  48. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/py.typed +0 -0
  49. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/__init__.py +0 -0
  50. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/agent/__init__.py +0 -0
  51. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/agent/agent_strategy.py +0 -0
  52. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/agent/default_agent.py +0 -0
  53. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/base_strategy.py +0 -0
  54. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/cost/__init__.py +0 -0
  55. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/cost/cost_strategy.py +0 -0
  56. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/cost/default_cost.py +0 -0
  57. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/cost/grpc_cost.py +0 -0
  58. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/filesystem/__init__.py +0 -0
  59. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
  60. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
  61. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/identity/__init__.py +0 -0
  62. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/identity/default_identity.py +0 -0
  63. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/identity/identity_strategy.py +0 -0
  64. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/registry/__init__.py +0 -0
  65. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/registry/default_registry.py +0 -0
  66. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/registry/registry_strategy.py +0 -0
  67. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/services_config.py +0 -0
  68. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/services_models.py +0 -0
  69. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/setup/default_setup.py +0 -0
  70. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/setup/grpc_setup.py +0 -0
  71. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/setup/setup_strategy.py +0 -0
  72. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/snapshot/__init__.py +0 -0
  73. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
  74. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
  75. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/storage/__init__.py +0 -0
  76. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/storage/default_storage.py +0 -0
  77. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/services/storage/storage_strategy.py +0 -0
  78. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/utils/__init__.py +0 -0
  79. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin/utils/arg_parser.py +0 -0
  80. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin.egg-info/SOURCES.txt +0 -0
  81. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin.egg-info/dependency_links.txt +0 -0
  82. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin.egg-info/requires.txt +0 -0
  83. {digitalkin-0.2.5 → digitalkin-0.2.6}/src/digitalkin.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.2.5
3
+ Version: 0.2.6
4
4
  Summary: SDK to build kin used in DigitalKin
5
5
  Author-email: "DigitalKin.ai" <contact@digitalkin.ai>
6
6
  License: Attribution-NonCommercial-ShareAlike 4.0 International
@@ -8,7 +8,7 @@ import grpc
8
8
  import openai
9
9
  from pydantic import BaseModel
10
10
 
11
- from digitalkin.grpc_servers.utils.models import SecurityMode, ServerConfig, ServerMode
11
+ from digitalkin.grpc_servers.utils.models import SecurityMode, ClientConfig, ServerMode
12
12
  from digitalkin.modules._base_module import BaseModule
13
13
  from digitalkin.services.setup.setup_strategy import SetupData
14
14
 
@@ -45,12 +45,11 @@ class OpenAIToolSecret(BaseModel):
45
45
  """Secret model defining module configuration parameters."""
46
46
 
47
47
 
48
- server_config = ServerConfig(
48
+ client_config = ClientConfig(
49
49
  host="[::]",
50
50
  port=50151,
51
51
  mode=ServerMode.ASYNC,
52
52
  security=SecurityMode.INSECURE,
53
- max_workers=10,
54
53
  credentials=None,
55
54
  )
56
55
 
@@ -81,11 +80,11 @@ class OpenAIToolModule(BaseModule[OpenAIToolInput, OpenAIToolOutput, OpenAIToolS
81
80
  services_config_params = {
82
81
  "storage": {
83
82
  "config": {"setups": OpenAIToolSetup},
84
- "server_config": server_config,
83
+ "client_config": client_config,
85
84
  },
86
85
  "filesystem": {
87
86
  "config": {},
88
- "server_config": server_config,
87
+ "client_config": client_config,
89
88
  },
90
89
  }
91
90
 
@@ -6,7 +6,7 @@ from typing import Any, ClassVar
6
6
 
7
7
  from pydantic import BaseModel
8
8
 
9
- from digitalkin.grpc_servers.utils.models import SecurityMode, ServerConfig, ServerMode
9
+ from digitalkin.grpc_servers.utils.models import SecurityMode, ClientConfig, ServerMode
10
10
  from digitalkin.modules._base_module import BaseModule
11
11
  from digitalkin.services.setup.setup_strategy import SetupData
12
12
  from digitalkin.services.storage.storage_strategy import DataType, StorageRecord
@@ -54,12 +54,11 @@ class TextTransformStorage(BaseModel):
54
54
  ended: bool = False
55
55
 
56
56
 
57
- server_config = ServerConfig(
57
+ client_config = ClientConfig(
58
58
  host="[::]",
59
59
  port=50151,
60
60
  mode=ServerMode.ASYNC,
61
61
  security=SecurityMode.INSECURE,
62
- max_workers=10,
63
62
  credentials=None,
64
63
  )
65
64
 
@@ -91,8 +90,12 @@ class TextTransformModule(BaseModule[TextTransformInput, TextTransformOutput, Te
91
90
  services_config_params = {
92
91
  "storage": {
93
92
  "config": {"monitor": TextTransformStorage, "setups": TextTransformStorage},
94
- "server_config": server_config,
95
- }
93
+ "client_config": client_config,
94
+ },
95
+ "filesystem": {
96
+ "config": {},
97
+ "client_config": client_config,
98
+ },
96
99
  }
97
100
 
98
101
  async def initialize(self, setup_data: SetupData) -> None:
@@ -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.5"
15
+ version = "0.2.6"
16
16
 
17
17
  classifiers = [
18
18
  "Development Status :: 3 - Alpha",
@@ -5,4 +5,4 @@ from importlib.metadata import PackageNotFoundError, version
5
5
  try:
6
6
  __version__ = version("digitalkin")
7
7
  except PackageNotFoundError:
8
- __version__ = "0.2.5"
8
+ __version__ = "0.2.6"
@@ -10,7 +10,7 @@ from digitalkin_proto.digitalkin.filesystem.v2.filesystem_pb2 import FileType as
10
10
 
11
11
  from digitalkin.grpc_servers.utils.exceptions import ServerError
12
12
  from digitalkin.grpc_servers.utils.grpc_client_wrapper import GrpcClientWrapper
13
- from digitalkin.grpc_servers.utils.models import ServerConfig
13
+ from digitalkin.grpc_servers.utils.models import ClientConfig
14
14
  from digitalkin.services.filesystem.filesystem_strategy import (
15
15
  FilesystemData,
16
16
  FilesystemServiceError,
@@ -28,7 +28,7 @@ class GrpcFilesystem(FilesystemStrategy, GrpcClientWrapper):
28
28
  self,
29
29
  mission_id: str,
30
30
  config: dict[str, str],
31
- server_config: ServerConfig,
31
+ client_config: ClientConfig,
32
32
  **kwargs, # noqa: ANN003, ARG002
33
33
  ) -> None:
34
34
  """Initialize the default filesystem strategy.
@@ -36,11 +36,11 @@ class GrpcFilesystem(FilesystemStrategy, GrpcClientWrapper):
36
36
  Args:
37
37
  mission_id: The ID of the mission this strategy is associated with
38
38
  config: A dictionary mapping names to Pydantic model classes
39
- server_config: The server configuration object
39
+ client_config: The client configuration object
40
40
  kwargs: other optional arguments to pass to the parent class constructor
41
41
  """
42
42
  super().__init__(mission_id, config)
43
- channel = self._init_channel(server_config)
43
+ channel = self._init_channel(client_config)
44
44
  self.stub = filesystem_service_pb2_grpc.FilesystemServiceStub(channel)
45
45
  logger.info("Channel client 'Filesystem' initialized succesfully")
46
46
 
@@ -8,8 +8,8 @@ from google.protobuf.struct_pb2 import Struct
8
8
  from pydantic import BaseModel
9
9
 
10
10
  from digitalkin.grpc_servers.utils.grpc_client_wrapper import GrpcClientWrapper
11
- from digitalkin.grpc_servers.utils.models import ServerConfig
12
- from digitalkin.services.storage.storage_strategy import StorageRecord, StorageServiceError, StorageStrategy
11
+ from digitalkin.grpc_servers.utils.models import ClientConfig
12
+ from digitalkin.services.storage.storage_strategy import DataType, StorageRecord, StorageServiceError, StorageStrategy
13
13
 
14
14
  logger = logging.getLogger(__name__)
15
15
 
@@ -21,13 +21,13 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
21
21
  self,
22
22
  mission_id: str,
23
23
  config: dict[str, type[BaseModel]],
24
- server_config: ServerConfig,
24
+ client_config: ClientConfig,
25
25
  **kwargs, # noqa: ANN003, ARG002
26
26
  ) -> None:
27
27
  """Initialize the storage."""
28
28
  super().__init__(mission_id=mission_id, config=config)
29
29
 
30
- channel = self._init_channel(server_config)
30
+ channel = self._init_channel(client_config)
31
31
  self.stub = storage_service_pb2_grpc.StorageServiceStub(channel)
32
32
  logger.info("Channel client 'storage' initialized succesfully")
33
33
 
@@ -98,7 +98,7 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
98
98
 
99
99
  request = data_pb2.ModifyRecordRequest(data=data_struct, mission_id=self.mission_id, name=name)
100
100
  response: data_pb2.ModifyRecordResponse = self.exec_grpc_query("ModifyRecord", request)
101
- return StorageRecord(**json_format.MessageToDict(response.stored_data))
101
+ return self._build_record_from_proto(response.stored_data, name)
102
102
  except Exception:
103
103
  msg = f"Error while modifing record {name}"
104
104
  logger.exception(msg)
@@ -121,3 +121,36 @@ class GrpcStorage(StorageStrategy, GrpcClientWrapper):
121
121
  logger.exception(msg)
122
122
  return False
123
123
  return True
124
+
125
+ def _build_record_from_proto(self, stored_data: data_pb2.StorageRecord, default_name: str) -> StorageRecord:
126
+ """Helper to construire un StorageRecord complet à partir du message gRPC.
127
+
128
+ Args:
129
+ stored_data: Le message gRPC contenant les données stockées.
130
+ default_name: Le nom par défaut à utiliser si le nom n'est pas présent dans les données.
131
+
132
+ Returns:
133
+ StorageRecord: Un objet StorageRecord construit à partir des données stockées.
134
+ """
135
+ # Converti en dict, avec tous les champs même s'ils sont absents
136
+ raw = json_format.MessageToDict(
137
+ stored_data,
138
+ preserving_proto_field_name=True,
139
+ always_print_fields_with_no_presence=True,
140
+ )
141
+ # On récupère ou on complète les champs obligatoires
142
+ name = raw.get("name", default_name)
143
+ dtype = raw.get("data_type", DataType.OUTPUT.name)
144
+ payload = raw.get("data", {})
145
+
146
+ # Valide le modèle pydantic pour le champ `data`
147
+ validated = self._validate_data(name, payload)
148
+
149
+ return StorageRecord(
150
+ mission_id=self.mission_id,
151
+ name=name,
152
+ data_type=DataType[dtype],
153
+ data=validated,
154
+ creation_date=raw.get("creation_date"),
155
+ update_date=raw.get("update_date"),
156
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.2.5
3
+ Version: 0.2.6
4
4
  Summary: SDK to build kin used in DigitalKin
5
5
  Author-email: "DigitalKin.ai" <contact@digitalkin.ai>
6
6
  License: Attribution-NonCommercial-ShareAlike 4.0 International
File without changes
File without changes
File without changes