Skip to content

Commit

Permalink
IWF-356: Add new fields to WorkflowOptions (#51)
Browse files Browse the repository at this point in the history
* IWF-356: Add new fields to WorkflowOptions

* IWF-356: Lint

* IWF-356: Fix child_workflow_request_id

* IWF-356: Add test

* IWF-356: Add more testing

* IWF-356: Change test
  • Loading branch information
lwolczynski authored Dec 4, 2024
1 parent eafcbcc commit 504cc02
Show file tree
Hide file tree
Showing 22 changed files with 817 additions and 67 deletions.
10 changes: 5 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ exclude: ^iwf/iwf_api/

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
rev: v5.0.0
hooks:
- id: check-ast
- id: trailing-whitespace
- id: check-toml
- id: end-of-file-fixer

- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks
rev: v2.1.0
rev: v2.14.0
hooks:
- id: pretty-format-yaml
args:
Expand All @@ -21,19 +21,19 @@ repos:
- --indent=2

- repo: https://github.com/hadialqattan/pycln
rev: v1.1.0
rev: v2.4.0
hooks:
- id: pycln
args: ["-a"]

- repo: https://github.com/ambv/black
rev: 23.7.0
rev: 24.10.0
hooks:
- id: black
language_version: python3

- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: "v0.0.267"
rev: "v0.8.1"
hooks:
- id: ruff

Expand Down
2 changes: 1 addition & 1 deletion iwf-idl
Submodule iwf-idl updated 2 files
+83 −8 iwf-sdk.yaml
+125 −6 iwf.yaml
6 changes: 6 additions & 0 deletions iwf/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,12 @@ def start_workflow(
unreg_opts.workflow_start_delay_seconds = (
options.workflow_start_delay_seconds
)
unreg_opts.workflow_already_started_options = (
options.workflow_already_started_options
)
unreg_opts.initial_data_attributes = options.initial_data_attributes

unreg_opts.workflow_config_override = options.workflow_config_override

# TODO: set initial search attributes here

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def sync_detailed(
client: Client,
json_body: WorkflowGetDataObjectsRequest,
) -> Response[Union[ErrorResponse, WorkflowGetDataObjectsResponse]]:
"""get workflow data objects
"""get workflow data objects aka data attributes
Args:
json_body (WorkflowGetDataObjectsRequest):
Expand Down Expand Up @@ -98,7 +98,7 @@ def sync(
client: Client,
json_body: WorkflowGetDataObjectsRequest,
) -> Optional[Union[ErrorResponse, WorkflowGetDataObjectsResponse]]:
"""get workflow data objects
"""get workflow data objects aka data attributes
Args:
json_body (WorkflowGetDataObjectsRequest):
Expand All @@ -122,7 +122,7 @@ async def asyncio_detailed(
client: Client,
json_body: WorkflowGetDataObjectsRequest,
) -> Response[Union[ErrorResponse, WorkflowGetDataObjectsResponse]]:
"""get workflow data objects
"""get workflow data objects aka data attributes
Args:
json_body (WorkflowGetDataObjectsRequest):
Expand Down Expand Up @@ -151,7 +151,7 @@ async def asyncio(
client: Client,
json_body: WorkflowGetDataObjectsRequest,
) -> Optional[Union[ErrorResponse, WorkflowGetDataObjectsResponse]]:
"""get workflow data objects
"""get workflow data objects aka data attributes
Args:
json_body (WorkflowGetDataObjectsRequest):
Expand Down
170 changes: 170 additions & 0 deletions iwf/iwf_api/api/default/post_api_v1_workflow_dataobjects_set.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
from http import HTTPStatus
from typing import Any, Dict, Optional, Union, cast

import httpx

from ... import errors
from ...client import Client
from ...models.error_response import ErrorResponse
from ...models.workflow_set_data_objects_request import WorkflowSetDataObjectsRequest
from ...types import Response


def _get_kwargs(
*,
client: Client,
json_body: WorkflowSetDataObjectsRequest,
) -> Dict[str, Any]:
url = "{}/api/v1/workflow/dataobjects/set".format(client.base_url)

headers: Dict[str, str] = client.get_headers()
cookies: Dict[str, Any] = client.get_cookies()

json_json_body = json_body.to_dict()

return {
"method": "post",
"url": url,
"headers": headers,
"cookies": cookies,
"timeout": client.get_timeout(),
"follow_redirects": client.follow_redirects,
"json": json_json_body,
}


def _parse_response(
*, client: Client, response: httpx.Response
) -> Optional[Union[Any, ErrorResponse]]:
if response.status_code == HTTPStatus.OK:
response_200 = cast(Any, None)
return response_200
if response.status_code == HTTPStatus.BAD_REQUEST:
response_400 = ErrorResponse.from_dict(response.json())

return response_400
if client.raise_on_unexpected_status:
raise errors.UnexpectedStatus(response.status_code, response.content)
else:
return None


def _build_response(
*, client: Client, response: httpx.Response
) -> Response[Union[Any, ErrorResponse]]:
return Response(
status_code=HTTPStatus(response.status_code),
content=response.content,
headers=response.headers,
parsed=_parse_response(client=client, response=response),
)


def sync_detailed(
*,
client: Client,
json_body: WorkflowSetDataObjectsRequest,
) -> Response[Union[Any, ErrorResponse]]:
"""set workflow data objects aka data attributes
Args:
json_body (WorkflowSetDataObjectsRequest):
Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.
Returns:
Response[Union[Any, ErrorResponse]]
"""

kwargs = _get_kwargs(
client=client,
json_body=json_body,
)

response = httpx.request(
verify=client.verify_ssl,
**kwargs,
)

return _build_response(client=client, response=response)


def sync(
*,
client: Client,
json_body: WorkflowSetDataObjectsRequest,
) -> Optional[Union[Any, ErrorResponse]]:
"""set workflow data objects aka data attributes
Args:
json_body (WorkflowSetDataObjectsRequest):
Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.
Returns:
Union[Any, ErrorResponse]
"""

return sync_detailed(
client=client,
json_body=json_body,
).parsed


async def asyncio_detailed(
*,
client: Client,
json_body: WorkflowSetDataObjectsRequest,
) -> Response[Union[Any, ErrorResponse]]:
"""set workflow data objects aka data attributes
Args:
json_body (WorkflowSetDataObjectsRequest):
Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.
Returns:
Response[Union[Any, ErrorResponse]]
"""

kwargs = _get_kwargs(
client=client,
json_body=json_body,
)

async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
response = await _client.request(**kwargs)

return _build_response(client=client, response=response)


async def asyncio(
*,
client: Client,
json_body: WorkflowSetDataObjectsRequest,
) -> Optional[Union[Any, ErrorResponse]]:
"""set workflow data objects aka data attributes
Args:
json_body (WorkflowSetDataObjectsRequest):
Raises:
errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
httpx.TimeoutException: If the request takes longer than Client.timeout.
Returns:
Union[Any, ErrorResponse]
"""

return (
await asyncio_detailed(
client=client,
json_body=json_body,
)
).parsed
Loading

0 comments on commit 504cc02

Please sign in to comment.