self.extra_container_args = extra_container_args
self.extra_entrypoint_args = extra_entrypoint_args
+ def __setattr__(self, name: str, value: Any) -> None:
+ if value is not None and name in ('extra_container_args', 'extra_entrypoint_args'):
+ for v in value:
+ tname = str(type(v))
+ if 'ArgumentSpec' not in tname:
+ raise TypeError(f"{name} is not all ArgumentSpec values: {v!r}(is {type(v)} in {value!r}")
+
+ super().__setattr__(name, value)
+
def name(self) -> str:
return '%s.%s' % (self.daemon_type, self.daemon_id)
self.extra_entrypoint_args = ArgumentSpec.from_general_args(
extra_entrypoint_args)
+ def __setattr__(self, name: str, value: Any) -> None:
+ if value is not None and name in ('extra_container_args', 'extra_entrypoint_args'):
+ for v in value:
+ tname = str(type(v))
+ if 'ArgumentSpec' not in tname:
+ raise TypeError(f"{name} is not all ArgumentSpec values: {v!r}(is {type(v)} in {value!r}")
+
+ super().__setattr__(name, value)
+
@property
def status(self) -> Optional[DaemonDescriptionStatus]:
return self._status
extra_entrypoint_args)
self.custom_configs: Optional[List[CustomConfig]] = custom_configs
+ def __setattr__(self, name: str, value: Any) -> None:
+ if value is not None and name in ('extra_container_args', 'extra_entrypoint_args'):
+ for v in value:
+ tname = str(type(v))
+ if 'ArgumentSpec' not in tname:
+ raise TypeError(
+ f"{name} is not all ArgumentSpec values:"
+ f" {v!r}(is {type(v)} in {value!r}")
+
+ super().__setattr__(name, value)
+
@classmethod
@handle_type_error
def from_json(cls: Type[ServiceSpecT], json_spec: Dict) -> ServiceSpecT: