diff --git a/tdworkflow/client.py b/tdworkflow/client.py index 64ba12e..be1c1b7 100644 --- a/tdworkflow/client.py +++ b/tdworkflow/client.py @@ -23,7 +23,7 @@ from .schedule import Schedule, ScheduleAttempt from .session import Session from .task import Task -from .util import archive_files, to_iso8601 +from .util import archive_files, to_iso8601, to_iso_instant from .workflow import Workflow logger = logging.getLogger(__name__) @@ -193,6 +193,9 @@ def create_project( self, project_name: str, target_dir: str, + schedule_from: Optional[datetime], + clear_schedule: Optional[List[str]] = None, + clear_schedule_all: Optional[bool] = None, exclude_patterns: Optional[List[str]] = None, revision: Optional[str] = None, ) -> Project: @@ -209,6 +212,12 @@ def create_project( """ revision = revision or str(uuid.uuid4()) params = {"project": project_name, "revision": revision} + if schedule_from: + params["schedule_from"] = to_iso_instant(schedule_from) + if clear_schedule: + params["clear_schedule"] = clear_schedule + if clear_schedule_all: + params["clear_schedule_all"] = "true" default_excludes = [ "venv", diff --git a/tdworkflow/util.py b/tdworkflow/util.py index c2ea22e..872654d 100644 --- a/tdworkflow/util.py +++ b/tdworkflow/util.py @@ -48,7 +48,7 @@ def to_iso8601(dt: Optional[Union[str, datetime]]) -> str: if isinstance(dt, datetime): # Naive object if not dt.tzinfo: - return dt.astimezone(timezone(timedelta(0), "UTC")).isoformat() + return dt.astimezone(timezone.utc).isoformat() # Aware object else: return dt.isoformat() @@ -58,3 +58,15 @@ def to_iso8601(dt: Optional[Union[str, datetime]]) -> str: else: raise ValueError("Unexpected type") + + +def to_iso_instant(dt: datetime) -> str: + if isinstance(dt, datetime): + return ( + dt.astimezone(timezone.utc) + .isoformat(timespec="seconds") + .replace("+00:00", "Z") + ) + + else: + raise ValueError("Unexpected type") diff --git a/tests/resources/sample_project/main.dig b/tests/resources/sample_project/main.dig index e69de29..a7a687b 100644 --- a/tests/resources/sample_project/main.dig +++ b/tests/resources/sample_project/main.dig @@ -0,0 +1,2 @@ ++hello: + echo>: hello