digitalkin 0.2.25rc0__tar.gz → 0.2.26__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.25rc0 → digitalkin-0.2.26}/PKG-INFO +1 -1
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/pyproject.toml +1 -1
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/__version__.py +1 -1
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/_base_server.py +1 -1
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/module_server.py +2 -1
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/module_servicer.py +5 -4
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py +3 -3
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/logger.py +69 -24
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/models/module/module_types.py +1 -1
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/_base_module.py +58 -6
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin.egg-info/PKG-INFO +1 -1
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/LICENSE +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/README.md +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/base_server/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/base_server/mock/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/base_server/mock/mock_pb2.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/base_server/mock/mock_pb2_grpc.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/base_server/server_async_insecure.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/base_server/server_async_secure.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/base_server/server_sync_insecure.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/base_server/server_sync_secure.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/modules/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/modules/cpu_intensive_module.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/modules/minimal_llm_module.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/modules/text_transform_module.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/services/filesystem_module.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/examples/services/storage_module.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/setup.cfg +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/registry_server.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/registry_servicer.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/utils/exceptions.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/utils/factory.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/utils/models.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/utils/types.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/models/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/models/module/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/models/module/module.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/models/module/module_context.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/models/services/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/models/services/cost.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/models/services/storage.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/archetype_module.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/base_job_manager.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/job_manager_models.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/single_job_manager.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/taskiq_broker.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/taskiq_job_manager.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/tool_module.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/trigger_handler.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/py.typed +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/agent/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/agent/agent_strategy.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/agent/default_agent.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/base_strategy.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/cost/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/cost/cost_strategy.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/cost/default_cost.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/cost/grpc_cost.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/filesystem/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/filesystem/default_filesystem.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/filesystem/filesystem_strategy.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/filesystem/grpc_filesystem.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/identity/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/identity/default_identity.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/identity/identity_strategy.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/registry/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/registry/default_registry.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/registry/registry_strategy.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/services_config.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/services_models.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/setup/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/setup/default_setup.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/setup/grpc_setup.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/setup/setup_strategy.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/snapshot/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/snapshot/default_snapshot.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/snapshot/snapshot_strategy.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/storage/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/storage/default_storage.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/storage/grpc_storage.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/storage/storage_strategy.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/utils/__init__.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/utils/arg_parser.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/utils/development_mode_action.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/utils/llm_ready_schema.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/utils/package_discover.py +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin.egg-info/SOURCES.txt +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin.egg-info/dependency_links.txt +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin.egg-info/requires.txt +0 -0
- {digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin.egg-info/top_level.txt +0 -0
|
@@ -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.26"
|
|
16
16
|
|
|
17
17
|
classifiers = [
|
|
18
18
|
"Development Status :: 3 - Alpha",
|
|
@@ -299,7 +299,7 @@ class BaseServer(abc.ABC):
|
|
|
299
299
|
self._add_reflection()
|
|
300
300
|
|
|
301
301
|
# Start the server
|
|
302
|
-
logger.debug("Starting gRPC server on %s", self.config.address)
|
|
302
|
+
logger.debug("Starting gRPC server on %s", self.config.address, extra={"config": self.config})
|
|
303
303
|
try:
|
|
304
304
|
if self.config.mode == ServerMode.ASYNC:
|
|
305
305
|
# For async server, use the event loop
|
|
@@ -133,7 +133,7 @@ class ModuleServer(BaseServer):
|
|
|
133
133
|
"""
|
|
134
134
|
logger.debug(
|
|
135
135
|
"Registering module with registry at %s",
|
|
136
|
-
self.server_config.registry_address,
|
|
136
|
+
self.server_config.registry_address, extra={"server_config": self.server_config}
|
|
137
137
|
)
|
|
138
138
|
|
|
139
139
|
# Create appropriate channel based on security mode
|
|
@@ -173,6 +173,7 @@ class ModuleServer(BaseServer):
|
|
|
173
173
|
"Request sent to registry for module: %s:%s",
|
|
174
174
|
self.module_class.metadata["name"],
|
|
175
175
|
self.module_class.metadata["module_id"],
|
|
176
|
+
extra={"module_info": self.module_class.metadata}
|
|
176
177
|
)
|
|
177
178
|
response = stub.RegisterModule(request)
|
|
178
179
|
|
|
@@ -76,9 +76,9 @@ class ModuleServicer(module_service_pb2_grpc.ModuleServiceServicer, ArgParser):
|
|
|
76
76
|
self.job_manager = job_manager_class(module_class, self.args.services_mode)
|
|
77
77
|
|
|
78
78
|
logger.debug(
|
|
79
|
-
"ModuleServicer initialized with job manager: %s
|
|
79
|
+
"ModuleServicer initialized with job manager: %s",
|
|
80
80
|
self.args.job_manager_mode,
|
|
81
|
-
self.job_manager,
|
|
81
|
+
extra={"job_manager": self.job_manager},
|
|
82
82
|
)
|
|
83
83
|
self.setup = GrpcSetup() if self.args.services_mode == ServicesMode.REMOTE else DefaultSetup()
|
|
84
84
|
|
|
@@ -204,13 +204,14 @@ class ModuleServicer(module_service_pb2_grpc.ModuleServiceServicer, ArgParser):
|
|
|
204
204
|
async with self.job_manager.generate_stream_consumer(job_id) as stream: # type: ignore
|
|
205
205
|
async for message in stream:
|
|
206
206
|
if message.get("error", None) is not None:
|
|
207
|
+
logger.error("Error in output_data", extra={"message": message})
|
|
207
208
|
context.set_code(message["error"]["code"])
|
|
208
209
|
context.set_details(message["error"]["error_message"])
|
|
209
210
|
yield lifecycle_pb2.StartModuleResponse(success=False, job_id=job_id)
|
|
210
211
|
break
|
|
211
212
|
|
|
212
213
|
if message.get("exception", None) is not None:
|
|
213
|
-
logger.error("
|
|
214
|
+
logger.error("Exception in output_data", extra={"message": message})
|
|
214
215
|
context.set_code(message["short_description"])
|
|
215
216
|
context.set_details(message["exception"])
|
|
216
217
|
yield lifecycle_pb2.StartModuleResponse(success=False, job_id=job_id)
|
|
@@ -248,7 +249,7 @@ class ModuleServicer(module_service_pb2_grpc.ModuleServiceServicer, ArgParser):
|
|
|
248
249
|
context.set_details(message)
|
|
249
250
|
return lifecycle_pb2.StopModuleResponse(success=False)
|
|
250
251
|
|
|
251
|
-
logger.debug("Job %s stopped successfully", request.job_id)
|
|
252
|
+
logger.debug("Job %s stopped successfully", request.job_id, extra={"job_id": request.job_id})
|
|
252
253
|
return lifecycle_pb2.StopModuleResponse(success=True)
|
|
253
254
|
|
|
254
255
|
async def GetModuleStatus( # noqa: N802
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/grpc_servers/utils/grpc_client_wrapper.py
RENAMED
|
@@ -62,11 +62,11 @@ class GrpcClientWrapper:
|
|
|
62
62
|
"""
|
|
63
63
|
try:
|
|
64
64
|
# Call the register method
|
|
65
|
-
logger.debug("send request to %s", query_endpoint)
|
|
65
|
+
logger.debug("send request to %s", query_endpoint, extra={"request": request})
|
|
66
66
|
response = getattr(self.stub, query_endpoint)(request)
|
|
67
|
-
logger.debug("receive response from request to
|
|
67
|
+
logger.debug("receive response from request to %s", query_endpoint, extra={"response": response})
|
|
68
68
|
except grpc.RpcError as e:
|
|
69
|
-
logger.exception("RPC error during %s
|
|
69
|
+
logger.exception("RPC error during %s", query_endpoint, extra={"error": e.details()})
|
|
70
70
|
raise ServerError
|
|
71
71
|
else:
|
|
72
72
|
return response
|
|
@@ -50,10 +50,16 @@ class ColorJSONFormatter(logging.Formatter):
|
|
|
50
50
|
"level": record.levelname.lower(),
|
|
51
51
|
"logger": record.name,
|
|
52
52
|
"message": record.getMessage(),
|
|
53
|
+
"module": record.module,
|
|
53
54
|
"location": f"{record.filename}:{record.lineno}",
|
|
54
55
|
"function": record.funcName,
|
|
56
|
+
"pathname": record.pathname,
|
|
57
|
+
"process": record.process,
|
|
58
|
+
"processName": record.processName,
|
|
59
|
+
"relativeCreated": record.relativeCreated,
|
|
60
|
+
"thread": record.thread,
|
|
61
|
+
"threadName": record.threadName,
|
|
55
62
|
}
|
|
56
|
-
|
|
57
63
|
# Add exception info if present
|
|
58
64
|
if record.exc_info:
|
|
59
65
|
log_obj["exception"] = self.formatException(record.exc_info)
|
|
@@ -91,30 +97,69 @@ class ColorJSONFormatter(logging.Formatter):
|
|
|
91
97
|
# Pretty print with color
|
|
92
98
|
color = self.COLORS.get(record.levelno, self.grey)
|
|
93
99
|
if self.is_production:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
100
|
+
log_obj["message"] = f"{color}{log_obj.get('message', '')}{self.reset}"
|
|
101
|
+
return json.dumps(log_obj, default=str, separators=(",", ":"))
|
|
102
|
+
json_str = json.dumps(log_obj, indent=2, default=str)
|
|
103
|
+
json_str = json_str.replace("\\n", "\n")
|
|
98
104
|
return f"{color}{json_str}{self.reset}"
|
|
99
105
|
|
|
100
106
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
107
|
+
def setup_logger(
|
|
108
|
+
name: str,
|
|
109
|
+
level: int = logging.INFO,
|
|
110
|
+
additional_loggers: dict[str, int] | None = None,
|
|
111
|
+
*,
|
|
112
|
+
is_production: bool | None = None,
|
|
113
|
+
configure_root: bool = True,
|
|
114
|
+
) -> logging.Logger:
|
|
115
|
+
"""Set up a logger with the ColorJSONFormatter.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
name: Name of the logger to create
|
|
119
|
+
level: Logging level (default: logging.INFO)
|
|
120
|
+
is_production: Whether running in production. If None, checks RAILWAY_SERVICE_NAME env var
|
|
121
|
+
configure_root: Whether to configure root logger (default: True)
|
|
122
|
+
additional_loggers: Dict of additional logger names and their levels to configure
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
logging.Logger: Configured logger instance
|
|
126
|
+
"""
|
|
127
|
+
# Determine if we're in production
|
|
128
|
+
if is_production is None:
|
|
129
|
+
is_production = os.getenv("RAILWAY_SERVICE_NAME") is not None
|
|
130
|
+
|
|
131
|
+
# Configure root logger if requested
|
|
132
|
+
if configure_root:
|
|
133
|
+
logging.basicConfig(
|
|
134
|
+
level=logging.DEBUG,
|
|
135
|
+
stream=sys.stdout,
|
|
136
|
+
datefmt="%Y-%m-%d %H:%M:%S",
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
# Configure additional loggers
|
|
140
|
+
if additional_loggers:
|
|
141
|
+
for logger_name, logger_level in additional_loggers.items():
|
|
142
|
+
logging.getLogger(logger_name).setLevel(logger_level)
|
|
143
|
+
|
|
144
|
+
# Create and configure the main logger
|
|
145
|
+
logger = logging.getLogger(name)
|
|
146
|
+
logger.setLevel(level)
|
|
147
|
+
# Only add handler if not already configured
|
|
148
|
+
if not logger.handlers:
|
|
149
|
+
ch = logging.StreamHandler()
|
|
150
|
+
ch.setLevel(level)
|
|
151
|
+
ch.setFormatter(ColorJSONFormatter(is_production=is_production))
|
|
152
|
+
logger.addHandler(ch)
|
|
153
|
+
logger.propagate = False
|
|
154
|
+
|
|
155
|
+
return logger
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
logger = setup_logger(
|
|
159
|
+
"digitalkin",
|
|
160
|
+
level=logging.INFO,
|
|
161
|
+
additional_loggers={
|
|
162
|
+
"grpc": logging.DEBUG,
|
|
163
|
+
"asyncio": logging.DEBUG,
|
|
164
|
+
},
|
|
105
165
|
)
|
|
106
|
-
|
|
107
|
-
logging.getLogger("grpc").setLevel(logging.DEBUG)
|
|
108
|
-
logging.getLogger("asyncio").setLevel(logging.DEBUG)
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
logger = logging.getLogger("digitalkin")
|
|
112
|
-
is_production = os.getenv("RAILWAY_SERVICE_NAME") is not None
|
|
113
|
-
|
|
114
|
-
if not logger.handlers:
|
|
115
|
-
ch = logging.StreamHandler()
|
|
116
|
-
ch.setLevel(logging.INFO)
|
|
117
|
-
ch.setFormatter(ColorJSONFormatter(is_production=is_production))
|
|
118
|
-
|
|
119
|
-
logger.addHandler(ch)
|
|
120
|
-
logger.propagate = False
|
|
@@ -24,7 +24,7 @@ class DataTrigger(BaseModel):
|
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
26
|
protocol: ClassVar[str]
|
|
27
|
-
created_at: str = datetime.now(
|
|
27
|
+
created_at: str = Field(default_factory=lambda: datetime.now(timezone.utc).isoformat())
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
DataTriggerT = TypeVar("DataTriggerT", bound=DataTrigger)
|
|
@@ -381,15 +381,51 @@ class BaseModule( # noqa: PLR0904
|
|
|
381
381
|
asyncio.CancelledError: If the module is cancelled
|
|
382
382
|
"""
|
|
383
383
|
try:
|
|
384
|
-
logger.info(
|
|
384
|
+
logger.info(
|
|
385
|
+
"Starting module %s",
|
|
386
|
+
self.name,
|
|
387
|
+
extra={
|
|
388
|
+
"mission_id": self.mission_id,
|
|
389
|
+
"setup_id": self.setup_id,
|
|
390
|
+
"setup_version_id": self.setup_version_id,
|
|
391
|
+
"job_id": self.job_id,
|
|
392
|
+
},
|
|
393
|
+
)
|
|
385
394
|
await self.run(input_data, setup_data, callback)
|
|
386
|
-
logger.info(
|
|
395
|
+
logger.info(
|
|
396
|
+
"Module %s finished",
|
|
397
|
+
self.name,
|
|
398
|
+
extra={
|
|
399
|
+
"mission_id": self.mission_id,
|
|
400
|
+
"setup_id": self.setup_id,
|
|
401
|
+
"setup_version_id": self.setup_version_id,
|
|
402
|
+
"job_id": self.job_id,
|
|
403
|
+
},
|
|
404
|
+
)
|
|
387
405
|
except asyncio.CancelledError:
|
|
388
406
|
self._status = ModuleStatus.CANCELLED
|
|
389
|
-
logger.error(
|
|
407
|
+
logger.error(
|
|
408
|
+
"Module %s cancelled",
|
|
409
|
+
self.name,
|
|
410
|
+
extra={
|
|
411
|
+
"mission_id": self.mission_id,
|
|
412
|
+
"setup_id": self.setup_id,
|
|
413
|
+
"setup_version_id": self.setup_version_id,
|
|
414
|
+
"job_id": self.job_id,
|
|
415
|
+
},
|
|
416
|
+
)
|
|
390
417
|
except Exception:
|
|
391
418
|
self._status = ModuleStatus.FAILED
|
|
392
|
-
logger.exception(
|
|
419
|
+
logger.exception(
|
|
420
|
+
"Error inside module %s",
|
|
421
|
+
self.name,
|
|
422
|
+
extra={
|
|
423
|
+
"mission_id": self.mission_id,
|
|
424
|
+
"setup_id": self.setup_id,
|
|
425
|
+
"setup_version_id": self.setup_version_id,
|
|
426
|
+
"job_id": self.job_id,
|
|
427
|
+
},
|
|
428
|
+
)
|
|
393
429
|
else:
|
|
394
430
|
self._status = ModuleStatus.STOPPING
|
|
395
431
|
finally:
|
|
@@ -464,7 +500,15 @@ class BaseModule( # noqa: PLR0904
|
|
|
464
500
|
) -> None:
|
|
465
501
|
"""Start the module."""
|
|
466
502
|
try:
|
|
467
|
-
logger.info(
|
|
503
|
+
logger.info(
|
|
504
|
+
"Run Config Setup lifecycle",
|
|
505
|
+
extra={
|
|
506
|
+
"mission_id": self.mission_id,
|
|
507
|
+
"setup_id": self.setup_id,
|
|
508
|
+
"setup_version_id": self.setup_version_id,
|
|
509
|
+
"job_id": self.job_id,
|
|
510
|
+
},
|
|
511
|
+
)
|
|
468
512
|
self._status = ModuleStatus.RUNNING
|
|
469
513
|
content = await self.run_config_setup(config_setup_data)
|
|
470
514
|
|
|
@@ -474,4 +518,12 @@ class BaseModule( # noqa: PLR0904
|
|
|
474
518
|
self._status = ModuleStatus.STOPPING
|
|
475
519
|
except Exception:
|
|
476
520
|
self._status = ModuleStatus.FAILED
|
|
477
|
-
logger.exception(
|
|
521
|
+
logger.exception(
|
|
522
|
+
"Error during module lifecyle",
|
|
523
|
+
extra={
|
|
524
|
+
"mission_id": self.mission_id,
|
|
525
|
+
"setup_id": self.setup_id,
|
|
526
|
+
"setup_version_id": self.setup_version_id,
|
|
527
|
+
"job_id": self.job_id,
|
|
528
|
+
},
|
|
529
|
+
)
|
|
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
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/base_job_manager.py
RENAMED
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/job_manager_models.py
RENAMED
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/single_job_manager.py
RENAMED
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/taskiq_broker.py
RENAMED
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/modules/job_manager/taskiq_job_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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/filesystem/default_filesystem.py
RENAMED
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/filesystem/filesystem_strategy.py
RENAMED
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/filesystem/grpc_filesystem.py
RENAMED
|
File without changes
|
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/identity/default_identity.py
RENAMED
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/identity/identity_strategy.py
RENAMED
|
File without changes
|
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/registry/default_registry.py
RENAMED
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/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.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/snapshot/default_snapshot.py
RENAMED
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/snapshot/snapshot_strategy.py
RENAMED
|
File without changes
|
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/storage/default_storage.py
RENAMED
|
File without changes
|
|
File without changes
|
{digitalkin-0.2.25rc0 → digitalkin-0.2.26}/src/digitalkin/services/storage/storage_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
|