5757Input and output result groups may only contain, letters, numbers and underscores.
5858"""
5959
60+ LogLevel = Literal ["text" , "warning" , "error" ]
61+ """
62+ Severity level for job event logs.
63+ """
64+
6065
6166class JobController (Controller [Job ]):
6267 """
@@ -536,19 +541,27 @@ def load_output(self, name: str, slots: LoadableSlots = "all", version: Union[in
536541 """
537542 return self .cs .api .jobs .load_output (self .project_uid , self .uid , name , slots = slots , version = version )
538543
539- def log (self , text : str , * , level : Literal ["text" , "warning" , "error" ] = "text" , name : Optional [str ] = None ):
544+ @overload
545+ def log (self , text : str , * , level : LogLevel = ...) -> str : ...
546+ @overload
547+ def log (self , text : str , * , level : LogLevel = ..., name : str ) -> str : ...
548+ @overload
549+ def log (self , text : str , * , level : LogLevel = ..., id : str ) -> str : ...
550+ def log (self , text : str , * , level : LogLevel = "text" , name : Optional [str ] = None , id : Optional [str ] = None ) -> str :
540551 """
541- Append to a job's event log. Update an existing log by providing a name.
552+ Append to a job's event log. Update an existing log by providing a name
553+ or ID.
542554
543555 Args:
544556 text (str): Text to log
545557 level (str, optional): Log level ("text", "warning" or "error").
546558 Defaults to "text".
547- name (str, optional): Event name or ID. If called multiple times
548- with the same name, updates that event instead of creating a new
549- one. If name is not initially provided, can pass returned ID as
550- name. Named events are reset when logging a checkpoint.
551- Defaults to None.
559+ name (str, optional): Event name. If called multiple times with the
560+ same name, updates that event instead of creating a new one.
561+ Named events are reset when logging a checkpoint. Cannot be
562+ provided with id. Defaults to None.
563+ id (str, optional): Update a previously-created event log by its ID.
564+ Cannot be provided with name. Defaults to None.
552565
553566 Example:
554567
@@ -569,15 +582,20 @@ def log(self, text: str, *, level: Literal["text", "warning", "error"] = "text",
569582 >>> job.log("Finished processing", name=event_id)
570583
571584 Returns:
572- str: Created log event name or ID
585+ str: Created log event ID
573586 """
587+ existing_id = id
574588 if name and name in self ._events :
575- event_id = self ._events [name ]
576- event = self .cs .api .jobs .update_event_log (self .project_uid , self .uid , event_id , text , type = level )
589+ existing_id = self ._events [name ]
590+
591+ if existing_id :
592+ event = self .cs .api .jobs .update_event_log (self .project_uid , self .uid , existing_id , text , type = level )
577593 else :
578594 event = self .cs .api .jobs .add_event_log (self .project_uid , self .uid , text , type = level )
579- self ._events [name or event .id ] = event .id
580- return name or event .id
595+
596+ if name :
597+ self ._events [name ] = event .id
598+ return event .id
581599
582600 def log_checkpoint (self , meta : dict = {}):
583601 """
0 commit comments