fix: finalize semantic repair and test updates
This commit is contained in:
@@ -2,9 +2,14 @@
|
||||
# @SEMANTICS: task, context, plugin, execution, logger
|
||||
# @PURPOSE: Provides execution context passed to plugins during task execution.
|
||||
# @LAYER: Core
|
||||
# @RELATION: DEPENDS_ON -> TaskLogger, USED_BY -> plugins
|
||||
# @RELATION: DEPENDS_ON -> [TaskLoggerModule]
|
||||
# @RELATION: USED_BY -> [TaskManager]
|
||||
# @COMPLEXITY: 5
|
||||
# @INVARIANT: Each TaskContext is bound to a single task execution.
|
||||
# @PRE: Task execution pipeline provides valid task identifiers, logging callbacks, and parameter dictionaries.
|
||||
# @POST: Plugins receive context instances with stable logger and parameter accessors.
|
||||
# @SIDE_EFFECT: Creates task-scoped logger wrappers and carries optional background task handles across sub-contexts.
|
||||
# @DATA_CONTRACT: Input[task_id, add_log_fn, params, default_source, background_tasks] -> Output[TaskContext]
|
||||
|
||||
# [SECTION: IMPORTS]
|
||||
# [SECTION: IMPORTS]
|
||||
@@ -13,11 +18,17 @@ from .task_logger import TaskLogger
|
||||
from ..logger import belief_scope
|
||||
# [/SECTION]
|
||||
|
||||
|
||||
# [DEF:TaskContext:Class]
|
||||
# @SEMANTICS: context, task, execution, plugin
|
||||
# @PURPOSE: A container passed to plugin.execute() providing the logger and other task-specific utilities.
|
||||
# @COMPLEXITY: 5
|
||||
# @INVARIANT: logger is always a valid TaskLogger instance.
|
||||
# @PRE: Constructor receives non-empty task_id, callable add_log_fn, and params mapping.
|
||||
# @POST: Instance exposes immutable task identity with logger, params, and optional background task access.
|
||||
# @RELATION: DEPENDS_ON -> [TaskLogger]
|
||||
# @SIDE_EFFECT: Emits structured task logs through TaskLogger on plugin interactions.
|
||||
# @DATA_CONTRACT: Input[task_id, add_log_fn, params, default_source, background_tasks] -> Output[TaskContext]
|
||||
# @UX_STATE: Idle -> Active -> Complete
|
||||
#
|
||||
# @TEST_CONTRACT: TaskContextInit ->
|
||||
@@ -36,7 +47,7 @@ from ..logger import belief_scope
|
||||
class TaskContext:
|
||||
"""
|
||||
Execution context provided to plugins during task execution.
|
||||
|
||||
|
||||
Usage:
|
||||
def execute(params: dict, context: TaskContext = None):
|
||||
if context:
|
||||
@@ -44,7 +55,7 @@ class TaskContext:
|
||||
context.logger.progress("Processing items", percent=50)
|
||||
# ... plugin logic
|
||||
"""
|
||||
|
||||
|
||||
# [DEF:__init__:Function]
|
||||
# @PURPOSE: Initialize the TaskContext with task-specific resources.
|
||||
# @PRE: task_id is a valid task identifier, add_log_fn is callable.
|
||||
@@ -66,12 +77,11 @@ class TaskContext:
|
||||
self._params = params
|
||||
self._background_tasks = background_tasks
|
||||
self._logger = TaskLogger(
|
||||
task_id=task_id,
|
||||
add_log_fn=add_log_fn,
|
||||
source=default_source
|
||||
task_id=task_id, add_log_fn=add_log_fn, source=default_source
|
||||
)
|
||||
|
||||
# [/DEF:__init__:Function]
|
||||
|
||||
|
||||
# [DEF:task_id:Function]
|
||||
# @PURPOSE: Get the task ID.
|
||||
# @PRE: TaskContext must be initialized.
|
||||
@@ -81,8 +91,9 @@ class TaskContext:
|
||||
def task_id(self) -> str:
|
||||
with belief_scope("task_id"):
|
||||
return self._task_id
|
||||
|
||||
# [/DEF:task_id:Function]
|
||||
|
||||
|
||||
# [DEF:logger:Function]
|
||||
# @PURPOSE: Get the TaskLogger instance for this context.
|
||||
# @PRE: TaskContext must be initialized.
|
||||
@@ -92,8 +103,9 @@ class TaskContext:
|
||||
def logger(self) -> TaskLogger:
|
||||
with belief_scope("logger"):
|
||||
return self._logger
|
||||
|
||||
# [/DEF:logger:Function]
|
||||
|
||||
|
||||
# [DEF:params:Function]
|
||||
# @PURPOSE: Get the task parameters.
|
||||
# @PRE: TaskContext must be initialized.
|
||||
@@ -103,6 +115,7 @@ class TaskContext:
|
||||
def params(self) -> Dict[str, Any]:
|
||||
with belief_scope("params"):
|
||||
return self._params
|
||||
|
||||
# [/DEF:params:Function]
|
||||
|
||||
# [DEF:background_tasks:Function]
|
||||
@@ -113,8 +126,9 @@ class TaskContext:
|
||||
def background_tasks(self) -> Optional[Any]:
|
||||
with belief_scope("background_tasks"):
|
||||
return self._background_tasks
|
||||
|
||||
# [/DEF:background_tasks:Function]
|
||||
|
||||
|
||||
# [DEF:get_param:Function]
|
||||
# @PURPOSE: Get a specific parameter value with optional default.
|
||||
# @PRE: TaskContext must be initialized.
|
||||
@@ -125,8 +139,9 @@ class TaskContext:
|
||||
def get_param(self, key: str, default: Any = None) -> Any:
|
||||
with belief_scope("get_param"):
|
||||
return self._params.get(key, default)
|
||||
|
||||
# [/DEF:get_param:Function]
|
||||
|
||||
|
||||
# [DEF:create_sub_context:Function]
|
||||
# @PURPOSE: Create a sub-context with a different default source.
|
||||
# @PRE: source is a non-empty string.
|
||||
@@ -143,8 +158,10 @@ class TaskContext:
|
||||
default_source=source,
|
||||
background_tasks=self._background_tasks,
|
||||
)
|
||||
|
||||
# [/DEF:create_sub_context:Function]
|
||||
|
||||
|
||||
# [/DEF:TaskContext:Class]
|
||||
|
||||
# [/DEF:TaskContextModule:Module]
|
||||
|
||||
Reference in New Issue
Block a user