23
23
from .schedule import Schedule , ScheduleAttempt
24
24
from .session import Session
25
25
from .task import Task
26
- from .util import archive_files , to_iso8601
26
+ from .util import archive_files , to_iso8601 , to_iso_instant
27
27
from .workflow import Workflow
28
28
29
29
logger = logging .getLogger (__name__ )
@@ -102,7 +102,7 @@ class ProjectAPI:
102
102
str ,
103
103
DefaultArg (DataType , "data" ),
104
104
DefaultArg (Dict [str , Any ], "_json" ),
105
- DefaultArg (Dict [str , str ], "params" ),
105
+ DefaultArg (Dict [str , Union [ str , List [ str ]] ], "params" ),
106
106
],
107
107
PutResponse ,
108
108
]
@@ -193,13 +193,19 @@ def create_project(
193
193
self ,
194
194
project_name : str ,
195
195
target_dir : str ,
196
+ schedule_from : Optional [datetime ],
197
+ clear_schedules : Optional [List [str ]] = None ,
198
+ clear_schedule_all : Optional [bool ] = None ,
196
199
exclude_patterns : Optional [List [str ]] = None ,
197
200
revision : Optional [str ] = None ,
198
201
) -> Project :
199
202
"""Create a new project
200
203
201
204
:param project_name: Project name
202
205
:param target_dir: Target directory name
206
+ :param schedule_from: Start scheduling of new workflows from the given time instead of current time
207
+ :param clear_schedules: Clear schedules for the given workflow names
208
+ :param clear_schedule_all: Clear all schedules
203
209
:param exclude_patterns: Exclude file patterns. They are treated as regexp
204
210
patterns.
205
211
default: ["venv", ".venv", "__pycache__", ".egg-info",\
@@ -208,7 +214,16 @@ def create_project(
208
214
:return:
209
215
"""
210
216
revision = revision or str (uuid .uuid4 ())
211
- params = {"project" : project_name , "revision" : revision }
217
+ params : Dict [str , Union [str , List [str ]]] = {
218
+ "project" : project_name ,
219
+ "revision" : revision ,
220
+ }
221
+ if schedule_from :
222
+ params ["schedule_from" ] = to_iso_instant (schedule_from )
223
+ if clear_schedules :
224
+ params ["clear_schedule" ] = clear_schedules
225
+ if clear_schedule_all :
226
+ params ["clear_schedule_all" ] = "true"
212
227
213
228
default_excludes = [
214
229
"venv" ,
@@ -452,7 +467,7 @@ class AttemptAPI:
452
467
str ,
453
468
DefaultArg (DataType , "data" ),
454
469
DefaultArg (Dict [str , Any ], "_json" ),
455
- DefaultArg (Dict [str , str ], "params" ),
470
+ DefaultArg (Dict [str , Union [ str , List [ str ]] ], "params" ),
456
471
],
457
472
PutResponse ,
458
473
]
@@ -1038,7 +1053,7 @@ def put(
1038
1053
path : str ,
1039
1054
data : Optional [DataType ] = None ,
1040
1055
_json : Optional [Dict [str , Any ]] = None ,
1041
- params : Optional [Dict [str , str ]] = None ,
1056
+ params : Optional [Dict [str , Union [ str , List [ str ]] ]] = None ,
1042
1057
) -> PutResponse :
1043
1058
"""PUT operator for REST API
1044
1059
0 commit comments