|
37 | 37 | from .executor import Executor
|
38 | 38 | from .factory.proxy import Simvue
|
39 | 39 | from .metrics import get_gpu_metrics, get_process_cpu, get_process_memory
|
40 |
| -from .models import RunInput |
| 40 | +from .models import RunInput, FOLDER_REGEX, NAME_REGEX |
41 | 41 | from .serialization import serialize_object
|
42 | 42 | from .system import get_system
|
43 | 43 | from .metadata import git_info
|
@@ -449,11 +449,13 @@ def _error(self, message: str, join_threads: bool = True) -> None:
|
449 | 449 | @pydantic.validate_call
|
450 | 450 | def init(
|
451 | 451 | self,
|
452 |
| - name: typing.Optional[str] = None, |
| 452 | + name: typing.Optional[ |
| 453 | + typing.Annotated[str, pydantic.Field(pattern=NAME_REGEX)] |
| 454 | + ] = None, |
453 | 455 | metadata: typing.Optional[dict[str, typing.Any]] = None,
|
454 | 456 | tags: typing.Optional[list[str]] = None,
|
455 | 457 | description: typing.Optional[str] = None,
|
456 |
| - folder: str = "/", |
| 458 | + folder: typing.Annotated[str, pydantic.Field(pattern=FOLDER_REGEX)] = "/", |
457 | 459 | running: bool = True,
|
458 | 460 | retention_period: typing.Optional[str] = None,
|
459 | 461 | resources_metrics_interval: typing.Optional[int] = HEARTBEAT_INTERVAL,
|
@@ -1027,7 +1029,9 @@ def save_object(
|
1027 | 1029 | self,
|
1028 | 1030 | obj: typing.Any,
|
1029 | 1031 | category: typing.Literal["input", "output", "code"],
|
1030 |
| - name: typing.Optional[str] = None, |
| 1032 | + name: typing.Optional[ |
| 1033 | + typing.Annotated[str, pydantic.Field(pattern=NAME_REGEX)] |
| 1034 | + ] = None, |
1031 | 1035 | allow_pickle: bool = False,
|
1032 | 1036 | ) -> bool:
|
1033 | 1037 | """Save an object to the Simvue server
|
@@ -1084,7 +1088,9 @@ def save_file(
|
1084 | 1088 | category: typing.Literal["input", "output", "code"],
|
1085 | 1089 | filetype: typing.Optional[str] = None,
|
1086 | 1090 | preserve_path: bool = False,
|
1087 |
| - name: typing.Optional[str] = None, |
| 1091 | + name: typing.Optional[ |
| 1092 | + typing.Annotated[str, pydantic.Field(pattern=NAME_REGEX)] |
| 1093 | + ] = None, |
1088 | 1094 | ) -> bool:
|
1089 | 1095 | """Upload file to the server
|
1090 | 1096 |
|
@@ -1345,7 +1351,7 @@ def close(self) -> bool:
|
1345 | 1351 | @pydantic.validate_call
|
1346 | 1352 | def set_folder_details(
|
1347 | 1353 | self,
|
1348 |
| - path: str, |
| 1354 | + path: typing.Annotated[str, pydantic.Field(pattern=FOLDER_REGEX)], |
1349 | 1355 | metadata: typing.Optional[dict[str, typing.Union[int, str, float]]] = None,
|
1350 | 1356 | tags: typing.Optional[list[str]] = None,
|
1351 | 1357 | description: typing.Optional[str] = None,
|
@@ -1448,7 +1454,7 @@ def add_alerts(
|
1448 | 1454 | @pydantic.validate_call
|
1449 | 1455 | def create_alert(
|
1450 | 1456 | self,
|
1451 |
| - name: str, |
| 1457 | + name: typing.Annotated[str, pydantic.Field(pattern=NAME_REGEX)], |
1452 | 1458 | source: typing.Literal["events", "metrics", "user"] = "metrics",
|
1453 | 1459 | description: typing.Optional[str] = None,
|
1454 | 1460 | frequency: typing.Optional[pydantic.PositiveInt] = None,
|
|
0 commit comments