digitalkin 0.3.0rc1__py3-none-any.whl → 0.3.0rc2__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 CHANGED
@@ -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.3.0-rc1"
8
+ __version__ = "0.3.0-rc2"
@@ -26,7 +26,7 @@ class TaskManager:
26
26
  max_concurrent_tasks: int
27
27
  _shutdown_event: asyncio.Event
28
28
 
29
- def __init__(self, default_timeout: float = 10.0, max_concurrent_tasks: int = 100) -> None:
29
+ def __init__(self, default_timeout: float = 10.0, max_concurrent_tasks: int = 1000) -> None:
30
30
  """Defining task manager properties."""
31
31
  self.tasks = {}
32
32
  self.tasks_sessions = {}
@@ -67,6 +67,8 @@ class TaskManager:
67
67
  if task_id in self.tasks_sessions:
68
68
  await self.tasks_sessions[task_id].db.close()
69
69
  # Remove from collections
70
+ self.tasks.pop(task_id, None)
71
+ self.tasks_sessions.pop(task_id, None)
70
72
 
71
73
  async def _task_wrapper( # noqa: C901, PLR0915
72
74
  self,
@@ -356,10 +358,11 @@ class TaskManager:
356
358
  return False
357
359
 
358
360
  await self.tasks_sessions[task_id].module.stop()
359
- await self.cancel_task(mission_id, task_id)
361
+ await self.cancel_task(task_id, mission_id)
360
362
 
361
363
  logger.info("Cleaning up session for task: '%s'", task_id, extra={"mission_id": mission_id, "task_id": task_id})
362
364
  self.tasks_sessions.pop(task_id, None)
365
+ self.tasks.pop(task_id, None)
363
366
  return True
364
367
 
365
368
  async def pause_task(self, task_id: str, mission_id: str) -> bool:
@@ -42,13 +42,23 @@ class TaskSession:
42
42
  db: SurrealDBConnection,
43
43
  module: BaseModule,
44
44
  heartbeat_interval: datetime.timedelta = datetime.timedelta(seconds=2),
45
+ queue_maxsize: int = 1000,
45
46
  ) -> None:
46
- """Initialize Task Session."""
47
+ """Initialize Task Session.
48
+
49
+ Args:
50
+ task_id: Unique task identifier
51
+ mission_id: Mission identifier
52
+ db: SurrealDB connection
53
+ module: Module instance
54
+ heartbeat_interval: Interval between heartbeats
55
+ queue_maxsize: Maximum size for the queue (0 = unlimited)
56
+ """
47
57
  self.db = db
48
58
  self.module = module
49
59
 
50
60
  self.status = TaskStatus.PENDING
51
- self.queue: asyncio.Queue = asyncio.Queue()
61
+ self.queue: asyncio.Queue = asyncio.Queue(maxsize=queue_maxsize)
52
62
 
53
63
  self.task_id = task_id
54
64
  self.mission_id = mission_id
@@ -175,8 +175,8 @@ class ClientConfig(ChannelConfig):
175
175
  credentials: ClientCredentials | None = Field(None, description="Client credentials for secure mode")
176
176
  channel_options: list[tuple[str, Any]] = Field(
177
177
  default_factory=lambda: [
178
- ("grpc.max_receive_message_length", 50 * 1024 * 1024), # 50MB
179
- ("grpc.max_send_message_length", 50 * 1024 * 1024), # 50MB
178
+ ("grpc.max_receive_message_length", 100 * 1024 * 1024), # 100MB
179
+ ("grpc.max_send_message_length", 100 * 1024 * 1024), # 100MB
180
180
  ],
181
181
  description="Additional channel options",
182
182
  )
@@ -223,8 +223,8 @@ class ServerConfig(ChannelConfig):
223
223
  credentials: ServerCredentials | None = Field(None, description="Server credentials for secure mode")
224
224
  server_options: list[tuple[str, Any]] = Field(
225
225
  default_factory=lambda: [
226
- ("grpc.max_receive_message_length", 50 * 1024 * 1024), # 50MB
227
- ("grpc.max_send_message_length", 50 * 1024 * 1024), # 50MB
226
+ ("grpc.max_receive_message_length", 100 * 1024 * 1024), # 100MB
227
+ ("grpc.max_send_message_length", 100 * 1024 * 1024), # 100MB
228
228
  ],
229
229
  description="Additional server options",
230
230
  )
@@ -24,7 +24,11 @@ class DataTrigger(BaseModel):
24
24
  """
25
25
 
26
26
  protocol: ClassVar[str]
27
- created_at: str = datetime.now(tz=timezone.utc).isoformat()
27
+ created_at: str = Field(
28
+ default_factory=lambda: datetime.now(tz=timezone.utc).isoformat(),
29
+ title="Created At",
30
+ description="Timestamp when the payload was created.",
31
+ )
28
32
 
29
33
 
30
34
  DataTriggerT = TypeVar("DataTriggerT", bound=DataTrigger)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: digitalkin
3
- Version: 0.3.0rc1
3
+ Version: 0.3.0rc2
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
@@ -456,33 +456,13 @@ Requires-Dist: digitalkin-proto>=0.1.16
456
456
  Requires-Dist: grpcio-health-checking>=1.71.0
457
457
  Requires-Dist: grpcio-reflection>=1.71.0
458
458
  Requires-Dist: grpcio-status>=1.71.0
459
- Requires-Dist: pydantic>=2.12.1
459
+ Requires-Dist: pydantic>=2.12.3
460
460
  Requires-Dist: surrealdb>=1.0.6
461
461
  Provides-Extra: taskiq
462
- Requires-Dist: rstream>=0.31.0; extra == "taskiq"
463
- Requires-Dist: taskiq-aio-pika>=0.4.3; extra == "taskiq"
462
+ Requires-Dist: rstream>=0.40.0; extra == "taskiq"
463
+ Requires-Dist: taskiq-aio-pika>=0.4.4; extra == "taskiq"
464
464
  Requires-Dist: taskiq-redis>=1.1.2; extra == "taskiq"
465
- Requires-Dist: taskiq[reload]>=0.11.18; extra == "taskiq"
466
- Provides-Extra: dev
467
- Requires-Dist: typos>=1.38.0; extra == "dev"
468
- Requires-Dist: ruff>=0.14.1; extra == "dev"
469
- Requires-Dist: mypy>=1.18.2; extra == "dev"
470
- Requires-Dist: pyright>=1.1.406; extra == "dev"
471
- Requires-Dist: pre-commit>=4.3.0; extra == "dev"
472
- Requires-Dist: bump-my-version>=1.2.4; extra == "dev"
473
- Requires-Dist: build>=1.3.0; extra == "dev"
474
- Requires-Dist: twine>=6.2.0; extra == "dev"
475
- Requires-Dist: cryptography>=46.0.2; extra == "dev"
476
- Provides-Extra: tests
477
- Requires-Dist: freezegun>=1.5.3; extra == "tests"
478
- Requires-Dist: hdrhistogram>=0.10.3; extra == "tests"
479
- Requires-Dist: grpcio-testing>=1.71.0; extra == "tests"
480
- Requires-Dist: psutil>=7.0.0; extra == "tests"
481
- Requires-Dist: pytest>=8.4.2; extra == "tests"
482
- Requires-Dist: pytest-asyncio>=1.2.0; extra == "tests"
483
- Requires-Dist: pytest-cov>=7.0.0; extra == "tests"
484
- Requires-Dist: pytest-html==4.1.1; extra == "tests"
485
- Requires-Dist: pytest-json-report==1.5.0; extra == "tests"
465
+ Requires-Dist: taskiq[reload]>=0.11.19; extra == "taskiq"
486
466
  Dynamic: license-file
487
467
 
488
468
  # DigitalKin Python SDK
@@ -7,7 +7,7 @@ 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=R-V9kMfZiYqI-Y5MJxvvyFY9miiXM4kkiJl2gmUyr1E,194
10
+ digitalkin/__version__.py,sha256=E2yVreleU06EKzkLQ9EZXBVcevjDkGR22lHHo58xfD4,194
11
11
  digitalkin/logger.py,sha256=8ze_tjt2G6mDTuQcsf7-UTXWP3UHZ7LZVSs_iqF4rX4,4685
12
12
  digitalkin/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  digitalkin/core/__init__.py,sha256=FJRcJ-B1Viyn-38L8XpOpZ8KOnf1I7PCDOAmKXLQhqc,71
@@ -18,8 +18,8 @@ digitalkin/core/job_manager/taskiq_broker.py,sha256=qnN45i688z81WnEbpeoaiT9R60ud
18
18
  digitalkin/core/job_manager/taskiq_job_manager.py,sha256=UsqBsSYm88ibgRabSVPzK-9o2iXtGPsRlUO58M_PqVA,10147
19
19
  digitalkin/core/task_manager/__init__.py,sha256=k9i-qIoee_1yXogyQolaVFDUQBIZU3ENbYKtjrCNmTQ,31
20
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
21
+ digitalkin/core/task_manager/task_manager.py,sha256=IAlMLpIEyt-6kUN4RYyWRsMEVOJs1ZxjU5uhNdwqN-4,16502
22
+ digitalkin/core/task_manager/task_session.py,sha256=glilSXbjMvP819QTUUQ7ElVsUCUdjRCNXLv5yXzhrYY,10895
23
23
  digitalkin/grpc_servers/__init__.py,sha256=ZIRMJ1Lcas8yQ106GCup6hn2UBOsx1sNk8ap0lpEDnY,72
24
24
  digitalkin/grpc_servers/_base_server.py,sha256=ZVeCDwI7w7fFbPTXPkeJb_SOuLfd2T7za3T4oCu2UWY,18680
25
25
  digitalkin/grpc_servers/module_server.py,sha256=kXvPOfJ9LT9oRd5oPj-ZpYB9EYY_4RDlRpcyGzWkilc,10213
@@ -43,12 +43,12 @@ digitalkin/models/core/__init__.py,sha256=jOMDmPX0uSfGA9zUi0u_kOvYJ46VdIssoIhVYv
43
43
  digitalkin/models/core/job_manager_models.py,sha256=RCrW20HCTQ7l2D1JtNgEKefZpMzoN-uAXK8bPorIqqA,1120
44
44
  digitalkin/models/core/task_monitor.py,sha256=JBMzqaKLrsxb0QZYM1BlvCxxkbqD_YKgsWob7bsmBeE,1626
45
45
  digitalkin/models/grpc_servers/__init__.py,sha256=0tA71nPSXgRrh9DoLvx-TSwZXdYIRUEItoadpTL1cTo,42
46
- digitalkin/models/grpc_servers/models.py,sha256=ZQ1Gk4zmLRX_ueuwFOwXgtyG9OEPSzFa_91I_CXZmZ0,8957
46
+ digitalkin/models/grpc_servers/models.py,sha256=unV1Wo0u3Efm7ddgYyYZZYUC_W6F0S5BQYH3xsOmXjw,8965
47
47
  digitalkin/models/grpc_servers/types.py,sha256=rQ78s4nAet2jy-NIDj_PUWriT0kuGHr_w6ELjmjgBao,539
48
48
  digitalkin/models/module/__init__.py,sha256=nFPHp0JcAZq9ISkcSu1y2zeNyXH3V4j10oMjHzMBYBU,599
49
49
  digitalkin/models/module/module.py,sha256=k0W8vfJJFth8XdDzkHm32SyTuSf3h2qF0hSrxAfGF1s,956
50
50
  digitalkin/models/module/module_context.py,sha256=0sKIvLYt0KHR4oF0MUQ4RQZDBrPjmOSaIHNMcl7vUmI,4649
51
- digitalkin/models/module/module_types.py,sha256=kkOst1OWeQVzLdf0P8JBlZqf2LLWj14-bQHyYvwUN8Y,3562
51
+ digitalkin/models/module/module_types.py,sha256=FPoF5PenhfFr6gCDF7ZyyJQDkt9JZAfpiHlE8HErIuM,3699
52
52
  digitalkin/models/services/__init__.py,sha256=jhfVw6egq0OcHmos_fypH9XFehbHTBw09wluVFVFEyw,226
53
53
  digitalkin/models/services/cost.py,sha256=9PXvd5RrIk9vCrRjcUGQ9ZyAokEbwLg4s0RfnE-aLP4,1616
54
54
  digitalkin/models/services/storage.py,sha256=wp7F-AvTsU46ujGPcguqM5kUKRZx4399D4EGAAJt2zs,1143
@@ -94,14 +94,14 @@ digitalkin/utils/arg_parser.py,sha256=wzscRlE1Qp1gGl-lAJlkkwnbU1O2oezj6BwK_BZFBI
94
94
  digitalkin/utils/development_mode_action.py,sha256=2hznh0ajW_4ZTysfoc0Y49161f_PQPATRgNk8NAn1_o,1623
95
95
  digitalkin/utils/llm_ready_schema.py,sha256=JjMug_lrQllqFoanaC091VgOqwAd-_YzcpqFlS7p778,2375
96
96
  digitalkin/utils/package_discover.py,sha256=sa6Zp5Kape1Zr4iYiNrnZxiHDnqM06ODk6yfWHom53w,13465
97
- digitalkin-0.3.0rc1.dist-info/licenses/LICENSE,sha256=Ies4HFv2r2hzDRakJYxk3Y60uDFLiG-orIgeTpstnIo,20327
97
+ digitalkin-0.3.0rc2.dist-info/licenses/LICENSE,sha256=Ies4HFv2r2hzDRakJYxk3Y60uDFLiG-orIgeTpstnIo,20327
98
98
  modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
99
  modules/cpu_intensive_module.py,sha256=ejB9XPnFfA0uCuFUQbM3fy5UYfqqAlF36rv_P5Ri8ho,8363
100
100
  modules/minimal_llm_module.py,sha256=Ijld__ZnhzfLwpXD1XVkLZ7jyKZKyOFZczOpiPttJZc,11216
101
101
  modules/text_transform_module.py,sha256=bwPSnEUthZQyfLwcTLo52iAxItAoknkLh8Y3m5aywaY,7251
102
102
  services/filesystem_module.py,sha256=71Mcja8jCQqiqFHPdsIXplFIHTvgkxRhp0TRXuCfgkk,7430
103
103
  services/storage_module.py,sha256=ybTMqmvGaTrR8PqJ4FU0cwxaDjT36TskVrGoetTGmno,6955
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,,
104
+ digitalkin-0.3.0rc2.dist-info/METADATA,sha256=sFMbURd1YqkoDo3yYYpkJOOflqFAGrRoTOWOJwUC4OM,29714
105
+ digitalkin-0.3.0rc2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
106
+ digitalkin-0.3.0rc2.dist-info/top_level.txt,sha256=gcjqlyrZuLjIyxrOIavCQM_olpr6ND5kPKkZd2j0xGo,40
107
+ digitalkin-0.3.0rc2.dist-info/RECORD,,