digitalkin 0.3.0.dev1__py3-none-any.whl → 0.3.0rc1__py3-none-any.whl
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/__version__.py +1 -1
- digitalkin/core/__init__.py +1 -0
- digitalkin/core/job_manager/__init__.py +1 -0
- digitalkin/{modules → core}/job_manager/base_job_manager.py +5 -3
- digitalkin/{modules → core}/job_manager/single_job_manager.py +9 -10
- digitalkin/{modules → core}/job_manager/taskiq_broker.py +2 -3
- digitalkin/{modules → core}/job_manager/taskiq_job_manager.py +5 -6
- digitalkin/core/task_manager/__init__.py +1 -0
- digitalkin/{modules/job_manager → core/task_manager}/surrealdb_repository.py +0 -1
- digitalkin/{modules/job_manager → core/task_manager}/task_manager.py +98 -48
- digitalkin/{modules/job_manager → core/task_manager}/task_session.py +60 -17
- digitalkin/grpc_servers/__init__.py +1 -19
- digitalkin/grpc_servers/_base_server.py +2 -2
- digitalkin/grpc_servers/module_server.py +2 -2
- digitalkin/grpc_servers/module_servicer.py +3 -3
- digitalkin/grpc_servers/registry_server.py +1 -1
- digitalkin/grpc_servers/utils/__init__.py +1 -0
- digitalkin/grpc_servers/utils/exceptions.py +0 -8
- digitalkin/grpc_servers/utils/grpc_client_wrapper.py +1 -1
- digitalkin/mixins/chat_history_mixin.py +3 -1
- digitalkin/mixins/file_history_mixin.py +14 -20
- digitalkin/mixins/filesystem_mixin.py +1 -2
- digitalkin/mixins/logger_mixin.py +4 -12
- digitalkin/models/core/__init__.py +1 -0
- digitalkin/{modules/job_manager → models/core}/job_manager_models.py +3 -3
- digitalkin/models/{module → core}/task_monitor.py +7 -5
- digitalkin/models/grpc_servers/__init__.py +1 -0
- digitalkin/models/module/module_context.py +33 -1
- digitalkin/models/services/cost.py +1 -0
- digitalkin/models/services/storage.py +1 -1
- digitalkin/modules/_base_module.py +16 -80
- digitalkin/services/cost/grpc_cost.py +1 -1
- digitalkin/services/filesystem/grpc_filesystem.py +1 -1
- digitalkin/services/setup/grpc_setup.py +1 -1
- digitalkin/services/storage/grpc_storage.py +1 -1
- digitalkin/utils/arg_parser.py +1 -1
- digitalkin/utils/development_mode_action.py +2 -2
- digitalkin/utils/package_discover.py +1 -2
- {digitalkin-0.3.0.dev1.dist-info → digitalkin-0.3.0rc1.dist-info}/METADATA +2 -2
- {digitalkin-0.3.0.dev1.dist-info → digitalkin-0.3.0rc1.dist-info}/RECORD +45 -40
- digitalkin/grpc_servers/utils/factory.py +0 -180
- /digitalkin/{grpc_servers/utils → models/grpc_servers}/models.py +0 -0
- /digitalkin/{grpc_servers/utils → models/grpc_servers}/types.py +0 -0
- {digitalkin-0.3.0.dev1.dist-info → digitalkin-0.3.0rc1.dist-info}/WHEEL +0 -0
- {digitalkin-0.3.0.dev1.dist-info → digitalkin-0.3.0rc1.dist-info}/licenses/LICENSE +0 -0
- {digitalkin-0.3.0.dev1.dist-info → digitalkin-0.3.0rc1.dist-info}/top_level.txt +0 -0
|
@@ -50,13 +50,7 @@ class BaseModule( # noqa: PLR0904
|
|
|
50
50
|
services_config_params: ClassVar[dict[str, dict[str, Any | None] | None]]
|
|
51
51
|
services_config: ServicesConfig
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
job_id: str
|
|
55
|
-
mission_id: str
|
|
56
|
-
setup_id: str
|
|
57
|
-
setup_version_id: str
|
|
58
|
-
|
|
59
|
-
def _init_strategies(self) -> dict[str, Any]:
|
|
53
|
+
def _init_strategies(self, mission_id: str, setup_id: str, setup_version_id: str) -> dict[str, Any]:
|
|
60
54
|
"""Initialize the services configuration.
|
|
61
55
|
|
|
62
56
|
Returns:
|
|
@@ -73,9 +67,9 @@ class BaseModule( # noqa: PLR0904
|
|
|
73
67
|
return {
|
|
74
68
|
service_name: self.services_config.init_strategy(
|
|
75
69
|
service_name,
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
70
|
+
mission_id,
|
|
71
|
+
setup_id,
|
|
72
|
+
setup_version_id,
|
|
79
73
|
)
|
|
80
74
|
for service_name in self.services_config.valid_strategy_names()
|
|
81
75
|
}
|
|
@@ -88,23 +82,19 @@ class BaseModule( # noqa: PLR0904
|
|
|
88
82
|
setup_version_id: str,
|
|
89
83
|
) -> None:
|
|
90
84
|
"""Initialize the module."""
|
|
91
|
-
self.job_id: str = job_id
|
|
92
|
-
self.mission_id: str = mission_id
|
|
93
|
-
# Setup reference needed for the overall Kin scope as the filesystem context
|
|
94
|
-
self.setup_id: str = setup_id
|
|
95
|
-
# SetupVersion reference needed for the precise Kin scope as the cost
|
|
96
|
-
self.setup_version_id: str = setup_version_id
|
|
97
85
|
self._status = ModuleStatus.CREATED
|
|
98
86
|
|
|
99
87
|
# Initialize minimum context
|
|
100
88
|
self.context = ModuleContext(
|
|
101
89
|
# Initialize services configuration
|
|
102
|
-
**self._init_strategies(),
|
|
90
|
+
**self._init_strategies(mission_id, setup_id, setup_version_id),
|
|
103
91
|
session={
|
|
92
|
+
"setup_id": setup_id,
|
|
104
93
|
"mission_id": mission_id,
|
|
105
94
|
"setup_version_id": setup_version_id,
|
|
106
95
|
"job_id": job_id,
|
|
107
96
|
},
|
|
97
|
+
callbacks={"logger": logger},
|
|
108
98
|
)
|
|
109
99
|
|
|
110
100
|
@property
|
|
@@ -335,7 +325,6 @@ class BaseModule( # noqa: PLR0904
|
|
|
335
325
|
Args:
|
|
336
326
|
input_data (InputModelT): The input data to be processed by the module.
|
|
337
327
|
setup_data (SetupModelT): The setup or configuration data required for the module.
|
|
338
|
-
callback (Callable[[OutputModelT], Coroutine[Any, Any, None]]): callback to be invoked to stream any result.
|
|
339
328
|
|
|
340
329
|
Raises:
|
|
341
330
|
ValueError: If no handler for the protocol is found.
|
|
@@ -368,51 +357,15 @@ class BaseModule( # noqa: PLR0904
|
|
|
368
357
|
asyncio.CancelledError: If the module is cancelled
|
|
369
358
|
"""
|
|
370
359
|
try:
|
|
371
|
-
logger.info(
|
|
372
|
-
"Starting module %s",
|
|
373
|
-
self.name,
|
|
374
|
-
extra={
|
|
375
|
-
"mission_id": self.mission_id,
|
|
376
|
-
"setup_id": self.setup_id,
|
|
377
|
-
"setup_version_id": self.setup_version_id,
|
|
378
|
-
"job_id": self.job_id,
|
|
379
|
-
},
|
|
380
|
-
)
|
|
360
|
+
logger.info("Starting module %s", self.name, extra=self.context.session.current_ids())
|
|
381
361
|
await self.run(input_data, setup_data)
|
|
382
|
-
logger.info(
|
|
383
|
-
"Module %s finished",
|
|
384
|
-
self.name,
|
|
385
|
-
extra={
|
|
386
|
-
"mission_id": self.mission_id,
|
|
387
|
-
"setup_id": self.setup_id,
|
|
388
|
-
"setup_version_id": self.setup_version_id,
|
|
389
|
-
"job_id": self.job_id,
|
|
390
|
-
},
|
|
391
|
-
)
|
|
362
|
+
logger.info("Module %s finished", self.name, extra=self.context.session.current_ids())
|
|
392
363
|
except asyncio.CancelledError:
|
|
393
364
|
self._status = ModuleStatus.CANCELLED
|
|
394
|
-
logger.error(
|
|
395
|
-
"Module %s cancelled",
|
|
396
|
-
self.name,
|
|
397
|
-
extra={
|
|
398
|
-
"mission_id": self.mission_id,
|
|
399
|
-
"setup_id": self.setup_id,
|
|
400
|
-
"setup_version_id": self.setup_version_id,
|
|
401
|
-
"job_id": self.job_id,
|
|
402
|
-
},
|
|
403
|
-
)
|
|
365
|
+
logger.error("Module %s cancelled", self.name, extra=self.context.session.current_ids())
|
|
404
366
|
except Exception:
|
|
405
367
|
self._status = ModuleStatus.FAILED
|
|
406
|
-
logger.exception(
|
|
407
|
-
"Error inside module %s",
|
|
408
|
-
self.name,
|
|
409
|
-
extra={
|
|
410
|
-
"mission_id": self.mission_id,
|
|
411
|
-
"setup_id": self.setup_id,
|
|
412
|
-
"setup_version_id": self.setup_version_id,
|
|
413
|
-
"job_id": self.job_id,
|
|
414
|
-
},
|
|
415
|
-
)
|
|
368
|
+
logger.exception("Error inside module %s", self.name, extra=self.context.session.current_ids())
|
|
416
369
|
else:
|
|
417
370
|
self._status = ModuleStatus.STOPPING
|
|
418
371
|
|
|
@@ -425,9 +378,8 @@ class BaseModule( # noqa: PLR0904
|
|
|
425
378
|
) -> None:
|
|
426
379
|
"""Start the module."""
|
|
427
380
|
try:
|
|
428
|
-
self.context.callbacks.logger = logger
|
|
429
381
|
self.context.callbacks.send_message = callback
|
|
430
|
-
logger.info(f"Inititalize module {self.job_id}")
|
|
382
|
+
logger.info(f"Inititalize module {self.context.session.job_id}")
|
|
431
383
|
await self.initialize(self.context, setup_data)
|
|
432
384
|
except Exception as e:
|
|
433
385
|
self._status = ModuleStatus.FAILED
|
|
@@ -448,7 +400,7 @@ class BaseModule( # noqa: PLR0904
|
|
|
448
400
|
try:
|
|
449
401
|
logger.debug("Init the discovered input handlers.")
|
|
450
402
|
self.triggers_discoverer.init_handlers(self.context)
|
|
451
|
-
logger.debug(f"Run lifecycle {self.job_id}")
|
|
403
|
+
logger.debug(f"Run lifecycle {self.context.session.job_id}")
|
|
452
404
|
await self._run_lifecycle(input_data, setup_data)
|
|
453
405
|
except Exception:
|
|
454
406
|
self._status = ModuleStatus.FAILED
|
|
@@ -458,7 +410,7 @@ class BaseModule( # noqa: PLR0904
|
|
|
458
410
|
|
|
459
411
|
async def stop(self) -> None:
|
|
460
412
|
"""Stop the module."""
|
|
461
|
-
logger.info("Stopping module %s | job_id=%s", self.name, self.job_id)
|
|
413
|
+
logger.info("Stopping module %s | job_id=%s", self.name, self.context.session.job_id)
|
|
462
414
|
try:
|
|
463
415
|
self._status = ModuleStatus.STOPPING
|
|
464
416
|
logger.debug("Module %s stopped", self.name)
|
|
@@ -477,15 +429,7 @@ class BaseModule( # noqa: PLR0904
|
|
|
477
429
|
) -> None:
|
|
478
430
|
"""Start the module."""
|
|
479
431
|
try:
|
|
480
|
-
logger.info(
|
|
481
|
-
"Run Config Setup lifecycle",
|
|
482
|
-
extra={
|
|
483
|
-
"mission_id": self.mission_id,
|
|
484
|
-
"setup_id": self.setup_id,
|
|
485
|
-
"setup_version_id": self.setup_version_id,
|
|
486
|
-
"job_id": self.job_id,
|
|
487
|
-
},
|
|
488
|
-
)
|
|
432
|
+
logger.info("Run Config Setup lifecycle", extra=self.context.session.current_ids())
|
|
489
433
|
self._status = ModuleStatus.RUNNING
|
|
490
434
|
self.context.callbacks.set_config_setup = callback
|
|
491
435
|
content = await self.run_config_setup(self.context, config_setup_data)
|
|
@@ -497,12 +441,4 @@ class BaseModule( # noqa: PLR0904
|
|
|
497
441
|
except Exception:
|
|
498
442
|
logger.error("Error during module lifecyle")
|
|
499
443
|
self._status = ModuleStatus.FAILED
|
|
500
|
-
logger.exception(
|
|
501
|
-
"Error during module lifecyle",
|
|
502
|
-
extra={
|
|
503
|
-
"mission_id": self.mission_id,
|
|
504
|
-
"setup_id": self.setup_id,
|
|
505
|
-
"setup_version_id": self.setup_version_id,
|
|
506
|
-
"job_id": self.job_id,
|
|
507
|
-
},
|
|
508
|
-
)
|
|
444
|
+
logger.exception("Error during module lifecyle", extra=self.context.session.current_ids())
|
|
@@ -9,8 +9,8 @@ from google.protobuf import json_format
|
|
|
9
9
|
|
|
10
10
|
from digitalkin.grpc_servers.utils.exceptions import ServerError
|
|
11
11
|
from digitalkin.grpc_servers.utils.grpc_client_wrapper import GrpcClientWrapper
|
|
12
|
-
from digitalkin.grpc_servers.utils.models import ClientConfig
|
|
13
12
|
from digitalkin.logger import logger
|
|
13
|
+
from digitalkin.models.grpc_servers.models import ClientConfig
|
|
14
14
|
from digitalkin.services.cost.cost_strategy import (
|
|
15
15
|
CostConfig,
|
|
16
16
|
CostData,
|
|
@@ -10,8 +10,8 @@ from google.protobuf.json_format import MessageToDict
|
|
|
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 ClientConfig
|
|
14
13
|
from digitalkin.logger import logger
|
|
14
|
+
from digitalkin.models.grpc_servers.models import ClientConfig
|
|
15
15
|
from digitalkin.services.filesystem.filesystem_strategy import (
|
|
16
16
|
FileFilter,
|
|
17
17
|
FilesystemRecord,
|
|
@@ -15,8 +15,8 @@ from pydantic import ValidationError
|
|
|
15
15
|
|
|
16
16
|
from digitalkin.grpc_servers.utils.exceptions import ServerError
|
|
17
17
|
from digitalkin.grpc_servers.utils.grpc_client_wrapper import GrpcClientWrapper
|
|
18
|
-
from digitalkin.grpc_servers.utils.models import ClientConfig
|
|
19
18
|
from digitalkin.logger import logger
|
|
19
|
+
from digitalkin.models.grpc_servers.models import ClientConfig
|
|
20
20
|
from digitalkin.services.setup.setup_strategy import SetupData, SetupServiceError, SetupStrategy, SetupVersionData
|
|
21
21
|
|
|
22
22
|
|
|
@@ -6,8 +6,8 @@ from google.protobuf.struct_pb2 import Struct
|
|
|
6
6
|
from pydantic import BaseModel
|
|
7
7
|
|
|
8
8
|
from digitalkin.grpc_servers.utils.grpc_client_wrapper import GrpcClientWrapper
|
|
9
|
-
from digitalkin.grpc_servers.utils.models import ClientConfig
|
|
10
9
|
from digitalkin.logger import logger
|
|
10
|
+
from digitalkin.models.grpc_servers.models import ClientConfig
|
|
11
11
|
from digitalkin.services.storage.storage_strategy import (
|
|
12
12
|
DataType,
|
|
13
13
|
StorageRecord,
|
digitalkin/utils/arg_parser.py
CHANGED
|
@@ -13,7 +13,7 @@ logger.setLevel(logging.INFO)
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class DevelopmentModeMappingAction(Action):
|
|
16
|
-
"""."""
|
|
16
|
+
"""ArgParse Action to map an environment variable to a ServicesMode enum."""
|
|
17
17
|
|
|
18
18
|
def __init__(
|
|
19
19
|
self,
|
|
@@ -22,7 +22,7 @@ class DevelopmentModeMappingAction(Action):
|
|
|
22
22
|
default: str | None = None,
|
|
23
23
|
**kwargs: dict[str, Any],
|
|
24
24
|
) -> None:
|
|
25
|
-
"""."""
|
|
25
|
+
"""Initialize the DevelopmentModeMappingAction."""
|
|
26
26
|
default = ServicesMode(os.environ.get(env_var, default))
|
|
27
27
|
|
|
28
28
|
if required and default:
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""."""
|
|
1
|
+
"""Secure module discovery and import utility for trigger handlers."""
|
|
2
2
|
|
|
3
3
|
import importlib
|
|
4
4
|
import importlib.util
|
|
@@ -276,7 +276,6 @@ class ModuleDiscoverer:
|
|
|
276
276
|
Args:
|
|
277
277
|
packages: List of package names to scan.
|
|
278
278
|
file_pattern: Glob pattern for matching modules.
|
|
279
|
-
safe_mode: If True, blocks modules with forbidden names.
|
|
280
279
|
max_file_size: Limit for module file sizes in bytes.
|
|
281
280
|
"""
|
|
282
281
|
self.packages = packages
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: digitalkin
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.0rc1
|
|
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
|
|
@@ -465,7 +465,7 @@ Requires-Dist: taskiq-redis>=1.1.2; extra == "taskiq"
|
|
|
465
465
|
Requires-Dist: taskiq[reload]>=0.11.18; extra == "taskiq"
|
|
466
466
|
Provides-Extra: dev
|
|
467
467
|
Requires-Dist: typos>=1.38.0; extra == "dev"
|
|
468
|
-
Requires-Dist: ruff>=0.
|
|
468
|
+
Requires-Dist: ruff>=0.14.1; extra == "dev"
|
|
469
469
|
Requires-Dist: mypy>=1.18.2; extra == "dev"
|
|
470
470
|
Requires-Dist: pyright>=1.1.406; extra == "dev"
|
|
471
471
|
Requires-Dist: pre-commit>=4.3.0; extra == "dev"
|
|
@@ -7,51 +7,56 @@ base_server/mock/__init__.py,sha256=YZFT-F1l_TpvJYuIPX-7kTeE1CfOjhx9YmNRXVoi-jQ,
|
|
|
7
7
|
base_server/mock/mock_pb2.py,sha256=sETakcS3PAAm4E-hTCV1jIVaQTPEAIoVVHupB8Z_k7Y,1843
|
|
8
8
|
base_server/mock/mock_pb2_grpc.py,sha256=BbOT70H6q3laKgkHfOx1QdfmCS_HxCY4wCOX84YAdG4,3180
|
|
9
9
|
digitalkin/__init__.py,sha256=7LLBAba0th-3SGqcpqFO-lopWdUkVLKzLZiMtB-mW3M,162
|
|
10
|
-
digitalkin/__version__.py,sha256=
|
|
10
|
+
digitalkin/__version__.py,sha256=R-V9kMfZiYqI-Y5MJxvvyFY9miiXM4kkiJl2gmUyr1E,194
|
|
11
11
|
digitalkin/logger.py,sha256=8ze_tjt2G6mDTuQcsf7-UTXWP3UHZ7LZVSs_iqF4rX4,4685
|
|
12
12
|
digitalkin/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
-
digitalkin/
|
|
14
|
-
digitalkin/
|
|
15
|
-
digitalkin/
|
|
16
|
-
digitalkin/
|
|
17
|
-
digitalkin/
|
|
13
|
+
digitalkin/core/__init__.py,sha256=FJRcJ-B1Viyn-38L8XpOpZ8KOnf1I7PCDOAmKXLQhqc,71
|
|
14
|
+
digitalkin/core/job_manager/__init__.py,sha256=gGtgQpE6vbBHxAj1SYMbcpj45Q6x8IcsqnyQPfyZZ-8,25
|
|
15
|
+
digitalkin/core/job_manager/base_job_manager.py,sha256=tkm-nT_SuctG4cSzMbvo25zwS8WSaMf-dF8MWnXnO6I,6441
|
|
16
|
+
digitalkin/core/job_manager/single_job_manager.py,sha256=7wswR1hJ-yM6nLPi-7ibyvdMlG3I4pKKdW8TVsGFGWw,11078
|
|
17
|
+
digitalkin/core/job_manager/taskiq_broker.py,sha256=qnN45i688z81WnEbpeoaiT9R60udnLmvCCW-XLm10y8,7461
|
|
18
|
+
digitalkin/core/job_manager/taskiq_job_manager.py,sha256=UsqBsSYm88ibgRabSVPzK-9o2iXtGPsRlUO58M_PqVA,10147
|
|
19
|
+
digitalkin/core/task_manager/__init__.py,sha256=k9i-qIoee_1yXogyQolaVFDUQBIZU3ENbYKtjrCNmTQ,31
|
|
20
|
+
digitalkin/core/task_manager/surrealdb_repository.py,sha256=bmKaUoLTGfF-26zG_lX8mD-0dL3eTNr-BerUkSH7T2k,7739
|
|
21
|
+
digitalkin/core/task_manager/task_manager.py,sha256=7wzilf2C4PvGXJVzc2sE_ZL9YrVoQ44E8kRcioP1OOw,16378
|
|
22
|
+
digitalkin/core/task_manager/task_session.py,sha256=tjXm0gZOYxrnyzr07x6DtB6vZRl2U7BDBNEitSJwxLs,10525
|
|
23
|
+
digitalkin/grpc_servers/__init__.py,sha256=ZIRMJ1Lcas8yQ106GCup6hn2UBOsx1sNk8ap0lpEDnY,72
|
|
24
|
+
digitalkin/grpc_servers/_base_server.py,sha256=ZVeCDwI7w7fFbPTXPkeJb_SOuLfd2T7za3T4oCu2UWY,18680
|
|
25
|
+
digitalkin/grpc_servers/module_server.py,sha256=kXvPOfJ9LT9oRd5oPj-ZpYB9EYY_4RDlRpcyGzWkilc,10213
|
|
26
|
+
digitalkin/grpc_servers/module_servicer.py,sha256=Rr1Cq2zMaiu9oRAdjgmIlfLa_QDFzWPDamzzhE-mgzU,19365
|
|
27
|
+
digitalkin/grpc_servers/registry_server.py,sha256=7jNzGiacr6XOm4EdHN7tHhaA_J0q70y38Xxbnlt8WxQ,2224
|
|
18
28
|
digitalkin/grpc_servers/registry_servicer.py,sha256=dqsKGHZ0LnaIvGt4ipaAuigd37sbJBndT4MAT029GsY,16471
|
|
19
|
-
digitalkin/grpc_servers/utils/
|
|
20
|
-
digitalkin/grpc_servers/utils/
|
|
21
|
-
digitalkin/grpc_servers/utils/grpc_client_wrapper.py,sha256=
|
|
22
|
-
digitalkin/grpc_servers/utils/models.py,sha256=ZQ1Gk4zmLRX_ueuwFOwXgtyG9OEPSzFa_91I_CXZmZ0,8957
|
|
23
|
-
digitalkin/grpc_servers/utils/types.py,sha256=rQ78s4nAet2jy-NIDj_PUWriT0kuGHr_w6ELjmjgBao,539
|
|
29
|
+
digitalkin/grpc_servers/utils/__init__.py,sha256=ZnAIb_F8z4NhtPypqkdmzgRSzolKnJTk3oZx5GfWH5Y,38
|
|
30
|
+
digitalkin/grpc_servers/utils/exceptions.py,sha256=LtaDtlqXCeT6iqApogs4pbtezotOVeg4fhnFzGBvFsY,692
|
|
31
|
+
digitalkin/grpc_servers/utils/grpc_client_wrapper.py,sha256=a4xeulweovugI-IUVBrSZ-CswZHrBdeh9r-yzP8dl1w,2753
|
|
24
32
|
digitalkin/mixins/__init__.py,sha256=d6ljaoyJZJT9XxOrXZG5FVNvbLURb3_CZrkp4GPZWYM,590
|
|
25
33
|
digitalkin/mixins/base_mixin.py,sha256=uLkg6MbDtVc9DysjdfNIGKahxQLnnjuL3DYpuyNLbk8,486
|
|
26
34
|
digitalkin/mixins/callback_mixin.py,sha256=90nHm9-pbKT14GAy3CB3fsBtpYu5IH0woOQdNLM2e_Y,836
|
|
27
|
-
digitalkin/mixins/chat_history_mixin.py,sha256=
|
|
35
|
+
digitalkin/mixins/chat_history_mixin.py,sha256=SqCmnh6Ybed3TQoQbvUjbzwKs_evvfW_lr4j_Uncg0A,4231
|
|
28
36
|
digitalkin/mixins/cost_mixin.py,sha256=nFqhLsRHdXAt3GOH6qI8sqX9KW3leTPW3gaclensBVw,2274
|
|
29
|
-
digitalkin/mixins/file_history_mixin.py,sha256=
|
|
30
|
-
digitalkin/mixins/filesystem_mixin.py,sha256=
|
|
31
|
-
digitalkin/mixins/logger_mixin.py,sha256=
|
|
37
|
+
digitalkin/mixins/file_history_mixin.py,sha256=5MgxglccVe11M7YnoeuXbJYXNEwVZdiGd5Fl8sytcTM,3504
|
|
38
|
+
digitalkin/mixins/filesystem_mixin.py,sha256=Q1sEY_dKZVi2Sa21fypwpsz9h7uQ7ggVqzpuVgheF_o,1510
|
|
39
|
+
digitalkin/mixins/logger_mixin.py,sha256=l-SK3qACIzRfyHgj7KhzvW3ZhmVa-W1JB9tmppgpqg4,1842
|
|
32
40
|
digitalkin/mixins/storage_mixin.py,sha256=ptZ4a2bydIa48q0V9e395vWHTu7yw4A6rI4jwKY6gwI,2392
|
|
33
41
|
digitalkin/models/__init__.py,sha256=hDHtUfswaNh8wo4NZaBItg9JqC0uNSRqXArNWSrGynY,163
|
|
42
|
+
digitalkin/models/core/__init__.py,sha256=jOMDmPX0uSfGA9zUi0u_kOvYJ46VdIssoIhVYvNSeew,19
|
|
43
|
+
digitalkin/models/core/job_manager_models.py,sha256=RCrW20HCTQ7l2D1JtNgEKefZpMzoN-uAXK8bPorIqqA,1120
|
|
44
|
+
digitalkin/models/core/task_monitor.py,sha256=JBMzqaKLrsxb0QZYM1BlvCxxkbqD_YKgsWob7bsmBeE,1626
|
|
45
|
+
digitalkin/models/grpc_servers/__init__.py,sha256=0tA71nPSXgRrh9DoLvx-TSwZXdYIRUEItoadpTL1cTo,42
|
|
46
|
+
digitalkin/models/grpc_servers/models.py,sha256=ZQ1Gk4zmLRX_ueuwFOwXgtyG9OEPSzFa_91I_CXZmZ0,8957
|
|
47
|
+
digitalkin/models/grpc_servers/types.py,sha256=rQ78s4nAet2jy-NIDj_PUWriT0kuGHr_w6ELjmjgBao,539
|
|
34
48
|
digitalkin/models/module/__init__.py,sha256=nFPHp0JcAZq9ISkcSu1y2zeNyXH3V4j10oMjHzMBYBU,599
|
|
35
49
|
digitalkin/models/module/module.py,sha256=k0W8vfJJFth8XdDzkHm32SyTuSf3h2qF0hSrxAfGF1s,956
|
|
36
|
-
digitalkin/models/module/module_context.py,sha256=
|
|
50
|
+
digitalkin/models/module/module_context.py,sha256=0sKIvLYt0KHR4oF0MUQ4RQZDBrPjmOSaIHNMcl7vUmI,4649
|
|
37
51
|
digitalkin/models/module/module_types.py,sha256=kkOst1OWeQVzLdf0P8JBlZqf2LLWj14-bQHyYvwUN8Y,3562
|
|
38
|
-
digitalkin/models/module/task_monitor.py,sha256=sEzpfmTg1cXC1ieD72YL3zwkSE6D5CIHWRi2CgK3GeQ,1288
|
|
39
52
|
digitalkin/models/services/__init__.py,sha256=jhfVw6egq0OcHmos_fypH9XFehbHTBw09wluVFVFEyw,226
|
|
40
|
-
digitalkin/models/services/cost.py,sha256=
|
|
41
|
-
digitalkin/models/services/storage.py,sha256=
|
|
53
|
+
digitalkin/models/services/cost.py,sha256=9PXvd5RrIk9vCrRjcUGQ9ZyAokEbwLg4s0RfnE-aLP4,1616
|
|
54
|
+
digitalkin/models/services/storage.py,sha256=wp7F-AvTsU46ujGPcguqM5kUKRZx4399D4EGAAJt2zs,1143
|
|
42
55
|
digitalkin/modules/__init__.py,sha256=VwVbKok81NGyPIBZgEj_SR-59G8tTlSb4eBJI9W6Vx4,281
|
|
43
|
-
digitalkin/modules/_base_module.py,sha256=
|
|
56
|
+
digitalkin/modules/_base_module.py,sha256=UDLPbsVqlRdvT1weJ_Skzgv7R16TOyfSWeddg5ZqxzI,16513
|
|
44
57
|
digitalkin/modules/archetype_module.py,sha256=lOe3yYufwfylZR_VGy1w-zqdqVaMI_JANfKkbH9eODE,471
|
|
45
58
|
digitalkin/modules/tool_module.py,sha256=rLJfdYMWddiUgPLBDGG_UcHnRCHEeaqX6Fdp4DOUaCs,472
|
|
46
59
|
digitalkin/modules/trigger_handler.py,sha256=qPNMi-8NHqscOxciHeaXtpwjXApT3YzjMF23zQAjaZY,1770
|
|
47
|
-
digitalkin/modules/job_manager/base_job_manager.py,sha256=iDv9caispLmM7mqPgG_g7oaACMvNW7i7MTzBeSlmNp0,6355
|
|
48
|
-
digitalkin/modules/job_manager/job_manager_models.py,sha256=onHy-DfInLZQveniMIWIKwTKSQjojz500JvHB54x93c,1129
|
|
49
|
-
digitalkin/modules/job_manager/single_job_manager.py,sha256=rJ6ppgXQkLu2X4NF2oicWf3rutYN4Qtfey3EM7ONfKM,11155
|
|
50
|
-
digitalkin/modules/job_manager/surrealdb_repository.py,sha256=qGDDEEV80vKVUe4r2yvTqTNfKrQoiZjeFok01rn_eaE,7798
|
|
51
|
-
digitalkin/modules/job_manager/task_manager.py,sha256=Z_luiGdHg6jnNSslf9Dl8m9w6PIBtgrOHZXfyikBVwY,14336
|
|
52
|
-
digitalkin/modules/job_manager/task_session.py,sha256=KpBoOH2ND7UQauRok7pGsNfybH-rQDIwvdtg07ZFz40,9573
|
|
53
|
-
digitalkin/modules/job_manager/taskiq_broker.py,sha256=4q3U03SNlb1ypup0VOa73KHLKJ9peuZUPCR5eFLMNAk,7498
|
|
54
|
-
digitalkin/modules/job_manager/taskiq_job_manager.py,sha256=NHSGsqqKCWQQqx0FqM3c4tf011vFlqX1npHkcv0kEOU,10249
|
|
55
60
|
digitalkin/services/__init__.py,sha256=LqGk_5DJy8Bzz62ajIq9jCeYNKQUIgtSCpafZk15FLc,910
|
|
56
61
|
digitalkin/services/base_strategy.py,sha256=yA9KUJGRKuuaxA6l3GcMv8zKfWoIsW03UxJT80Yea2I,766
|
|
57
62
|
digitalkin/services/services_config.py,sha256=JnyzZcG7OYBelwgn-wdVgY2n3yFTEkwLPHRZB8Tjw10,7468
|
|
@@ -62,11 +67,11 @@ digitalkin/services/agent/default_agent.py,sha256=4N_E_eQxJGOx1KVUUg5jNOje-3ncMx
|
|
|
62
67
|
digitalkin/services/cost/__init__.py,sha256=sD_a5LrnLluASOC5m5vgIqjaco-MzZJd6XhillIBHr0,400
|
|
63
68
|
digitalkin/services/cost/cost_strategy.py,sha256=MpPX33P_S5b2by6F4zT-rcyeRuh2V4NYPZe05VpDOGQ,2649
|
|
64
69
|
digitalkin/services/cost/default_cost.py,sha256=XE7kNFde8NmbulU9m1lc3mi-vHFkbaJf0XHUc0D4UHE,3945
|
|
65
|
-
digitalkin/services/cost/grpc_cost.py,sha256=
|
|
70
|
+
digitalkin/services/cost/grpc_cost.py,sha256=wX6lrIAl92ErVe_4xjBg2z7y9Aoziv8aLVA_J3PKEHE,6296
|
|
66
71
|
digitalkin/services/filesystem/__init__.py,sha256=BhwMl_BUvM0d65fmglkp0SVwn3RfYiUOKJgIMnOCaGM,381
|
|
67
72
|
digitalkin/services/filesystem/default_filesystem.py,sha256=WQbU-Bsi9r-28VqhKbrplce3otzjSKS-5iqKEpGWdQU,15117
|
|
68
73
|
digitalkin/services/filesystem/filesystem_strategy.py,sha256=zibVLvX_IBQ-kgh-KYzHdszDeiHFPEAZszu_k99x1GQ,9487
|
|
69
|
-
digitalkin/services/filesystem/grpc_filesystem.py,sha256
|
|
74
|
+
digitalkin/services/filesystem/grpc_filesystem.py,sha256=-gSA8Bmuea73DbBEG8x5b6-E0bQuT5WrK6xdSbOlH5M,12988
|
|
70
75
|
digitalkin/services/identity/__init__.py,sha256=InkeyLgFYYwItx8mePA8HpfacOMWZwwuc0G4pWtKq9s,270
|
|
71
76
|
digitalkin/services/identity/default_identity.py,sha256=Y2auZHrGSZTIN5D8HyjLvLcNbYFM1CNUE23x7p5VIGw,386
|
|
72
77
|
digitalkin/services/identity/identity_strategy.py,sha256=skappBbds1_qa0Gr24FGrNX1N0_OYhYT1Lh7dUaAirE,429
|
|
@@ -75,28 +80,28 @@ digitalkin/services/registry/default_registry.py,sha256=VnWkF6nHpFxUKuUbZLPqzXqd
|
|
|
75
80
|
digitalkin/services/registry/registry_strategy.py,sha256=uBXgZIv25jeXbeVO8vWvlNPxxNYu7_KiCw2PoE6AWr8,423
|
|
76
81
|
digitalkin/services/setup/__init__.py,sha256=t6xcvEWqTbcRZstBFK9cESEqaZKvpW14VtYygxIqfYQ,65
|
|
77
82
|
digitalkin/services/setup/default_setup.py,sha256=9VM3KwsuQcFQQ08RoOHWOE_-9BsRW0YGRtDWYTbQGdA,8246
|
|
78
|
-
digitalkin/services/setup/grpc_setup.py,sha256=
|
|
83
|
+
digitalkin/services/setup/grpc_setup.py,sha256=PSfZhzPxln6fxAvFo1dL8CJBBSERPezdKp9zmkU425g,12481
|
|
79
84
|
digitalkin/services/setup/setup_strategy.py,sha256=ZnJ_HwWCkHCPrqKekSD5L9y3p8wMwfjQ8sj2hLZq6go,4004
|
|
80
85
|
digitalkin/services/snapshot/__init__.py,sha256=Uzlnzo0CYlSpVsdiI37hW7xQk8hu3YA1fOI6O6MSzB0,270
|
|
81
86
|
digitalkin/services/snapshot/default_snapshot.py,sha256=Mb8QwWRsHh9I_tN0ln_ZiFa1QCZxOVWmuVLemQOTWpc,1058
|
|
82
87
|
digitalkin/services/snapshot/snapshot_strategy.py,sha256=B1TU3V_k9A-OdqBkdyc41-ihnrW5Btcwd1KyQdHT46A,898
|
|
83
88
|
digitalkin/services/storage/__init__.py,sha256=T-ocYLLphudkQgzvG47jBOm5GQsRFRIGA88y7Ur4akg,341
|
|
84
89
|
digitalkin/services/storage/default_storage.py,sha256=D8e-UYUkb2GvDEHMWcN3EkcIKXWA8DrsaQsXVjoXAYQ,7975
|
|
85
|
-
digitalkin/services/storage/grpc_storage.py,sha256=
|
|
90
|
+
digitalkin/services/storage/grpc_storage.py,sha256=ONilhj0-ySLqPUqWI-UfxRsSgu89zbyohcOXt5EcSdU,7205
|
|
86
91
|
digitalkin/services/storage/storage_strategy.py,sha256=sERF5tIJnzpb1iNqTXic9xRkGaXMifo6kb709ubB-Yo,8848
|
|
87
92
|
digitalkin/utils/__init__.py,sha256=sJnY-ZUgsjMfojAjONC1VN14mhgIDnzyOlGkw21rRnM,28
|
|
88
|
-
digitalkin/utils/arg_parser.py,sha256=
|
|
89
|
-
digitalkin/utils/development_mode_action.py,sha256=
|
|
93
|
+
digitalkin/utils/arg_parser.py,sha256=wzscRlE1Qp1gGl-lAJlkkwnbU1O2oezj6BwK_BZFBIk,3158
|
|
94
|
+
digitalkin/utils/development_mode_action.py,sha256=2hznh0ajW_4ZTysfoc0Y49161f_PQPATRgNk8NAn1_o,1623
|
|
90
95
|
digitalkin/utils/llm_ready_schema.py,sha256=JjMug_lrQllqFoanaC091VgOqwAd-_YzcpqFlS7p778,2375
|
|
91
|
-
digitalkin/utils/package_discover.py,sha256=
|
|
92
|
-
digitalkin-0.3.
|
|
96
|
+
digitalkin/utils/package_discover.py,sha256=sa6Zp5Kape1Zr4iYiNrnZxiHDnqM06ODk6yfWHom53w,13465
|
|
97
|
+
digitalkin-0.3.0rc1.dist-info/licenses/LICENSE,sha256=Ies4HFv2r2hzDRakJYxk3Y60uDFLiG-orIgeTpstnIo,20327
|
|
93
98
|
modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
94
99
|
modules/cpu_intensive_module.py,sha256=ejB9XPnFfA0uCuFUQbM3fy5UYfqqAlF36rv_P5Ri8ho,8363
|
|
95
100
|
modules/minimal_llm_module.py,sha256=Ijld__ZnhzfLwpXD1XVkLZ7jyKZKyOFZczOpiPttJZc,11216
|
|
96
101
|
modules/text_transform_module.py,sha256=bwPSnEUthZQyfLwcTLo52iAxItAoknkLh8Y3m5aywaY,7251
|
|
97
102
|
services/filesystem_module.py,sha256=71Mcja8jCQqiqFHPdsIXplFIHTvgkxRhp0TRXuCfgkk,7430
|
|
98
103
|
services/storage_module.py,sha256=ybTMqmvGaTrR8PqJ4FU0cwxaDjT36TskVrGoetTGmno,6955
|
|
99
|
-
digitalkin-0.3.
|
|
100
|
-
digitalkin-0.3.
|
|
101
|
-
digitalkin-0.3.
|
|
102
|
-
digitalkin-0.3.
|
|
104
|
+
digitalkin-0.3.0rc1.dist-info/METADATA,sha256=dpzbrevBvxDMjGm2fHdKxEI5V3y2WVzV-mpIwpqGA8g,30651
|
|
105
|
+
digitalkin-0.3.0rc1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
106
|
+
digitalkin-0.3.0rc1.dist-info/top_level.txt,sha256=gcjqlyrZuLjIyxrOIavCQM_olpr6ND5kPKkZd2j0xGo,40
|
|
107
|
+
digitalkin-0.3.0rc1.dist-info/RECORD,,
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
"""Factory functions for creating gRPC servers."""
|
|
2
|
-
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
from typing import Any
|
|
5
|
-
|
|
6
|
-
from digitalkin.grpc_servers.module_server import ModuleServer
|
|
7
|
-
from digitalkin.grpc_servers.registry_server import RegistryServer
|
|
8
|
-
from digitalkin.grpc_servers.utils.models import (
|
|
9
|
-
ModuleServerConfig,
|
|
10
|
-
RegistryServerConfig,
|
|
11
|
-
SecurityMode,
|
|
12
|
-
ServerCredentials,
|
|
13
|
-
ServerMode,
|
|
14
|
-
)
|
|
15
|
-
from digitalkin.modules._base_module import BaseModule
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def create_module_server(
|
|
19
|
-
module: type[BaseModule],
|
|
20
|
-
host: str = "0.0.0.0", # noqa: S104
|
|
21
|
-
port: int = 50051,
|
|
22
|
-
max_workers: int = 10,
|
|
23
|
-
mode: str = "sync",
|
|
24
|
-
security: str = "insecure",
|
|
25
|
-
registry_address: str | None = None,
|
|
26
|
-
server_key_path: str | None = None,
|
|
27
|
-
server_cert_path: str | None = None,
|
|
28
|
-
root_cert_path: str | None = None,
|
|
29
|
-
server_options: list[tuple[str, Any]] | None = None,
|
|
30
|
-
) -> ModuleServer:
|
|
31
|
-
"""Create a new module server.
|
|
32
|
-
|
|
33
|
-
Args:
|
|
34
|
-
module: The module to serve.
|
|
35
|
-
host: The host address to bind to.
|
|
36
|
-
port: The port to listen on.
|
|
37
|
-
max_workers: Maximum number of workers for the thread pool (sync mode only).
|
|
38
|
-
mode: Server mode ("sync" or "async").
|
|
39
|
-
security: Security mode ("secure" or "insecure").
|
|
40
|
-
registry_address: Optional address of a registry server for auto-registration.
|
|
41
|
-
server_key_path: Path to server private key (required for secure mode).
|
|
42
|
-
server_cert_path: Path to server certificate (required for secure mode).
|
|
43
|
-
root_cert_path: Optional path to root certificate.
|
|
44
|
-
server_options: Additional server options.
|
|
45
|
-
|
|
46
|
-
Returns:
|
|
47
|
-
A configured ModuleServer instance.
|
|
48
|
-
|
|
49
|
-
Raises:
|
|
50
|
-
ValueError: If secure mode is requested but credentials are missing.
|
|
51
|
-
"""
|
|
52
|
-
# Create configuration with credentials if needed
|
|
53
|
-
config = _create_server_config(
|
|
54
|
-
ModuleServerConfig,
|
|
55
|
-
host=host,
|
|
56
|
-
port=port,
|
|
57
|
-
max_workers=max_workers,
|
|
58
|
-
mode=mode,
|
|
59
|
-
security=security,
|
|
60
|
-
server_key_path=server_key_path,
|
|
61
|
-
server_cert_path=server_cert_path,
|
|
62
|
-
root_cert_path=root_cert_path,
|
|
63
|
-
server_options=server_options,
|
|
64
|
-
registry_address=registry_address,
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
# Create and return the server
|
|
68
|
-
return ModuleServer(module, config)
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def create_registry_server(
|
|
72
|
-
host: str = "0.0.0.0", # noqa: S104
|
|
73
|
-
port: int = 50052,
|
|
74
|
-
max_workers: int = 10,
|
|
75
|
-
mode: str = "sync",
|
|
76
|
-
security: str = "insecure",
|
|
77
|
-
database_url: str | None = None,
|
|
78
|
-
server_key_path: str | None = None,
|
|
79
|
-
server_cert_path: str | None = None,
|
|
80
|
-
root_cert_path: str | None = None,
|
|
81
|
-
server_options: list[tuple[str, Any]] | None = None,
|
|
82
|
-
) -> RegistryServer:
|
|
83
|
-
"""Create a new registry server.
|
|
84
|
-
|
|
85
|
-
Args:
|
|
86
|
-
host: The host address to bind to.
|
|
87
|
-
port: The port to listen on.
|
|
88
|
-
max_workers: Maximum number of workers for the thread pool (sync mode only).
|
|
89
|
-
mode: Server mode ("sync" or "async").
|
|
90
|
-
security: Security mode ("secure" or "insecure").
|
|
91
|
-
database_url: Optional database URL for registry data storage.
|
|
92
|
-
server_key_path: Path to server private key (required for secure mode).
|
|
93
|
-
server_cert_path: Path to server certificate (required for secure mode).
|
|
94
|
-
root_cert_path: Optional path to root certificate.
|
|
95
|
-
server_options: Additional server options.
|
|
96
|
-
|
|
97
|
-
Returns:
|
|
98
|
-
A configured RegistryServer instance.
|
|
99
|
-
|
|
100
|
-
Raises:
|
|
101
|
-
ValueError: If secure mode is requested but credentials are missing.
|
|
102
|
-
"""
|
|
103
|
-
# Create configuration with credentials if needed
|
|
104
|
-
config = _create_server_config(
|
|
105
|
-
RegistryServerConfig,
|
|
106
|
-
host=host,
|
|
107
|
-
port=port,
|
|
108
|
-
max_workers=max_workers,
|
|
109
|
-
mode=mode,
|
|
110
|
-
security=security,
|
|
111
|
-
server_key_path=server_key_path,
|
|
112
|
-
server_cert_path=server_cert_path,
|
|
113
|
-
root_cert_path=root_cert_path,
|
|
114
|
-
server_options=server_options,
|
|
115
|
-
database_url=database_url,
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
# Create and return the server
|
|
119
|
-
return RegistryServer(config)
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
def _create_server_config(
|
|
123
|
-
config_class: Any,
|
|
124
|
-
host: str,
|
|
125
|
-
port: int,
|
|
126
|
-
max_workers: int,
|
|
127
|
-
mode: str,
|
|
128
|
-
security: str,
|
|
129
|
-
server_key_path: str | None,
|
|
130
|
-
server_cert_path: str | None,
|
|
131
|
-
root_cert_path: str | None,
|
|
132
|
-
server_options: list[tuple[str, Any]] | None,
|
|
133
|
-
**kwargs,
|
|
134
|
-
) -> ModuleServerConfig | RegistryServerConfig:
|
|
135
|
-
"""Create a server configuration with appropriate settings.
|
|
136
|
-
|
|
137
|
-
Args:
|
|
138
|
-
config_class: The configuration class to instantiate.
|
|
139
|
-
host: The host address.
|
|
140
|
-
port: The port number.
|
|
141
|
-
max_workers: Maximum number of workers.
|
|
142
|
-
mode: Server mode.
|
|
143
|
-
security: Security mode.
|
|
144
|
-
server_key_path: Path to server key.
|
|
145
|
-
server_cert_path: Path to server certificate.
|
|
146
|
-
root_cert_path: Path to root certificate.
|
|
147
|
-
server_options: Additional server options.
|
|
148
|
-
**kwargs: Additional configuration parameters.
|
|
149
|
-
|
|
150
|
-
Returns:
|
|
151
|
-
A server configuration instance.
|
|
152
|
-
|
|
153
|
-
Raises:
|
|
154
|
-
ValueError: If secure mode is requested but credentials are missing.
|
|
155
|
-
"""
|
|
156
|
-
# Create basic config
|
|
157
|
-
config_params = {
|
|
158
|
-
"host": host,
|
|
159
|
-
"port": port,
|
|
160
|
-
"max_workers": max_workers,
|
|
161
|
-
"mode": ServerMode(mode),
|
|
162
|
-
"security": SecurityMode(security),
|
|
163
|
-
"server_options": server_options or [],
|
|
164
|
-
**kwargs,
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
# Add credentials if secure mode
|
|
168
|
-
if security == "secure":
|
|
169
|
-
if not server_key_path or not server_cert_path:
|
|
170
|
-
raise ValueError(
|
|
171
|
-
"Server key and certificate paths are required for secure mode"
|
|
172
|
-
)
|
|
173
|
-
|
|
174
|
-
config_params["credentials"] = ServerCredentials(
|
|
175
|
-
server_key_path=Path(server_key_path),
|
|
176
|
-
server_cert_path=Path(server_cert_path),
|
|
177
|
-
root_cert_path=Path(root_cert_path) if root_cert_path else None,
|
|
178
|
-
)
|
|
179
|
-
|
|
180
|
-
return config_class(**config_params)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|