From 9a2ca0127334dbc209e982d5da176fc5ad2af081 Mon Sep 17 00:00:00 2001 From: Nathan Thorpe Date: Mon, 5 May 2025 08:55:55 -0400 Subject: [PATCH 1/4] set user agent field --- cirro_api_client/cirro_client.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cirro_api_client/cirro_client.py b/cirro_api_client/cirro_client.py index 5b9e8d8..da88574 100644 --- a/cirro_api_client/cirro_client.py +++ b/cirro_api_client/cirro_client.py @@ -49,6 +49,8 @@ class CirroApiClient(Client): raise_on_unexpected_status: bool = field(default=True, kw_only=True) client_name: str = field(kw_only=True, default="Cirro API Client") package_name: str = field(kw_only=True, default="cirro-api-client") + user_agent: str = field(init=False, default=None) def __attrs_post_init__(self): - self._headers["User-Agent"] = _get_user_agent(self.package_name, self.client_name) + self.user_agent = _get_user_agent(self.package_name, self.client_name) + self._headers["User-Agent"] = self.user_agent From fbe35f5e54c7b9e5953a0f41b4398d1d6cab0c96 Mon Sep 17 00:00:00 2001 From: Nathan Thorpe Date: Mon, 5 May 2025 09:17:05 -0400 Subject: [PATCH 2/4] update process models, other cleanup --- .../v1/api/billing/generate_billing_report.py | 79 --- .../v1/api/governance/get_requirements.py | 46 +- .../v1/api/metadata/get_dataset_samples.py | 181 +++++++ .../v1/api/processes/create_custom_process.py | 20 +- .../v1/api/processes/update_custom_process.py | 12 +- cirro_api_client/v1/models/__init__.py | 10 +- .../v1/models/custom_process_request.py | 326 ++++++++++++ cirro_api_client/v1/models/data_file.py | 60 +++ ...uest_settings.py => data_file_metadata.py} | 12 +- .../v1/models/governance_requirement.py | 9 + cirro_api_client/v1/models/process.py | 120 ++++- cirro_api_client/v1/models/process_detail.py | 146 ++--- .../models/requirement_fulfillment_input.py | 32 ++ .../v1/models/requirement_input.py | 20 + .../v1/models/run_analysis_request.py | 32 ++ cirro_api_client/v1/models/sample.py | 41 ++ .../v1/models/update_user_request.py | 49 +- cirro_api_client/v1/models/user_detail.py | 18 + cirro_api_client/v1/models/user_settings.py | 47 ++ poetry.lock | 498 ++++++++++-------- pyproject.toml | 4 +- 21 files changed, 1328 insertions(+), 434 deletions(-) delete mode 100644 cirro_api_client/v1/api/billing/generate_billing_report.py create mode 100644 cirro_api_client/v1/api/metadata/get_dataset_samples.py create mode 100644 cirro_api_client/v1/models/custom_process_request.py create mode 100644 cirro_api_client/v1/models/data_file.py rename cirro_api_client/v1/models/{update_user_request_settings.py => data_file_metadata.py} (69%) create mode 100644 cirro_api_client/v1/models/user_settings.py diff --git a/cirro_api_client/v1/api/billing/generate_billing_report.py b/cirro_api_client/v1/api/billing/generate_billing_report.py deleted file mode 100644 index 38003ad..0000000 --- a/cirro_api_client/v1/api/billing/generate_billing_report.py +++ /dev/null @@ -1,79 +0,0 @@ -from http import HTTPStatus -from typing import Any, Dict, Optional - -import httpx - -from ... import errors -from ...client import Client -from ...types import Response - - -def _get_kwargs() -> Dict[str, Any]: - _kwargs: Dict[str, Any] = { - "method": "get", - "url": "/billing-report", - } - - return _kwargs - - -def _parse_response(*, client: Client, response: httpx.Response) -> Optional[Any]: - errors.handle_error_response(response, client.raise_on_unexpected_status) - - -def _build_response(*, client: Client, response: httpx.Response) -> Response[Any]: - 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, -) -> Response[Any]: - """Generate billing report - - Generates a billing report xlsx with cost information - - 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[Any] - """ - - kwargs = _get_kwargs() - - response = client.get_httpx_client().request( - auth=client.get_auth(), - **kwargs, - ) - - return _build_response(client=client, response=response) - - -async def asyncio_detailed( - *, - client: Client, -) -> Response[Any]: - """Generate billing report - - Generates a billing report xlsx with cost information - - 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[Any] - """ - - kwargs = _get_kwargs() - - response = await client.get_async_httpx_client().request(auth=client.get_auth(), **kwargs) - - return _build_response(client=client, response=response) diff --git a/cirro_api_client/v1/api/governance/get_requirements.py b/cirro_api_client/v1/api/governance/get_requirements.py index 5fc2785..162e6cf 100644 --- a/cirro_api_client/v1/api/governance/get_requirements.py +++ b/cirro_api_client/v1/api/governance/get_requirements.py @@ -1,18 +1,28 @@ from http import HTTPStatus -from typing import Any, Dict, List, Optional +from typing import Any, Dict, List, Optional, Union import httpx from ... import errors from ...client import Client from ...models.governance_requirement import GovernanceRequirement -from ...types import Response +from ...types import UNSET, Response, Unset -def _get_kwargs() -> Dict[str, Any]: +def _get_kwargs( + *, + project_id: Union[Unset, str] = UNSET, +) -> Dict[str, Any]: + params: Dict[str, Any] = {} + + params["projectId"] = project_id + + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + _kwargs: Dict[str, Any] = { "method": "get", "url": "/governance/requirements", + "params": params, } return _kwargs @@ -44,11 +54,16 @@ def _build_response(*, client: Client, response: httpx.Response) -> Response[Lis def sync_detailed( *, client: Client, + project_id: Union[Unset, str] = UNSET, ) -> Response[List["GovernanceRequirement"]]: """Get requirements Retrieve a list of governance requirements + Args: + project_id (Union[Unset, str]): + client (Client): instance of the API client + 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. @@ -57,7 +72,9 @@ def sync_detailed( Response[List['GovernanceRequirement']] """ - kwargs = _get_kwargs() + kwargs = _get_kwargs( + project_id=project_id, + ) response = client.get_httpx_client().request( auth=client.get_auth(), @@ -70,11 +87,16 @@ def sync_detailed( def sync( *, client: Client, + project_id: Union[Unset, str] = UNSET, ) -> Optional[List["GovernanceRequirement"]]: """Get requirements Retrieve a list of governance requirements + Args: + project_id (Union[Unset, str]): + client (Client): instance of the API client + 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. @@ -86,6 +108,7 @@ def sync( try: return sync_detailed( client=client, + project_id=project_id, ).parsed except errors.NotFoundException: return None @@ -94,11 +117,16 @@ def sync( async def asyncio_detailed( *, client: Client, + project_id: Union[Unset, str] = UNSET, ) -> Response[List["GovernanceRequirement"]]: """Get requirements Retrieve a list of governance requirements + Args: + project_id (Union[Unset, str]): + client (Client): instance of the API client + 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. @@ -107,7 +135,9 @@ async def asyncio_detailed( Response[List['GovernanceRequirement']] """ - kwargs = _get_kwargs() + kwargs = _get_kwargs( + project_id=project_id, + ) response = await client.get_async_httpx_client().request(auth=client.get_auth(), **kwargs) @@ -117,11 +147,16 @@ async def asyncio_detailed( async def asyncio( *, client: Client, + project_id: Union[Unset, str] = UNSET, ) -> Optional[List["GovernanceRequirement"]]: """Get requirements Retrieve a list of governance requirements + Args: + project_id (Union[Unset, str]): + client (Client): instance of the API client + 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. @@ -134,6 +169,7 @@ async def asyncio( return ( await asyncio_detailed( client=client, + project_id=project_id, ) ).parsed except errors.NotFoundException: diff --git a/cirro_api_client/v1/api/metadata/get_dataset_samples.py b/cirro_api_client/v1/api/metadata/get_dataset_samples.py new file mode 100644 index 0000000..bd4d0bb --- /dev/null +++ b/cirro_api_client/v1/api/metadata/get_dataset_samples.py @@ -0,0 +1,181 @@ +from http import HTTPStatus +from typing import Any, Dict, List, Optional + +import httpx + +from ... import errors +from ...client import Client +from ...models.sample import Sample +from ...types import Response + + +def _get_kwargs( + project_id: str, + dataset_id: str, +) -> Dict[str, Any]: + _kwargs: Dict[str, Any] = { + "method": "get", + "url": f"/projects/{project_id}/datasets/{dataset_id}/samples", + } + + return _kwargs + + +def _parse_response(*, client: Client, response: httpx.Response) -> Optional[List["Sample"]]: + if response.status_code == HTTPStatus.OK: + response_200 = [] + _response_200 = response.json() + for response_200_item_data in _response_200: + response_200_item = Sample.from_dict(response_200_item_data) + + response_200.append(response_200_item) + + return response_200 + + errors.handle_error_response(response, client.raise_on_unexpected_status) + + +def _build_response(*, client: Client, response: httpx.Response) -> Response[List["Sample"]]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + project_id: str, + dataset_id: str, + *, + client: Client, +) -> Response[List["Sample"]]: + """Get dataset samples + + Retrieves a list of samples associated with a dataset along with their metadata + + Args: + project_id (str): + dataset_id (str): + client (Client): instance of the API client + + 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[List['Sample']] + """ + + kwargs = _get_kwargs( + project_id=project_id, + dataset_id=dataset_id, + ) + + response = client.get_httpx_client().request( + auth=client.get_auth(), + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + project_id: str, + dataset_id: str, + *, + client: Client, +) -> Optional[List["Sample"]]: + """Get dataset samples + + Retrieves a list of samples associated with a dataset along with their metadata + + Args: + project_id (str): + dataset_id (str): + client (Client): instance of the API client + + 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: + List['Sample'] + """ + + try: + return sync_detailed( + project_id=project_id, + dataset_id=dataset_id, + client=client, + ).parsed + except errors.NotFoundException: + return None + + +async def asyncio_detailed( + project_id: str, + dataset_id: str, + *, + client: Client, +) -> Response[List["Sample"]]: + """Get dataset samples + + Retrieves a list of samples associated with a dataset along with their metadata + + Args: + project_id (str): + dataset_id (str): + client (Client): instance of the API client + + 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[List['Sample']] + """ + + kwargs = _get_kwargs( + project_id=project_id, + dataset_id=dataset_id, + ) + + response = await client.get_async_httpx_client().request(auth=client.get_auth(), **kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + project_id: str, + dataset_id: str, + *, + client: Client, +) -> Optional[List["Sample"]]: + """Get dataset samples + + Retrieves a list of samples associated with a dataset along with their metadata + + Args: + project_id (str): + dataset_id (str): + client (Client): instance of the API client + + 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: + List['Sample'] + """ + + try: + return ( + await asyncio_detailed( + project_id=project_id, + dataset_id=dataset_id, + client=client, + ) + ).parsed + except errors.NotFoundException: + return None diff --git a/cirro_api_client/v1/api/processes/create_custom_process.py b/cirro_api_client/v1/api/processes/create_custom_process.py index f2a2376..02c91f9 100644 --- a/cirro_api_client/v1/api/processes/create_custom_process.py +++ b/cirro_api_client/v1/api/processes/create_custom_process.py @@ -6,15 +6,15 @@ from ... import errors from ...client import Client from ...models.create_response import CreateResponse +from ...models.custom_process_request import CustomProcessRequest from ...models.error_message import ErrorMessage from ...models.portal_error_response import PortalErrorResponse -from ...models.process_detail import ProcessDetail from ...types import Response def _get_kwargs( *, - body: ProcessDetail, + body: CustomProcessRequest, ) -> Dict[str, Any]: headers: Dict[str, Any] = {} @@ -65,14 +65,14 @@ def _build_response( def sync_detailed( *, client: Client, - body: ProcessDetail, + body: CustomProcessRequest, ) -> Response[Union[CreateResponse, ErrorMessage, PortalErrorResponse]]: """Create custom process Creates a custom data type or pipeline which you can use in the listed projects. Args: - body (ProcessDetail): + body (CustomProcessRequest): client (Client): instance of the API client Raises: @@ -98,14 +98,14 @@ def sync_detailed( def sync( *, client: Client, - body: ProcessDetail, + body: CustomProcessRequest, ) -> Optional[Union[CreateResponse, ErrorMessage, PortalErrorResponse]]: """Create custom process Creates a custom data type or pipeline which you can use in the listed projects. Args: - body (ProcessDetail): + body (CustomProcessRequest): client (Client): instance of the API client Raises: @@ -128,14 +128,14 @@ def sync( async def asyncio_detailed( *, client: Client, - body: ProcessDetail, + body: CustomProcessRequest, ) -> Response[Union[CreateResponse, ErrorMessage, PortalErrorResponse]]: """Create custom process Creates a custom data type or pipeline which you can use in the listed projects. Args: - body (ProcessDetail): + body (CustomProcessRequest): client (Client): instance of the API client Raises: @@ -158,14 +158,14 @@ async def asyncio_detailed( async def asyncio( *, client: Client, - body: ProcessDetail, + body: CustomProcessRequest, ) -> Optional[Union[CreateResponse, ErrorMessage, PortalErrorResponse]]: """Create custom process Creates a custom data type or pipeline which you can use in the listed projects. Args: - body (ProcessDetail): + body (CustomProcessRequest): client (Client): instance of the API client Raises: diff --git a/cirro_api_client/v1/api/processes/update_custom_process.py b/cirro_api_client/v1/api/processes/update_custom_process.py index 8bdd110..9a559ab 100644 --- a/cirro_api_client/v1/api/processes/update_custom_process.py +++ b/cirro_api_client/v1/api/processes/update_custom_process.py @@ -5,14 +5,14 @@ from ... import errors from ...client import Client -from ...models.process_detail import ProcessDetail +from ...models.custom_process_request import CustomProcessRequest from ...types import Response def _get_kwargs( process_id: str, *, - body: ProcessDetail, + body: CustomProcessRequest, ) -> Dict[str, Any]: headers: Dict[str, Any] = {} @@ -50,7 +50,7 @@ def sync_detailed( process_id: str, *, client: Client, - body: ProcessDetail, + body: CustomProcessRequest, ) -> Response[Any]: """Update custom process @@ -58,7 +58,7 @@ def sync_detailed( Args: process_id (str): - body (ProcessDetail): + body (CustomProcessRequest): client (Client): instance of the API client Raises: @@ -86,7 +86,7 @@ async def asyncio_detailed( process_id: str, *, client: Client, - body: ProcessDetail, + body: CustomProcessRequest, ) -> Response[Any]: """Update custom process @@ -94,7 +94,7 @@ async def asyncio_detailed( Args: process_id (str): - body (ProcessDetail): + body (CustomProcessRequest): client (Client): instance of the API client Raises: diff --git a/cirro_api_client/v1/models/__init__.py b/cirro_api_client/v1/models/__init__.py index dd7bd04..6839152 100644 --- a/cirro_api_client/v1/models/__init__.py +++ b/cirro_api_client/v1/models/__init__.py @@ -40,6 +40,7 @@ from .create_reference_request import CreateReferenceRequest from .create_response import CreateResponse from .custom_pipeline_settings import CustomPipelineSettings +from .custom_process_request import CustomProcessRequest from .customer_type import CustomerType from .dashboard import Dashboard from .dashboard_dashboard_data import DashboardDashboardData @@ -47,6 +48,8 @@ from .dashboard_request import DashboardRequest from .dashboard_request_dashboard_data import DashboardRequestDashboardData from .dashboard_request_info import DashboardRequestInfo +from .data_file import DataFile +from .data_file_metadata import DataFileMetadata from .dataset import Dataset from .dataset_assets_manifest import DatasetAssetsManifest from .dataset_condition import DatasetCondition @@ -149,12 +152,12 @@ from .tenant_info import TenantInfo from .update_dataset_request import UpdateDatasetRequest from .update_user_request import UpdateUserRequest -from .update_user_request_settings import UpdateUserRequestSettings from .upload_dataset_create_response import UploadDatasetCreateResponse from .upload_dataset_request import UploadDatasetRequest from .user import User from .user_detail import UserDetail from .user_project_assignment import UserProjectAssignment +from .user_settings import UserSettings from .validate_file_requirements_request import ValidateFileRequirementsRequest __all__ = ( @@ -199,12 +202,15 @@ "CreateResponse", "CustomerType", "CustomPipelineSettings", + "CustomProcessRequest", "Dashboard", "DashboardDashboardData", "DashboardInfo", "DashboardRequest", "DashboardRequestDashboardData", "DashboardRequestInfo", + "DataFile", + "DataFileMetadata", "Dataset", "DatasetAssetsManifest", "DatasetCondition", @@ -307,11 +313,11 @@ "TenantInfo", "UpdateDatasetRequest", "UpdateUserRequest", - "UpdateUserRequestSettings", "UploadDatasetCreateResponse", "UploadDatasetRequest", "User", "UserDetail", "UserProjectAssignment", + "UserSettings", "ValidateFileRequirementsRequest", ) diff --git a/cirro_api_client/v1/models/custom_process_request.py b/cirro_api_client/v1/models/custom_process_request.py new file mode 100644 index 0000000..08223ec --- /dev/null +++ b/cirro_api_client/v1/models/custom_process_request.py @@ -0,0 +1,326 @@ +from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.executor import Executor +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.custom_pipeline_settings import CustomPipelineSettings + from ..models.file_mapping_rule import FileMappingRule + from ..models.pipeline_code import PipelineCode + + +T = TypeVar("T", bound="CustomProcessRequest") + + +@_attrs_define +class CustomProcessRequest: + """ + Attributes: + id (str): Unique ID of the Process Example: process-hutch-magic_flute-1_0. + name (str): Friendly name for the process Example: MAGeCK Flute. + description (str): Description of the process Example: MAGeCK Flute enables accurate identification of essential + genes with their related biological functions. + executor (Executor): How the workflow is executed + child_process_ids (List[str]): IDs of pipelines that can be run downstream + parent_process_ids (List[str]): IDs of processes that can run this pipeline + linked_project_ids (List[str]): Projects that can run this process + data_type (Union[None, Unset, str]): Name of the data type this pipeline produces (if it is not defined, use the + name) + category (Union[Unset, str]): Category of the process Example: Microbial Analysis. + pipeline_type (Union[Unset, str]): Type of pipeline Example: nf-core. + documentation_url (Union[None, Unset, str]): Link to process documentation Example: + https://docs.cirro.bio/pipelines/catalog_targeted_sequencing/#crispr-screen-analysis. + file_requirements_message (Union[None, Unset, str]): Description of the files to be uploaded (optional) + pipeline_code (Union['PipelineCode', None, Unset]): + is_tenant_wide (Union[Unset, bool]): Whether the process is shared with the tenant + allow_multiple_sources (Union[Unset, bool]): Whether the pipeline is allowed to have multiple dataset sources + uses_sample_sheet (Union[Unset, bool]): Whether the pipeline uses the Cirro-provided sample sheet + custom_settings (Union['CustomPipelineSettings', None, Unset]): + is_archived (Union[Unset, bool]): Whether the process is marked as archived + file_mapping_rules (Union[List['FileMappingRule'], None, Unset]): + """ + + id: str + name: str + description: str + executor: Executor + child_process_ids: List[str] + parent_process_ids: List[str] + linked_project_ids: List[str] + data_type: Union[None, Unset, str] = UNSET + category: Union[Unset, str] = UNSET + pipeline_type: Union[Unset, str] = UNSET + documentation_url: Union[None, Unset, str] = UNSET + file_requirements_message: Union[None, Unset, str] = UNSET + pipeline_code: Union["PipelineCode", None, Unset] = UNSET + is_tenant_wide: Union[Unset, bool] = UNSET + allow_multiple_sources: Union[Unset, bool] = UNSET + uses_sample_sheet: Union[Unset, bool] = UNSET + custom_settings: Union["CustomPipelineSettings", None, Unset] = UNSET + is_archived: Union[Unset, bool] = UNSET + file_mapping_rules: Union[List["FileMappingRule"], None, Unset] = UNSET + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> Dict[str, Any]: + from ..models.custom_pipeline_settings import CustomPipelineSettings + from ..models.pipeline_code import PipelineCode + + id = self.id + + name = self.name + + description = self.description + + executor = self.executor.value + + child_process_ids = self.child_process_ids + + parent_process_ids = self.parent_process_ids + + linked_project_ids = self.linked_project_ids + + data_type: Union[None, Unset, str] + if isinstance(self.data_type, Unset): + data_type = UNSET + else: + data_type = self.data_type + + category = self.category + + pipeline_type = self.pipeline_type + + documentation_url: Union[None, Unset, str] + if isinstance(self.documentation_url, Unset): + documentation_url = UNSET + else: + documentation_url = self.documentation_url + + file_requirements_message: Union[None, Unset, str] + if isinstance(self.file_requirements_message, Unset): + file_requirements_message = UNSET + else: + file_requirements_message = self.file_requirements_message + + pipeline_code: Union[Dict[str, Any], None, Unset] + if isinstance(self.pipeline_code, Unset): + pipeline_code = UNSET + elif isinstance(self.pipeline_code, PipelineCode): + pipeline_code = self.pipeline_code.to_dict() + else: + pipeline_code = self.pipeline_code + + is_tenant_wide = self.is_tenant_wide + + allow_multiple_sources = self.allow_multiple_sources + + uses_sample_sheet = self.uses_sample_sheet + + custom_settings: Union[Dict[str, Any], None, Unset] + if isinstance(self.custom_settings, Unset): + custom_settings = UNSET + elif isinstance(self.custom_settings, CustomPipelineSettings): + custom_settings = self.custom_settings.to_dict() + else: + custom_settings = self.custom_settings + + is_archived = self.is_archived + + file_mapping_rules: Union[List[Dict[str, Any]], None, Unset] + if isinstance(self.file_mapping_rules, Unset): + file_mapping_rules = UNSET + elif isinstance(self.file_mapping_rules, list): + file_mapping_rules = [] + for file_mapping_rules_type_0_item_data in self.file_mapping_rules: + file_mapping_rules_type_0_item = file_mapping_rules_type_0_item_data.to_dict() + file_mapping_rules.append(file_mapping_rules_type_0_item) + + else: + file_mapping_rules = self.file_mapping_rules + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "id": id, + "name": name, + "description": description, + "executor": executor, + "childProcessIds": child_process_ids, + "parentProcessIds": parent_process_ids, + "linkedProjectIds": linked_project_ids, + } + ) + if data_type is not UNSET: + field_dict["dataType"] = data_type + if category is not UNSET: + field_dict["category"] = category + if pipeline_type is not UNSET: + field_dict["pipelineType"] = pipeline_type + if documentation_url is not UNSET: + field_dict["documentationUrl"] = documentation_url + if file_requirements_message is not UNSET: + field_dict["fileRequirementsMessage"] = file_requirements_message + if pipeline_code is not UNSET: + field_dict["pipelineCode"] = pipeline_code + if is_tenant_wide is not UNSET: + field_dict["isTenantWide"] = is_tenant_wide + if allow_multiple_sources is not UNSET: + field_dict["allowMultipleSources"] = allow_multiple_sources + if uses_sample_sheet is not UNSET: + field_dict["usesSampleSheet"] = uses_sample_sheet + if custom_settings is not UNSET: + field_dict["customSettings"] = custom_settings + if is_archived is not UNSET: + field_dict["isArchived"] = is_archived + if file_mapping_rules is not UNSET: + field_dict["fileMappingRules"] = file_mapping_rules + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + from ..models.custom_pipeline_settings import CustomPipelineSettings + from ..models.file_mapping_rule import FileMappingRule + from ..models.pipeline_code import PipelineCode + + d = src_dict.copy() + id = d.pop("id") + + name = d.pop("name") + + description = d.pop("description") + + executor = Executor(d.pop("executor")) + + child_process_ids = cast(List[str], d.pop("childProcessIds")) + + parent_process_ids = cast(List[str], d.pop("parentProcessIds")) + + linked_project_ids = cast(List[str], d.pop("linkedProjectIds")) + + def _parse_data_type(data: object) -> Union[None, Unset, str]: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(Union[None, Unset, str], data) + + data_type = _parse_data_type(d.pop("dataType", UNSET)) + + category = d.pop("category", UNSET) + + pipeline_type = d.pop("pipelineType", UNSET) + + def _parse_documentation_url(data: object) -> Union[None, Unset, str]: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(Union[None, Unset, str], data) + + documentation_url = _parse_documentation_url(d.pop("documentationUrl", UNSET)) + + def _parse_file_requirements_message(data: object) -> Union[None, Unset, str]: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(Union[None, Unset, str], data) + + file_requirements_message = _parse_file_requirements_message(d.pop("fileRequirementsMessage", UNSET)) + + def _parse_pipeline_code(data: object) -> Union["PipelineCode", None, Unset]: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + pipeline_code_type_1 = PipelineCode.from_dict(data) + + return pipeline_code_type_1 + except: # noqa: E722 + pass + return cast(Union["PipelineCode", None, Unset], data) + + pipeline_code = _parse_pipeline_code(d.pop("pipelineCode", UNSET)) + + is_tenant_wide = d.pop("isTenantWide", UNSET) + + allow_multiple_sources = d.pop("allowMultipleSources", UNSET) + + uses_sample_sheet = d.pop("usesSampleSheet", UNSET) + + def _parse_custom_settings(data: object) -> Union["CustomPipelineSettings", None, Unset]: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + custom_settings_type_1 = CustomPipelineSettings.from_dict(data) + + return custom_settings_type_1 + except: # noqa: E722 + pass + return cast(Union["CustomPipelineSettings", None, Unset], data) + + custom_settings = _parse_custom_settings(d.pop("customSettings", UNSET)) + + is_archived = d.pop("isArchived", UNSET) + + def _parse_file_mapping_rules(data: object) -> Union[List["FileMappingRule"], None, Unset]: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, list): + raise TypeError() + file_mapping_rules_type_0 = [] + _file_mapping_rules_type_0 = data + for file_mapping_rules_type_0_item_data in _file_mapping_rules_type_0: + file_mapping_rules_type_0_item = FileMappingRule.from_dict(file_mapping_rules_type_0_item_data) + + file_mapping_rules_type_0.append(file_mapping_rules_type_0_item) + + return file_mapping_rules_type_0 + except: # noqa: E722 + pass + return cast(Union[List["FileMappingRule"], None, Unset], data) + + file_mapping_rules = _parse_file_mapping_rules(d.pop("fileMappingRules", UNSET)) + + custom_process_request = cls( + id=id, + name=name, + description=description, + executor=executor, + child_process_ids=child_process_ids, + parent_process_ids=parent_process_ids, + linked_project_ids=linked_project_ids, + data_type=data_type, + category=category, + pipeline_type=pipeline_type, + documentation_url=documentation_url, + file_requirements_message=file_requirements_message, + pipeline_code=pipeline_code, + is_tenant_wide=is_tenant_wide, + allow_multiple_sources=allow_multiple_sources, + uses_sample_sheet=uses_sample_sheet, + custom_settings=custom_settings, + is_archived=is_archived, + file_mapping_rules=file_mapping_rules, + ) + + custom_process_request.additional_properties = d + return custom_process_request + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) diff --git a/cirro_api_client/v1/models/data_file.py b/cirro_api_client/v1/models/data_file.py new file mode 100644 index 0000000..86a00cc --- /dev/null +++ b/cirro_api_client/v1/models/data_file.py @@ -0,0 +1,60 @@ +from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +if TYPE_CHECKING: + from ..models.data_file_metadata import DataFileMetadata + + +T = TypeVar("T", bound="DataFile") + + +@_attrs_define +class DataFile: + """ + Attributes: + path (str): + metadata (DataFileMetadata): + """ + + path: str + metadata: "DataFileMetadata" + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> Dict[str, Any]: + path = self.path + + metadata = self.metadata.to_dict() + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "path": path, + "metadata": metadata, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + from ..models.data_file_metadata import DataFileMetadata + + d = src_dict.copy() + path = d.pop("path") + + metadata = DataFileMetadata.from_dict(d.pop("metadata")) + + data_file = cls( + path=path, + metadata=metadata, + ) + + data_file.additional_properties = d + return data_file + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) diff --git a/cirro_api_client/v1/models/update_user_request_settings.py b/cirro_api_client/v1/models/data_file_metadata.py similarity index 69% rename from cirro_api_client/v1/models/update_user_request_settings.py rename to cirro_api_client/v1/models/data_file_metadata.py index 607c360..1080d87 100644 --- a/cirro_api_client/v1/models/update_user_request_settings.py +++ b/cirro_api_client/v1/models/data_file_metadata.py @@ -3,12 +3,12 @@ from attrs import define as _attrs_define from attrs import field as _attrs_field -T = TypeVar("T", bound="UpdateUserRequestSettings") +T = TypeVar("T", bound="DataFileMetadata") @_attrs_define -class UpdateUserRequestSettings: - """Additional settings for the user""" +class DataFileMetadata: + """ """ additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -22,10 +22,10 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: d = src_dict.copy() - update_user_request_settings = cls() + data_file_metadata = cls() - update_user_request_settings.additional_properties = d - return update_user_request_settings + data_file_metadata.additional_properties = d + return data_file_metadata @property def additional_keys(self) -> List[str]: diff --git a/cirro_api_client/v1/models/governance_requirement.py b/cirro_api_client/v1/models/governance_requirement.py index fd34aa4..e884ad6 100644 --- a/cirro_api_client/v1/models/governance_requirement.py +++ b/cirro_api_client/v1/models/governance_requirement.py @@ -33,6 +33,7 @@ class GovernanceRequirement: created_by (str): created_at (datetime.datetime): updated_at (datetime.datetime): + project_id (Union[Unset, str]): The project ID if the requirement is project scope acceptance (Union[GovernanceScope, None, Unset]): Specifies the level at which it is satisfied enactment_date (Union[None, Unset, datetime.datetime]): The date of enactment for a requirement supplemental_docs (Union[List['GovernanceFile'], None, Unset]): Optional files with extra information, e.g. @@ -54,6 +55,7 @@ class GovernanceRequirement: created_by: str created_at: datetime.datetime updated_at: datetime.datetime + project_id: Union[Unset, str] = UNSET acceptance: Union[GovernanceScope, None, Unset] = UNSET enactment_date: Union[None, Unset, datetime.datetime] = UNSET supplemental_docs: Union[List["GovernanceFile"], None, Unset] = UNSET @@ -87,6 +89,8 @@ def to_dict(self) -> Dict[str, Any]: updated_at = self.updated_at.isoformat() + project_id = self.project_id + acceptance: Union[None, Unset, str] if isinstance(self.acceptance, Unset): acceptance = UNSET @@ -156,6 +160,8 @@ def to_dict(self) -> Dict[str, Any]: "updatedAt": updated_at, } ) + if project_id is not UNSET: + field_dict["projectId"] = project_id if acceptance is not UNSET: field_dict["acceptance"] = acceptance if enactment_date is not UNSET: @@ -199,6 +205,8 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: updated_at = isoparse(d.pop("updatedAt")) + project_id = d.pop("projectId", UNSET) + def _parse_acceptance(data: object) -> Union[GovernanceScope, None, Unset]: if data is None: return data @@ -318,6 +326,7 @@ def _parse_verification_method(data: object) -> Union[GovernanceTrainingVerifica created_by=created_by, created_at=created_at, updated_at=updated_at, + project_id=project_id, acceptance=acceptance, enactment_date=enactment_date, supplemental_docs=supplemental_docs, diff --git a/cirro_api_client/v1/models/process.py b/cirro_api_client/v1/models/process.py index 2da9aca..dade1e0 100644 --- a/cirro_api_client/v1/models/process.py +++ b/cirro_api_client/v1/models/process.py @@ -1,7 +1,9 @@ +import datetime from typing import Any, Dict, List, Type, TypeVar, Union, cast from attrs import define as _attrs_define from attrs import field as _attrs_field +from dateutil.parser import isoparse from ..models.executor import Executor from ..types import UNSET, Unset @@ -11,43 +13,52 @@ @_attrs_define class Process: - """ + """Identifies a data type or pipeline in Cirro + Attributes: id (str): Unique ID of the Process Example: process-hutch-magic_flute-1_0. name (str): Friendly name for the process Example: MAGeCK Flute. executor (Executor): How the workflow is executed - category (str): Category of the process Example: Microbial Analysis. - pipeline_type (str): Type of pipeline Example: nf-core. - description (Union[Unset, str]): Example: MAGeCK Flute enables accurate identification of essential genes with - their related biological functions. + description (Union[Unset, str]): Description of the process Example: MAGeCK Flute enables accurate + identification of essential genes with their related biological functions. data_type (Union[None, Unset, str]): Name of the data type this pipeline produces (if it is not defined, use the name) - documentation_url (Union[Unset, str]): Link to pipeline documentation Example: + category (Union[Unset, str]): Category of the process Example: Microbial Analysis. + pipeline_type (Union[Unset, str]): Type of pipeline Example: nf-core. + documentation_url (Union[Unset, str]): Link to process documentation Example: https://docs.cirro.bio/pipelines/catalog_targeted_sequencing/#crispr-screen-analysis. file_requirements_message (Union[Unset, str]): Description of the files to be uploaded (optional) child_process_ids (Union[Unset, List[str]]): IDs of pipelines that can be run downstream - parent_process_ids (Union[Unset, List[str]]): IDs of pipelines that can run this pipeline - owner (Union[Unset, str]): Username of the pipeline creator (blank if Cirro curated) - linked_project_ids (Union[Unset, List[str]]): Projects that can run this pipeline + parent_process_ids (Union[Unset, List[str]]): IDs of processes that can run this pipeline + owner (Union[None, Unset, str]): Username of the pipeline creator (blank if Cirro curated) + linked_project_ids (Union[Unset, List[str]]): Projects that can run this process + is_tenant_wide (Union[Unset, bool]): Whether the process is shared with the tenant allow_multiple_sources (Union[Unset, bool]): Whether the pipeline is allowed to have multiple dataset sources - is_archived (Union[Unset, bool]): Whether the pipeline is marked as archived + uses_sample_sheet (Union[Unset, bool]): Whether the pipeline uses the Cirro-provided sample sheet + is_archived (Union[Unset, bool]): Whether the process is marked as archived + created_at (Union[Unset, datetime.datetime]): When the process was created (does not reflect the pipeline code) + updated_at (Union[Unset, datetime.datetime]): When the process was updated (does not reflect the pipeline code) """ id: str name: str executor: Executor - category: str - pipeline_type: str description: Union[Unset, str] = UNSET data_type: Union[None, Unset, str] = UNSET + category: Union[Unset, str] = UNSET + pipeline_type: Union[Unset, str] = UNSET documentation_url: Union[Unset, str] = UNSET file_requirements_message: Union[Unset, str] = UNSET child_process_ids: Union[Unset, List[str]] = UNSET parent_process_ids: Union[Unset, List[str]] = UNSET - owner: Union[Unset, str] = UNSET + owner: Union[None, Unset, str] = UNSET linked_project_ids: Union[Unset, List[str]] = UNSET + is_tenant_wide: Union[Unset, bool] = UNSET allow_multiple_sources: Union[Unset, bool] = UNSET + uses_sample_sheet: Union[Unset, bool] = UNSET is_archived: Union[Unset, bool] = UNSET + created_at: Union[Unset, datetime.datetime] = UNSET + updated_at: Union[Unset, datetime.datetime] = UNSET additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> Dict[str, Any]: @@ -57,10 +68,6 @@ def to_dict(self) -> Dict[str, Any]: executor = self.executor.value - category = self.category - - pipeline_type = self.pipeline_type - description = self.description data_type: Union[None, Unset, str] @@ -69,6 +76,10 @@ def to_dict(self) -> Dict[str, Any]: else: data_type = self.data_type + category = self.category + + pipeline_type = self.pipeline_type + documentation_url = self.documentation_url file_requirements_message = self.file_requirements_message @@ -81,16 +92,32 @@ def to_dict(self) -> Dict[str, Any]: if not isinstance(self.parent_process_ids, Unset): parent_process_ids = self.parent_process_ids - owner = self.owner + owner: Union[None, Unset, str] + if isinstance(self.owner, Unset): + owner = UNSET + else: + owner = self.owner linked_project_ids: Union[Unset, List[str]] = UNSET if not isinstance(self.linked_project_ids, Unset): linked_project_ids = self.linked_project_ids + is_tenant_wide = self.is_tenant_wide + allow_multiple_sources = self.allow_multiple_sources + uses_sample_sheet = self.uses_sample_sheet + is_archived = self.is_archived + created_at: Union[Unset, str] = UNSET + if not isinstance(self.created_at, Unset): + created_at = self.created_at.isoformat() + + updated_at: Union[Unset, str] = UNSET + if not isinstance(self.updated_at, Unset): + updated_at = self.updated_at.isoformat() + field_dict: Dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update( @@ -98,14 +125,16 @@ def to_dict(self) -> Dict[str, Any]: "id": id, "name": name, "executor": executor, - "category": category, - "pipelineType": pipeline_type, } ) if description is not UNSET: field_dict["description"] = description if data_type is not UNSET: field_dict["dataType"] = data_type + if category is not UNSET: + field_dict["category"] = category + if pipeline_type is not UNSET: + field_dict["pipelineType"] = pipeline_type if documentation_url is not UNSET: field_dict["documentationUrl"] = documentation_url if file_requirements_message is not UNSET: @@ -118,10 +147,18 @@ def to_dict(self) -> Dict[str, Any]: field_dict["owner"] = owner if linked_project_ids is not UNSET: field_dict["linkedProjectIds"] = linked_project_ids + if is_tenant_wide is not UNSET: + field_dict["isTenantWide"] = is_tenant_wide if allow_multiple_sources is not UNSET: field_dict["allowMultipleSources"] = allow_multiple_sources + if uses_sample_sheet is not UNSET: + field_dict["usesSampleSheet"] = uses_sample_sheet if is_archived is not UNSET: field_dict["isArchived"] = is_archived + if created_at is not UNSET: + field_dict["createdAt"] = created_at + if updated_at is not UNSET: + field_dict["updatedAt"] = updated_at return field_dict @@ -134,10 +171,6 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: executor = Executor(d.pop("executor")) - category = d.pop("category") - - pipeline_type = d.pop("pipelineType") - description = d.pop("description", UNSET) def _parse_data_type(data: object) -> Union[None, Unset, str]: @@ -149,6 +182,10 @@ def _parse_data_type(data: object) -> Union[None, Unset, str]: data_type = _parse_data_type(d.pop("dataType", UNSET)) + category = d.pop("category", UNSET) + + pipeline_type = d.pop("pipelineType", UNSET) + documentation_url = d.pop("documentationUrl", UNSET) file_requirements_message = d.pop("fileRequirementsMessage", UNSET) @@ -157,30 +194,59 @@ def _parse_data_type(data: object) -> Union[None, Unset, str]: parent_process_ids = cast(List[str], d.pop("parentProcessIds", UNSET)) - owner = d.pop("owner", UNSET) + def _parse_owner(data: object) -> Union[None, Unset, str]: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(Union[None, Unset, str], data) + + owner = _parse_owner(d.pop("owner", UNSET)) linked_project_ids = cast(List[str], d.pop("linkedProjectIds", UNSET)) + is_tenant_wide = d.pop("isTenantWide", UNSET) + allow_multiple_sources = d.pop("allowMultipleSources", UNSET) + uses_sample_sheet = d.pop("usesSampleSheet", UNSET) + is_archived = d.pop("isArchived", UNSET) + _created_at = d.pop("createdAt", UNSET) + created_at: Union[Unset, datetime.datetime] + if isinstance(_created_at, Unset): + created_at = UNSET + else: + created_at = isoparse(_created_at) + + _updated_at = d.pop("updatedAt", UNSET) + updated_at: Union[Unset, datetime.datetime] + if isinstance(_updated_at, Unset): + updated_at = UNSET + else: + updated_at = isoparse(_updated_at) + process = cls( id=id, name=name, executor=executor, - category=category, - pipeline_type=pipeline_type, description=description, data_type=data_type, + category=category, + pipeline_type=pipeline_type, documentation_url=documentation_url, file_requirements_message=file_requirements_message, child_process_ids=child_process_ids, parent_process_ids=parent_process_ids, owner=owner, linked_project_ids=linked_project_ids, + is_tenant_wide=is_tenant_wide, allow_multiple_sources=allow_multiple_sources, + uses_sample_sheet=uses_sample_sheet, is_archived=is_archived, + created_at=created_at, + updated_at=updated_at, ) process.additional_properties = d diff --git a/cirro_api_client/v1/models/process_detail.py b/cirro_api_client/v1/models/process_detail.py index 95886ca..0ba00e2 100644 --- a/cirro_api_client/v1/models/process_detail.py +++ b/cirro_api_client/v1/models/process_detail.py @@ -1,7 +1,9 @@ +import datetime from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union, cast from attrs import define as _attrs_define from attrs import field as _attrs_field +from dateutil.parser import isoparse from ..models.executor import Executor from ..types import UNSET, Unset @@ -17,52 +19,58 @@ @_attrs_define class ProcessDetail: - """ + """Identifies a data type or pipeline in Cirro + Attributes: id (str): Unique ID of the Process Example: process-hutch-magic_flute-1_0. name (str): Friendly name for the process Example: MAGeCK Flute. - description (str): Example: MAGeCK Flute enables accurate identification of essential genes with their related - biological functions. executor (Executor): How the workflow is executed - child_process_ids (List[str]): IDs of pipelines that can be run downstream - parent_process_ids (List[str]): IDs of pipelines that can run this pipeline - linked_project_ids (List[str]): Projects that can run this pipeline + linked_project_ids (List[str]): Projects that can run this process + description (Union[Unset, str]): Description of the process Example: MAGeCK Flute enables accurate + identification of essential genes with their related biological functions. data_type (Union[None, Unset, str]): Name of the data type this pipeline produces (if it is not defined, use the name) category (Union[Unset, str]): Category of the process Example: Microbial Analysis. pipeline_type (Union[Unset, str]): Type of pipeline Example: nf-core. - documentation_url (Union[None, Unset, str]): Link to pipeline documentation Example: + child_process_ids (Union[Unset, List[str]]): IDs of pipelines that can be run downstream + parent_process_ids (Union[Unset, List[str]]): IDs of processes that can run this pipeline + documentation_url (Union[Unset, str]): Link to process documentation Example: https://docs.cirro.bio/pipelines/catalog_targeted_sequencing/#crispr-screen-analysis. - file_requirements_message (Union[None, Unset, str]): Description of the files to be uploaded (optional) + file_requirements_message (Union[Unset, str]): Description of the files to be uploaded (optional) pipeline_code (Union['PipelineCode', None, Unset]): owner (Union[None, Unset, str]): Username of the pipeline creator (blank if Cirro curated) - is_tenant_wide (Union[Unset, bool]): Whether the pipeline is available to all projects in the organization + is_tenant_wide (Union[Unset, bool]): Whether the process is shared with the tenant allow_multiple_sources (Union[Unset, bool]): Whether the pipeline is allowed to have multiple dataset sources + uses_sample_sheet (Union[Unset, bool]): Whether the pipeline uses the Cirro-provided sample sheet custom_settings (Union['CustomPipelineSettings', None, Unset]): - is_archived (Union[Unset, bool]): Whether the process is marked for removal - file_mapping_rules (Union[List['FileMappingRule'], None, Unset]): Describes the files that this dataset type - expects. + is_archived (Union[Unset, bool]): Whether the process is marked as archived + file_mapping_rules (Union[List['FileMappingRule'], None, Unset]): + created_at (Union[Unset, datetime.datetime]): When the process was created (does not reflect the pipeline code) + updated_at (Union[Unset, datetime.datetime]): When the process was updated (does not reflect the pipeline code) """ id: str name: str - description: str executor: Executor - child_process_ids: List[str] - parent_process_ids: List[str] linked_project_ids: List[str] + description: Union[Unset, str] = UNSET data_type: Union[None, Unset, str] = UNSET category: Union[Unset, str] = UNSET pipeline_type: Union[Unset, str] = UNSET - documentation_url: Union[None, Unset, str] = UNSET - file_requirements_message: Union[None, Unset, str] = UNSET + child_process_ids: Union[Unset, List[str]] = UNSET + parent_process_ids: Union[Unset, List[str]] = UNSET + documentation_url: Union[Unset, str] = UNSET + file_requirements_message: Union[Unset, str] = UNSET pipeline_code: Union["PipelineCode", None, Unset] = UNSET owner: Union[None, Unset, str] = UNSET is_tenant_wide: Union[Unset, bool] = UNSET allow_multiple_sources: Union[Unset, bool] = UNSET + uses_sample_sheet: Union[Unset, bool] = UNSET custom_settings: Union["CustomPipelineSettings", None, Unset] = UNSET is_archived: Union[Unset, bool] = UNSET file_mapping_rules: Union[List["FileMappingRule"], None, Unset] = UNSET + created_at: Union[Unset, datetime.datetime] = UNSET + updated_at: Union[Unset, datetime.datetime] = UNSET additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> Dict[str, Any]: @@ -73,16 +81,12 @@ def to_dict(self) -> Dict[str, Any]: name = self.name - description = self.description - executor = self.executor.value - child_process_ids = self.child_process_ids - - parent_process_ids = self.parent_process_ids - linked_project_ids = self.linked_project_ids + description = self.description + data_type: Union[None, Unset, str] if isinstance(self.data_type, Unset): data_type = UNSET @@ -93,17 +97,17 @@ def to_dict(self) -> Dict[str, Any]: pipeline_type = self.pipeline_type - documentation_url: Union[None, Unset, str] - if isinstance(self.documentation_url, Unset): - documentation_url = UNSET - else: - documentation_url = self.documentation_url + child_process_ids: Union[Unset, List[str]] = UNSET + if not isinstance(self.child_process_ids, Unset): + child_process_ids = self.child_process_ids - file_requirements_message: Union[None, Unset, str] - if isinstance(self.file_requirements_message, Unset): - file_requirements_message = UNSET - else: - file_requirements_message = self.file_requirements_message + parent_process_ids: Union[Unset, List[str]] = UNSET + if not isinstance(self.parent_process_ids, Unset): + parent_process_ids = self.parent_process_ids + + documentation_url = self.documentation_url + + file_requirements_message = self.file_requirements_message pipeline_code: Union[Dict[str, Any], None, Unset] if isinstance(self.pipeline_code, Unset): @@ -123,6 +127,8 @@ def to_dict(self) -> Dict[str, Any]: allow_multiple_sources = self.allow_multiple_sources + uses_sample_sheet = self.uses_sample_sheet + custom_settings: Union[Dict[str, Any], None, Unset] if isinstance(self.custom_settings, Unset): custom_settings = UNSET @@ -145,25 +151,36 @@ def to_dict(self) -> Dict[str, Any]: else: file_mapping_rules = self.file_mapping_rules + created_at: Union[Unset, str] = UNSET + if not isinstance(self.created_at, Unset): + created_at = self.created_at.isoformat() + + updated_at: Union[Unset, str] = UNSET + if not isinstance(self.updated_at, Unset): + updated_at = self.updated_at.isoformat() + field_dict: Dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update( { "id": id, "name": name, - "description": description, "executor": executor, - "childProcessIds": child_process_ids, - "parentProcessIds": parent_process_ids, "linkedProjectIds": linked_project_ids, } ) + if description is not UNSET: + field_dict["description"] = description if data_type is not UNSET: field_dict["dataType"] = data_type if category is not UNSET: field_dict["category"] = category if pipeline_type is not UNSET: field_dict["pipelineType"] = pipeline_type + if child_process_ids is not UNSET: + field_dict["childProcessIds"] = child_process_ids + if parent_process_ids is not UNSET: + field_dict["parentProcessIds"] = parent_process_ids if documentation_url is not UNSET: field_dict["documentationUrl"] = documentation_url if file_requirements_message is not UNSET: @@ -176,12 +193,18 @@ def to_dict(self) -> Dict[str, Any]: field_dict["isTenantWide"] = is_tenant_wide if allow_multiple_sources is not UNSET: field_dict["allowMultipleSources"] = allow_multiple_sources + if uses_sample_sheet is not UNSET: + field_dict["usesSampleSheet"] = uses_sample_sheet if custom_settings is not UNSET: field_dict["customSettings"] = custom_settings if is_archived is not UNSET: field_dict["isArchived"] = is_archived if file_mapping_rules is not UNSET: field_dict["fileMappingRules"] = file_mapping_rules + if created_at is not UNSET: + field_dict["createdAt"] = created_at + if updated_at is not UNSET: + field_dict["updatedAt"] = updated_at return field_dict @@ -196,16 +219,12 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: name = d.pop("name") - description = d.pop("description") - executor = Executor(d.pop("executor")) - child_process_ids = cast(List[str], d.pop("childProcessIds")) - - parent_process_ids = cast(List[str], d.pop("parentProcessIds")) - linked_project_ids = cast(List[str], d.pop("linkedProjectIds")) + description = d.pop("description", UNSET) + def _parse_data_type(data: object) -> Union[None, Unset, str]: if data is None: return data @@ -219,23 +238,13 @@ def _parse_data_type(data: object) -> Union[None, Unset, str]: pipeline_type = d.pop("pipelineType", UNSET) - def _parse_documentation_url(data: object) -> Union[None, Unset, str]: - if data is None: - return data - if isinstance(data, Unset): - return data - return cast(Union[None, Unset, str], data) + child_process_ids = cast(List[str], d.pop("childProcessIds", UNSET)) - documentation_url = _parse_documentation_url(d.pop("documentationUrl", UNSET)) + parent_process_ids = cast(List[str], d.pop("parentProcessIds", UNSET)) - def _parse_file_requirements_message(data: object) -> Union[None, Unset, str]: - if data is None: - return data - if isinstance(data, Unset): - return data - return cast(Union[None, Unset, str], data) + documentation_url = d.pop("documentationUrl", UNSET) - file_requirements_message = _parse_file_requirements_message(d.pop("fileRequirementsMessage", UNSET)) + file_requirements_message = d.pop("fileRequirementsMessage", UNSET) def _parse_pipeline_code(data: object) -> Union["PipelineCode", None, Unset]: if data is None: @@ -267,6 +276,8 @@ def _parse_owner(data: object) -> Union[None, Unset, str]: allow_multiple_sources = d.pop("allowMultipleSources", UNSET) + uses_sample_sheet = d.pop("usesSampleSheet", UNSET) + def _parse_custom_settings(data: object) -> Union["CustomPipelineSettings", None, Unset]: if data is None: return data @@ -308,26 +319,43 @@ def _parse_file_mapping_rules(data: object) -> Union[List["FileMappingRule"], No file_mapping_rules = _parse_file_mapping_rules(d.pop("fileMappingRules", UNSET)) + _created_at = d.pop("createdAt", UNSET) + created_at: Union[Unset, datetime.datetime] + if isinstance(_created_at, Unset): + created_at = UNSET + else: + created_at = isoparse(_created_at) + + _updated_at = d.pop("updatedAt", UNSET) + updated_at: Union[Unset, datetime.datetime] + if isinstance(_updated_at, Unset): + updated_at = UNSET + else: + updated_at = isoparse(_updated_at) + process_detail = cls( id=id, name=name, - description=description, executor=executor, - child_process_ids=child_process_ids, - parent_process_ids=parent_process_ids, linked_project_ids=linked_project_ids, + description=description, data_type=data_type, category=category, pipeline_type=pipeline_type, + child_process_ids=child_process_ids, + parent_process_ids=parent_process_ids, documentation_url=documentation_url, file_requirements_message=file_requirements_message, pipeline_code=pipeline_code, owner=owner, is_tenant_wide=is_tenant_wide, allow_multiple_sources=allow_multiple_sources, + uses_sample_sheet=uses_sample_sheet, custom_settings=custom_settings, is_archived=is_archived, file_mapping_rules=file_mapping_rules, + created_at=created_at, + updated_at=updated_at, ) process_detail.additional_properties = d diff --git a/cirro_api_client/v1/models/requirement_fulfillment_input.py b/cirro_api_client/v1/models/requirement_fulfillment_input.py index e47a7f3..f2fdd8d 100644 --- a/cirro_api_client/v1/models/requirement_fulfillment_input.py +++ b/cirro_api_client/v1/models/requirement_fulfillment_input.py @@ -1,7 +1,9 @@ +import datetime from typing import Any, Dict, List, Type, TypeVar, Union, cast from attrs import define as _attrs_define from attrs import field as _attrs_field +from dateutil.parser import isoparse from ..types import UNSET, Unset @@ -13,9 +15,11 @@ class RequirementFulfillmentInput: """ Attributes: file (Union[None, Unset, str]): + completed_on (Union[None, Unset, datetime.datetime]): If not provided, defaults to the current instant """ file: Union[None, Unset, str] = UNSET + completed_on: Union[None, Unset, datetime.datetime] = UNSET additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> Dict[str, Any]: @@ -25,11 +29,21 @@ def to_dict(self) -> Dict[str, Any]: else: file = self.file + completed_on: Union[None, Unset, str] + if isinstance(self.completed_on, Unset): + completed_on = UNSET + elif isinstance(self.completed_on, datetime.datetime): + completed_on = self.completed_on.isoformat() + else: + completed_on = self.completed_on + field_dict: Dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({}) if file is not UNSET: field_dict["file"] = file + if completed_on is not UNSET: + field_dict["completedOn"] = completed_on return field_dict @@ -46,8 +60,26 @@ def _parse_file(data: object) -> Union[None, Unset, str]: file = _parse_file(d.pop("file", UNSET)) + def _parse_completed_on(data: object) -> Union[None, Unset, datetime.datetime]: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, str): + raise TypeError() + completed_on_type_0 = isoparse(data) + + return completed_on_type_0 + except: # noqa: E722 + pass + return cast(Union[None, Unset, datetime.datetime], data) + + completed_on = _parse_completed_on(d.pop("completedOn", UNSET)) + requirement_fulfillment_input = cls( file=file, + completed_on=completed_on, ) requirement_fulfillment_input.additional_properties = d diff --git a/cirro_api_client/v1/models/requirement_input.py b/cirro_api_client/v1/models/requirement_input.py index 051c33f..ba13e0f 100644 --- a/cirro_api_client/v1/models/requirement_input.py +++ b/cirro_api_client/v1/models/requirement_input.py @@ -28,6 +28,7 @@ class RequirementInput: scope (GovernanceScope): The levels at which governance requirements can be enforced contact_ids (List[str]): expiration (GovernanceExpiry): + project_id (Union[None, Unset, str]): acceptance (Union[GovernanceScope, None, Unset]): enactment_date (Union[None, Unset, datetime.datetime]): supplemental_docs (Union[List['GovernanceFile'], None, Unset]): @@ -42,6 +43,7 @@ class RequirementInput: scope: GovernanceScope contact_ids: List[str] expiration: "GovernanceExpiry" + project_id: Union[None, Unset, str] = UNSET acceptance: Union[GovernanceScope, None, Unset] = UNSET enactment_date: Union[None, Unset, datetime.datetime] = UNSET supplemental_docs: Union[List["GovernanceFile"], None, Unset] = UNSET @@ -65,6 +67,12 @@ def to_dict(self) -> Dict[str, Any]: expiration = self.expiration.to_dict() + project_id: Union[None, Unset, str] + if isinstance(self.project_id, Unset): + project_id = UNSET + else: + project_id = self.project_id + acceptance: Union[None, Unset, str] if isinstance(self.acceptance, Unset): acceptance = UNSET @@ -129,6 +137,8 @@ def to_dict(self) -> Dict[str, Any]: "expiration": expiration, } ) + if project_id is not UNSET: + field_dict["projectId"] = project_id if acceptance is not UNSET: field_dict["acceptance"] = acceptance if enactment_date is not UNSET: @@ -162,6 +172,15 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: expiration = GovernanceExpiry.from_dict(d.pop("expiration")) + def _parse_project_id(data: object) -> Union[None, Unset, str]: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(Union[None, Unset, str], data) + + project_id = _parse_project_id(d.pop("projectId", UNSET)) + def _parse_acceptance(data: object) -> Union[GovernanceScope, None, Unset]: if data is None: return data @@ -276,6 +295,7 @@ def _parse_verification_method(data: object) -> Union[GovernanceTrainingVerifica scope=scope, contact_ids=contact_ids, expiration=expiration, + project_id=project_id, acceptance=acceptance, enactment_date=enactment_date, supplemental_docs=supplemental_docs, diff --git a/cirro_api_client/v1/models/run_analysis_request.py b/cirro_api_client/v1/models/run_analysis_request.py index 023fa02..3025a3b 100644 --- a/cirro_api_client/v1/models/run_analysis_request.py +++ b/cirro_api_client/v1/models/run_analysis_request.py @@ -22,6 +22,8 @@ class RunAnalysisRequest: params (RunAnalysisRequestParams): Parameters used in workflow (can be empty) notification_emails (List[str]): Emails to notify upon workflow success or failure description (Union[None, Unset, str]): Description of the dataset (optional) + source_sample_ids (Union[List[str], None, Unset]): Samples within the source datasets that will be used as + inputs to this workflow. If not specified, all samples will be used. resume_dataset_id (Union[None, Unset, str]): Used for caching task execution. If the parameters are the same as the dataset specified here, it will re-use the output to minimize duplicate work compute_environment_id (Union[None, Unset, str]): The compute environment where to run the workflow, if not @@ -34,6 +36,7 @@ class RunAnalysisRequest: params: "RunAnalysisRequestParams" notification_emails: List[str] description: Union[None, Unset, str] = UNSET + source_sample_ids: Union[List[str], None, Unset] = UNSET resume_dataset_id: Union[None, Unset, str] = UNSET compute_environment_id: Union[None, Unset, str] = UNSET additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -55,6 +58,15 @@ def to_dict(self) -> Dict[str, Any]: else: description = self.description + source_sample_ids: Union[List[str], None, Unset] + if isinstance(self.source_sample_ids, Unset): + source_sample_ids = UNSET + elif isinstance(self.source_sample_ids, list): + source_sample_ids = self.source_sample_ids + + else: + source_sample_ids = self.source_sample_ids + resume_dataset_id: Union[None, Unset, str] if isinstance(self.resume_dataset_id, Unset): resume_dataset_id = UNSET @@ -80,6 +92,8 @@ def to_dict(self) -> Dict[str, Any]: ) if description is not UNSET: field_dict["description"] = description + if source_sample_ids is not UNSET: + field_dict["sourceSampleIds"] = source_sample_ids if resume_dataset_id is not UNSET: field_dict["resumeDatasetId"] = resume_dataset_id if compute_environment_id is not UNSET: @@ -111,6 +125,23 @@ def _parse_description(data: object) -> Union[None, Unset, str]: description = _parse_description(d.pop("description", UNSET)) + def _parse_source_sample_ids(data: object) -> Union[List[str], None, Unset]: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, list): + raise TypeError() + source_sample_ids_type_0 = cast(List[str], data) + + return source_sample_ids_type_0 + except: # noqa: E722 + pass + return cast(Union[List[str], None, Unset], data) + + source_sample_ids = _parse_source_sample_ids(d.pop("sourceSampleIds", UNSET)) + def _parse_resume_dataset_id(data: object) -> Union[None, Unset, str]: if data is None: return data @@ -136,6 +167,7 @@ def _parse_compute_environment_id(data: object) -> Union[None, Unset, str]: params=params, notification_emails=notification_emails, description=description, + source_sample_ids=source_sample_ids, resume_dataset_id=resume_dataset_id, compute_environment_id=compute_environment_id, ) diff --git a/cirro_api_client/v1/models/sample.py b/cirro_api_client/v1/models/sample.py index c490dc4..572e3e8 100644 --- a/cirro_api_client/v1/models/sample.py +++ b/cirro_api_client/v1/models/sample.py @@ -8,6 +8,7 @@ from ..types import UNSET, Unset if TYPE_CHECKING: + from ..models.data_file import DataFile from ..models.sample_metadata import SampleMetadata @@ -21,6 +22,7 @@ class Sample: id (str): name (str): metadata (Union['SampleMetadata', None, Unset]): + files (Union[List['DataFile'], None, Unset]): Files associated with this sample dataset_ids (Union[List[str], None, Unset]): created_at (Union[None, Unset, datetime.datetime]): updated_at (Union[None, Unset, datetime.datetime]): @@ -29,6 +31,7 @@ class Sample: id: str name: str metadata: Union["SampleMetadata", None, Unset] = UNSET + files: Union[List["DataFile"], None, Unset] = UNSET dataset_ids: Union[List[str], None, Unset] = UNSET created_at: Union[None, Unset, datetime.datetime] = UNSET updated_at: Union[None, Unset, datetime.datetime] = UNSET @@ -49,6 +52,18 @@ def to_dict(self) -> Dict[str, Any]: else: metadata = self.metadata + files: Union[List[Dict[str, Any]], None, Unset] + if isinstance(self.files, Unset): + files = UNSET + elif isinstance(self.files, list): + files = [] + for files_type_0_item_data in self.files: + files_type_0_item = files_type_0_item_data.to_dict() + files.append(files_type_0_item) + + else: + files = self.files + dataset_ids: Union[List[str], None, Unset] if isinstance(self.dataset_ids, Unset): dataset_ids = UNSET @@ -84,6 +99,8 @@ def to_dict(self) -> Dict[str, Any]: ) if metadata is not UNSET: field_dict["metadata"] = metadata + if files is not UNSET: + field_dict["files"] = files if dataset_ids is not UNSET: field_dict["datasetIds"] = dataset_ids if created_at is not UNSET: @@ -95,6 +112,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + from ..models.data_file import DataFile from ..models.sample_metadata import SampleMetadata d = src_dict.copy() @@ -119,6 +137,28 @@ def _parse_metadata(data: object) -> Union["SampleMetadata", None, Unset]: metadata = _parse_metadata(d.pop("metadata", UNSET)) + def _parse_files(data: object) -> Union[List["DataFile"], None, Unset]: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, list): + raise TypeError() + files_type_0 = [] + _files_type_0 = data + for files_type_0_item_data in _files_type_0: + files_type_0_item = DataFile.from_dict(files_type_0_item_data) + + files_type_0.append(files_type_0_item) + + return files_type_0 + except: # noqa: E722 + pass + return cast(Union[List["DataFile"], None, Unset], data) + + files = _parse_files(d.pop("files", UNSET)) + def _parse_dataset_ids(data: object) -> Union[List[str], None, Unset]: if data is None: return data @@ -174,6 +214,7 @@ def _parse_updated_at(data: object) -> Union[None, Unset, datetime.datetime]: id=id, name=name, metadata=metadata, + files=files, dataset_ids=dataset_ids, created_at=created_at, updated_at=updated_at, diff --git a/cirro_api_client/v1/models/update_user_request.py b/cirro_api_client/v1/models/update_user_request.py index b2d6f10..cbfc203 100644 --- a/cirro_api_client/v1/models/update_user_request.py +++ b/cirro_api_client/v1/models/update_user_request.py @@ -6,7 +6,7 @@ from ..types import UNSET, Unset if TYPE_CHECKING: - from ..models.update_user_request_settings import UpdateUserRequestSettings + from ..models.user_settings import UserSettings T = TypeVar("T", bound="UpdateUserRequest") @@ -20,8 +20,9 @@ class UpdateUserRequest: email (str): Email address of the user phone (Union[Unset, str]): Phone number of the user department (Union[Unset, str]): Department or lab the user belongs to + job_title (Union[Unset, str]): Job title or role of the user organization (Union[Unset, str]): The organization the user belongs to, only editable by administrators - settings (Union[Unset, UpdateUserRequestSettings]): Additional settings for the user + settings (Union['UserSettings', None, Unset]): groups (Union[Unset, List[str]]): Groups the user belongs to, only editable by administrators """ @@ -29,12 +30,15 @@ class UpdateUserRequest: email: str phone: Union[Unset, str] = UNSET department: Union[Unset, str] = UNSET + job_title: Union[Unset, str] = UNSET organization: Union[Unset, str] = UNSET - settings: Union[Unset, "UpdateUserRequestSettings"] = UNSET + settings: Union["UserSettings", None, Unset] = UNSET groups: Union[Unset, List[str]] = UNSET additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> Dict[str, Any]: + from ..models.user_settings import UserSettings + name = self.name email = self.email @@ -43,11 +47,17 @@ def to_dict(self) -> Dict[str, Any]: department = self.department + job_title = self.job_title + organization = self.organization - settings: Union[Unset, Dict[str, Any]] = UNSET - if not isinstance(self.settings, Unset): + settings: Union[Dict[str, Any], None, Unset] + if isinstance(self.settings, Unset): + settings = UNSET + elif isinstance(self.settings, UserSettings): settings = self.settings.to_dict() + else: + settings = self.settings groups: Union[Unset, List[str]] = UNSET if not isinstance(self.groups, Unset): @@ -65,6 +75,8 @@ def to_dict(self) -> Dict[str, Any]: field_dict["phone"] = phone if department is not UNSET: field_dict["department"] = department + if job_title is not UNSET: + field_dict["jobTitle"] = job_title if organization is not UNSET: field_dict["organization"] = organization if settings is not UNSET: @@ -76,7 +88,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - from ..models.update_user_request_settings import UpdateUserRequestSettings + from ..models.user_settings import UserSettings d = src_dict.copy() name = d.pop("name") @@ -87,14 +99,26 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: department = d.pop("department", UNSET) + job_title = d.pop("jobTitle", UNSET) + organization = d.pop("organization", UNSET) - _settings = d.pop("settings", UNSET) - settings: Union[Unset, UpdateUserRequestSettings] - if isinstance(_settings, Unset): - settings = UNSET - else: - settings = UpdateUserRequestSettings.from_dict(_settings) + def _parse_settings(data: object) -> Union["UserSettings", None, Unset]: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + settings_type_1 = UserSettings.from_dict(data) + + return settings_type_1 + except: # noqa: E722 + pass + return cast(Union["UserSettings", None, Unset], data) + + settings = _parse_settings(d.pop("settings", UNSET)) groups = cast(List[str], d.pop("groups", UNSET)) @@ -103,6 +127,7 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: email=email, phone=phone, department=department, + job_title=job_title, organization=organization, settings=settings, groups=groups, diff --git a/cirro_api_client/v1/models/user_detail.py b/cirro_api_client/v1/models/user_detail.py index 852c370..88ed2a2 100644 --- a/cirro_api_client/v1/models/user_detail.py +++ b/cirro_api_client/v1/models/user_detail.py @@ -9,6 +9,7 @@ if TYPE_CHECKING: from ..models.user_project_assignment import UserProjectAssignment + from ..models.user_settings import UserSettings T = TypeVar("T", bound="UserDetail") @@ -23,10 +24,12 @@ class UserDetail: phone (str): email (str): organization (str): + job_title (str): department (str): invited_by (str): project_assignments (List['UserProjectAssignment']): groups (List[str]): + settings (UserSettings): Additional settings for the user sign_up_time (Union[None, Unset, datetime.datetime]): """ @@ -35,10 +38,12 @@ class UserDetail: phone: str email: str organization: str + job_title: str department: str invited_by: str project_assignments: List["UserProjectAssignment"] groups: List[str] + settings: "UserSettings" sign_up_time: Union[None, Unset, datetime.datetime] = UNSET additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -53,6 +58,8 @@ def to_dict(self) -> Dict[str, Any]: organization = self.organization + job_title = self.job_title + department = self.department invited_by = self.invited_by @@ -64,6 +71,8 @@ def to_dict(self) -> Dict[str, Any]: groups = self.groups + settings = self.settings.to_dict() + sign_up_time: Union[None, Unset, str] if isinstance(self.sign_up_time, Unset): sign_up_time = UNSET @@ -81,10 +90,12 @@ def to_dict(self) -> Dict[str, Any]: "phone": phone, "email": email, "organization": organization, + "jobTitle": job_title, "department": department, "invitedBy": invited_by, "projectAssignments": project_assignments, "groups": groups, + "settings": settings, } ) if sign_up_time is not UNSET: @@ -95,6 +106,7 @@ def to_dict(self) -> Dict[str, Any]: @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: from ..models.user_project_assignment import UserProjectAssignment + from ..models.user_settings import UserSettings d = src_dict.copy() username = d.pop("username") @@ -107,6 +119,8 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: organization = d.pop("organization") + job_title = d.pop("jobTitle") + department = d.pop("department") invited_by = d.pop("invitedBy") @@ -120,6 +134,8 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: groups = cast(List[str], d.pop("groups")) + settings = UserSettings.from_dict(d.pop("settings")) + def _parse_sign_up_time(data: object) -> Union[None, Unset, datetime.datetime]: if data is None: return data @@ -143,10 +159,12 @@ def _parse_sign_up_time(data: object) -> Union[None, Unset, datetime.datetime]: phone=phone, email=email, organization=organization, + job_title=job_title, department=department, invited_by=invited_by, project_assignments=project_assignments, groups=groups, + settings=settings, sign_up_time=sign_up_time, ) diff --git a/cirro_api_client/v1/models/user_settings.py b/cirro_api_client/v1/models/user_settings.py new file mode 100644 index 0000000..13a83aa --- /dev/null +++ b/cirro_api_client/v1/models/user_settings.py @@ -0,0 +1,47 @@ +from typing import Any, Dict, List, Type, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="UserSettings") + + +@_attrs_define +class UserSettings: + """Additional settings for the user + + Attributes: + analysis_update_notifications_enabled (bool): + """ + + analysis_update_notifications_enabled: bool + additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> Dict[str, Any]: + analysis_update_notifications_enabled = self.analysis_update_notifications_enabled + + field_dict: Dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "analysisUpdateNotificationsEnabled": analysis_update_notifications_enabled, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + d = src_dict.copy() + analysis_update_notifications_enabled = d.pop("analysisUpdateNotificationsEnabled") + + user_settings = cls( + analysis_update_notifications_enabled=analysis_update_notifications_enabled, + ) + + user_settings.additional_properties = d + return user_settings + + @property + def additional_keys(self) -> List[str]: + return list(self.additional_properties.keys()) diff --git a/poetry.lock b/poetry.lock index 932dd13..d1708f1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 2.1.2 and should not be changed by hand. [[package]] name = "annotated-types" @@ -6,34 +6,33 @@ version = "0.7.0" description = "Reusable constraint types to use with typing.Annotated" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] -[package.dependencies] -typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} - [[package]] name = "anyio" -version = "4.5.2" +version = "4.9.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["main", "dev"] files = [ - {file = "anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f"}, - {file = "anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b"}, + {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, + {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] trio = ["trio (>=0.26.1)"] [[package]] @@ -42,28 +41,30 @@ version = "25.3.0" description = "Classes Without Boilerplate" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"}, {file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"}, ] [package.extras] -benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +benchmark = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +cov = ["cloudpickle ; platform_python_implementation == \"CPython\"", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +dev = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pre-commit-uv", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier"] -tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] -tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] +tests = ["cloudpickle ; platform_python_implementation == \"CPython\"", "hypothesis", "mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.11.1) ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\"", "pytest-mypy-plugins ; platform_python_implementation == \"CPython\" and python_version >= \"3.10\""] [[package]] name = "certifi" -version = "2025.1.31" +version = "2025.4.26" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ - {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, - {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, + {file = "certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3"}, + {file = "certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6"}, ] [[package]] @@ -72,6 +73,7 @@ version = "8.1.8" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2"}, {file = "click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a"}, @@ -86,6 +88,8 @@ version = "0.4.6" description = "Cross-platform colored terminal text." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "sys_platform == \"win32\" or platform_system == \"Windows\"" files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, @@ -97,6 +101,8 @@ version = "1.2.2" description = "Backport of PEP 654 (exception groups)" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] +markers = "python_version < \"3.11\"" files = [ {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, @@ -107,29 +113,31 @@ test = ["pytest (>=6)"] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" +groups = ["main", "dev"] files = [ - {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, - {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, + {file = "h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86"}, + {file = "h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1"}, ] [[package]] name = "httpcore" -version = "1.0.7" +version = "1.0.9" description = "A minimal low-level HTTP client." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ - {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, - {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, + {file = "httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55"}, + {file = "httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8"}, ] [package.dependencies] certifi = "*" -h11 = ">=0.13,<0.15" +h11 = ">=0.16" [package.extras] asyncio = ["anyio (>=4.0,<5.0)"] @@ -143,6 +151,7 @@ version = "0.26.0" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, @@ -156,7 +165,7 @@ idna = "*" sniffio = "*" [package.extras] -brotli = ["brotli", "brotlicffi"] +brotli = ["brotli ; platform_python_implementation == \"CPython\"", "brotlicffi ; platform_python_implementation != \"CPython\""] cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] http2 = ["h2 (>=3,<5)"] socks = ["socksio (==1.*)"] @@ -167,6 +176,7 @@ version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" +groups = ["main", "dev"] files = [ {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, @@ -181,6 +191,7 @@ version = "2.1.0" description = "brain-dead simple config-ini parsing" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760"}, {file = "iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7"}, @@ -192,6 +203,7 @@ version = "3.1.6" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67"}, {file = "jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d"}, @@ -205,71 +217,73 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "markupsafe" -version = "2.1.5" +version = "3.0.2" description = "Safely add untrusted strings to HTML/XML markup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, - {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, - {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, - {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, - {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, - {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, - {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, - {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, + {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, + {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, + {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, + {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, + {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, + {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, + {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, ] [[package]] @@ -278,6 +292,7 @@ version = "0.17.3" description = "Generate modern Python clients from OpenAPI" optional = false python-versions = "<4.0,>=3.8" +groups = ["dev"] files = [ {file = "openapi_python_client-0.17.3-py3-none-any.whl", hash = "sha256:b09811136d516402944764aa6d210315db0ab9cad9367acc653fac4a96d9736a"}, {file = "openapi_python_client-0.17.3.tar.gz", hash = "sha256:ff6d404e72d316d2a4ebfac72be69156028824f19d257aa3e8c7db5d766982dc"}, @@ -298,13 +313,14 @@ typing-extensions = ">=4.8.0,<5.0.0" [[package]] name = "packaging" -version = "24.2" +version = "25.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ - {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, - {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, + {file = "packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484"}, + {file = "packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f"}, ] [[package]] @@ -313,6 +329,7 @@ version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, @@ -324,131 +341,133 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pydantic" -version = "2.10.6" +version = "2.11.4" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, - {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, + {file = "pydantic-2.11.4-py3-none-any.whl", hash = "sha256:d9615eaa9ac5a063471da949c8fc16376a84afb5024688b3ff885693506764eb"}, + {file = "pydantic-2.11.4.tar.gz", hash = "sha256:32738d19d63a226a52eed76645a98ee07c1f410ee41d93b4afbfa85ed8111c2d"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.27.2" +pydantic-core = "2.33.2" typing-extensions = ">=4.12.2" +typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] -timezone = ["tzdata"] +timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows\""] [[package]] name = "pydantic-core" -version = "2.27.2" +version = "2.33.2" description = "Core functionality for Pydantic validation and serialization" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" +groups = ["dev"] files = [ - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, - {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, - {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, - {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, - {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, - {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, - {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, - {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, - {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, - {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, - {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, - {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, - {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, - {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, - {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, - {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, - {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, - {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, - {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, - {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, - {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, - {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, - {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, - {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, - {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, - {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, + {file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8"}, + {file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2"}, + {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a"}, + {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b"}, + {file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22"}, + {file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640"}, + {file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7"}, + {file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef"}, + {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30"}, + {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab"}, + {file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65"}, + {file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc"}, + {file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1"}, + {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6"}, + {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2"}, + {file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab"}, + {file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f"}, + {file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d"}, + {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e"}, + {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9"}, + {file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5"}, + {file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d"}, + {file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3"}, + {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e"}, + {file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9"}, + {file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c"}, + {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb"}, + {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039"}, + {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27"}, + {file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc"}, ] [package.dependencies] @@ -460,6 +479,7 @@ version = "8.3.5" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820"}, {file = "pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845"}, @@ -482,6 +502,7 @@ version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, @@ -496,6 +517,7 @@ version = "6.0.2" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.8" +groups = ["dev"] files = [ {file = "PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086"}, {file = "PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf"}, @@ -554,29 +576,30 @@ files = [ [[package]] name = "ruff" -version = "0.11.2" +version = "0.11.8" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ - {file = "ruff-0.11.2-py3-none-linux_armv6l.whl", hash = "sha256:c69e20ea49e973f3afec2c06376eb56045709f0212615c1adb0eda35e8a4e477"}, - {file = "ruff-0.11.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2c5424cc1c4eb1d8ecabe6d4f1b70470b4f24a0c0171356290b1953ad8f0e272"}, - {file = "ruff-0.11.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:ecf20854cc73f42171eedb66f006a43d0a21bfb98a2523a809931cda569552d9"}, - {file = "ruff-0.11.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c543bf65d5d27240321604cee0633a70c6c25c9a2f2492efa9f6d4b8e4199bb"}, - {file = "ruff-0.11.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20967168cc21195db5830b9224be0e964cc9c8ecf3b5a9e3ce19876e8d3a96e3"}, - {file = "ruff-0.11.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:955a9ce63483999d9f0b8f0b4a3ad669e53484232853054cc8b9d51ab4c5de74"}, - {file = "ruff-0.11.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:86b3a27c38b8fce73bcd262b0de32e9a6801b76d52cdb3ae4c914515f0cef608"}, - {file = "ruff-0.11.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3b66a03b248c9fcd9d64d445bafdf1589326bee6fc5c8e92d7562e58883e30f"}, - {file = "ruff-0.11.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0397c2672db015be5aa3d4dac54c69aa012429097ff219392c018e21f5085147"}, - {file = "ruff-0.11.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:869bcf3f9abf6457fbe39b5a37333aa4eecc52a3b99c98827ccc371a8e5b6f1b"}, - {file = "ruff-0.11.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:2a2b50ca35457ba785cd8c93ebbe529467594087b527a08d487cf0ee7b3087e9"}, - {file = "ruff-0.11.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7c69c74bf53ddcfbc22e6eb2f31211df7f65054bfc1f72288fc71e5f82db3eab"}, - {file = "ruff-0.11.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6e8fb75e14560f7cf53b15bbc55baf5ecbe373dd5f3aab96ff7aa7777edd7630"}, - {file = "ruff-0.11.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:842a472d7b4d6f5924e9297aa38149e5dcb1e628773b70e6387ae2c97a63c58f"}, - {file = "ruff-0.11.2-py3-none-win32.whl", hash = "sha256:aca01ccd0eb5eb7156b324cfaa088586f06a86d9e5314b0eb330cb48415097cc"}, - {file = "ruff-0.11.2-py3-none-win_amd64.whl", hash = "sha256:3170150172a8f994136c0c66f494edf199a0bbea7a409f649e4bc8f4d7084080"}, - {file = "ruff-0.11.2-py3-none-win_arm64.whl", hash = "sha256:52933095158ff328f4c77af3d74f0379e34fd52f175144cefc1b192e7ccd32b4"}, - {file = "ruff-0.11.2.tar.gz", hash = "sha256:ec47591497d5a1050175bdf4e1a4e6272cddff7da88a2ad595e1e326041d8d94"}, + {file = "ruff-0.11.8-py3-none-linux_armv6l.whl", hash = "sha256:896a37516c594805e34020c4a7546c8f8a234b679a7716a3f08197f38913e1a3"}, + {file = "ruff-0.11.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ab86d22d3d721a40dd3ecbb5e86ab03b2e053bc93c700dc68d1c3346b36ce835"}, + {file = "ruff-0.11.8-py3-none-macosx_11_0_arm64.whl", hash = "sha256:258f3585057508d317610e8a412788cf726efeefa2fec4dba4001d9e6f90d46c"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:727d01702f7c30baed3fc3a34901a640001a2828c793525043c29f7614994a8c"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3dca977cc4fc8f66e89900fa415ffe4dbc2e969da9d7a54bfca81a128c5ac219"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c657fa987d60b104d2be8b052d66da0a2a88f9bd1d66b2254333e84ea2720c7f"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:f2e74b021d0de5eceb8bd32919f6ff8a9b40ee62ed97becd44993ae5b9949474"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9b5ef39820abc0f2c62111f7045009e46b275f5b99d5e59dda113c39b7f4f38"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1dba3135ca503727aa4648152c0fa67c3b1385d3dc81c75cd8a229c4b2a1458"}, + {file = "ruff-0.11.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f024d32e62faad0f76b2d6afd141b8c171515e4fb91ce9fd6464335c81244e5"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d365618d3ad747432e1ae50d61775b78c055fee5936d77fb4d92c6f559741948"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:4d9aaa91035bdf612c8ee7266153bcf16005c7c7e2f5878406911c92a31633cb"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:0eba551324733efc76116d9f3a0d52946bc2751f0cd30661564117d6fd60897c"}, + {file = "ruff-0.11.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:161eb4cff5cfefdb6c9b8b3671d09f7def2f960cee33481dd898caf2bcd02304"}, + {file = "ruff-0.11.8-py3-none-win32.whl", hash = "sha256:5b18caa297a786465cc511d7f8be19226acf9c0a1127e06e736cd4e1878c3ea2"}, + {file = "ruff-0.11.8-py3-none-win_amd64.whl", hash = "sha256:6e70d11043bef637c5617297bdedec9632af15d53ac1e1ba29c448da9341b0c4"}, + {file = "ruff-0.11.8-py3-none-win_arm64.whl", hash = "sha256:304432e4c4a792e3da85b7699feb3426a0908ab98bf29df22a31b0cdd098fac2"}, + {file = "ruff-0.11.8.tar.gz", hash = "sha256:6d742d10626f9004b781f4558154bb226620a7242080e11caeffab1a40e99df8"}, ] [[package]] @@ -585,6 +608,7 @@ version = "1.5.4" description = "Tool to Detect Surrounding Shell" optional = false python-versions = ">=3.7" +groups = ["dev"] files = [ {file = "shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686"}, {file = "shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de"}, @@ -596,6 +620,7 @@ version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main", "dev"] files = [ {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, @@ -607,6 +632,7 @@ version = "1.3.1" description = "Sniff out which async library your code is running under" optional = false python-versions = ">=3.7" +groups = ["main", "dev"] files = [ {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, @@ -618,6 +644,8 @@ version = "2.2.1" description = "A lil' TOML parser" optional = false python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.11\"" files = [ {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, @@ -659,6 +687,7 @@ version = "0.9.4" description = "Typer, build great CLIs. Easy to code. Based on Python type hints." optional = false python-versions = ">=3.6" +groups = ["dev"] files = [ {file = "typer-0.9.4-py3-none-any.whl", hash = "sha256:aa6c4a4e2329d868b80ecbaf16f807f2b54e192209d7ac9dd42691d63f7a54eb"}, {file = "typer-0.9.4.tar.gz", hash = "sha256:f714c2d90afae3a7929fcd72a3abb08df305e1ff61719381384211c4070af57f"}, @@ -676,16 +705,33 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=6.2,<7.0)", "isort (>=5.0.6,<6. [[package]] name = "typing-extensions" -version = "4.12.2" +version = "4.13.2" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" +groups = ["main", "dev"] files = [ - {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, - {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, + {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, + {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, ] +markers = {main = "python_version < \"3.13\""} + +[[package]] +name = "typing-inspection" +version = "0.4.0" +description = "Runtime typing introspection tools" +optional = false +python-versions = ">=3.9" +groups = ["dev"] +files = [ + {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"}, + {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"}, +] + +[package.dependencies] +typing-extensions = ">=4.12.0" [metadata] -lock-version = "2.0" -python-versions = "^3.8" -content-hash = "7eee732f1417d9b5850fe742f524aad96fcf73c2b4d2c70eecb65aa28a3832af" +lock-version = "2.1" +python-versions = "^3.9" +content-hash = "286980d3da72c92202440284a1b142d99794e73d7f52bbe7caf97179f77c898a" diff --git a/pyproject.toml b/pyproject.toml index 261bd52..bf66edd 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "cirro_api_client" -version = "0.3.2" +version = "1.0.0" description = "A client library for accessing Cirro" authors = ["Cirro "] license = "MIT" @@ -25,5 +25,5 @@ requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" [tool.ruff] -select = ["F", "I", "UP"] +lint.select = ["F", "I", "UP"] line-length = 120 From c69efafdba87be4a45c50beec67e677e8af7aa4c Mon Sep 17 00:00:00 2001 From: Nathan Thorpe Date: Mon, 5 May 2025 09:22:12 -0400 Subject: [PATCH 3/4] update lock --- poetry.lock | 377 ++++++++++++++++++++++++------------------------- pyproject.toml | 2 +- 2 files changed, 183 insertions(+), 196 deletions(-) diff --git a/poetry.lock b/poetry.lock index d1708f1..c7300a7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -12,27 +12,30 @@ files = [ {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""} + [[package]] name = "anyio" -version = "4.9.0" +version = "4.5.2" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" groups = ["main", "dev"] files = [ - {file = "anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c"}, - {file = "anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028"}, + {file = "anyio-4.5.2-py3-none-any.whl", hash = "sha256:c011ee36bc1e8ba40e5a81cb9df91925c218fe9b778554e0b56a21e1b5d4716f"}, + {file = "anyio-4.5.2.tar.gz", hash = "sha256:23009af4ed04ce05991845451e11ef02fc7c5ed29179ac9a420e5ad0ac7ddc5b"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" -typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx (>=8.2,<9.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] -test = ["anyio[trio]", "blockbuster (>=1.5.23)", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\" and python_version < \"3.14\""] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1) ; python_version >= \"3.10\"", "uvloop (>=0.21.0b1) ; platform_python_implementation == \"CPython\" and platform_system != \"Windows\""] trio = ["trio (>=0.26.1)"] [[package]] @@ -217,73 +220,72 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "markupsafe" -version = "3.0.2" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." optional = false -python-versions = ">=3.9" +python-versions = ">=3.7" groups = ["dev"] files = [ - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50"}, - {file = "MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d"}, - {file = "MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30"}, - {file = "MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1"}, - {file = "MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6"}, - {file = "MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f"}, - {file = "MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a"}, - {file = "markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] @@ -341,21 +343,20 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pydantic" -version = "2.11.4" +version = "2.10.6" description = "Data validation using Python type hints" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pydantic-2.11.4-py3-none-any.whl", hash = "sha256:d9615eaa9ac5a063471da949c8fc16376a84afb5024688b3ff885693506764eb"}, - {file = "pydantic-2.11.4.tar.gz", hash = "sha256:32738d19d63a226a52eed76645a98ee07c1f410ee41d93b4afbfa85ed8111c2d"}, + {file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"}, + {file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.33.2" +pydantic-core = "2.27.2" typing-extensions = ">=4.12.2" -typing-inspection = ">=0.4.0" [package.extras] email = ["email-validator (>=2.0.0)"] @@ -363,111 +364,112 @@ timezone = ["tzdata ; python_version >= \"3.9\" and platform_system == \"Windows [[package]] name = "pydantic-core" -version = "2.33.2" +version = "2.27.2" description = "Core functionality for Pydantic validation and serialization" optional = false -python-versions = ">=3.9" +python-versions = ">=3.8" groups = ["dev"] files = [ - {file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8"}, - {file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d"}, - {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d"}, - {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572"}, - {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02"}, - {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b"}, - {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2"}, - {file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a"}, - {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac"}, - {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a"}, - {file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b"}, - {file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22"}, - {file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640"}, - {file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7"}, - {file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246"}, - {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f"}, - {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc"}, - {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de"}, - {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a"}, - {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef"}, - {file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e"}, - {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d"}, - {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30"}, - {file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf"}, - {file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51"}, - {file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab"}, - {file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65"}, - {file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc"}, - {file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7"}, - {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025"}, - {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011"}, - {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f"}, - {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88"}, - {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1"}, - {file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b"}, - {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1"}, - {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6"}, - {file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea"}, - {file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290"}, - {file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2"}, - {file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab"}, - {file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f"}, - {file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6"}, - {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef"}, - {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a"}, - {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916"}, - {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a"}, - {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d"}, - {file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56"}, - {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5"}, - {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e"}, - {file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162"}, - {file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849"}, - {file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9"}, - {file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9"}, - {file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac"}, - {file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5"}, - {file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9"}, - {file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d"}, - {file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954"}, - {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb"}, - {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7"}, - {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4"}, - {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b"}, - {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3"}, - {file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a"}, - {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782"}, - {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9"}, - {file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e"}, - {file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9"}, - {file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3"}, - {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa"}, - {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29"}, - {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d"}, - {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e"}, - {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c"}, - {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec"}, - {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052"}, - {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c"}, - {file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808"}, - {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8"}, - {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593"}, - {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612"}, - {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7"}, - {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e"}, - {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8"}, - {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf"}, - {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb"}, - {file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1"}, - {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101"}, - {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64"}, - {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d"}, - {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535"}, - {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d"}, - {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6"}, - {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca"}, - {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039"}, - {file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27"}, - {file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"}, + {file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"}, + {file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"}, + {file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"}, + {file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"}, + {file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"}, + {file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"}, + {file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"}, + {file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"}, + {file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"}, + {file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"}, + {file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"}, + {file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"}, + {file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"}, + {file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"}, + {file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"}, + {file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"}, + {file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"}, + {file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"}, + {file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"}, + {file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"}, + {file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"}, + {file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"}, + {file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"}, + {file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"}, + {file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"}, ] [package.dependencies] @@ -714,24 +716,9 @@ files = [ {file = "typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c"}, {file = "typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef"}, ] -markers = {main = "python_version < \"3.13\""} - -[[package]] -name = "typing-inspection" -version = "0.4.0" -description = "Runtime typing introspection tools" -optional = false -python-versions = ">=3.9" -groups = ["dev"] -files = [ - {file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"}, - {file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"}, -] - -[package.dependencies] -typing-extensions = ">=4.12.0" +markers = {main = "python_version < \"3.11\""} [metadata] lock-version = "2.1" -python-versions = "^3.9" -content-hash = "286980d3da72c92202440284a1b142d99794e73d7f52bbe7caf97179f77c898a" +python-versions = "^3.8" +content-hash = "c2c0f2fbfd2560e2d9b858f36ce72daa943fdd238ab3072ba7524923ffec3107" diff --git a/pyproject.toml b/pyproject.toml index bf66edd..5dc9096 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,7 +15,7 @@ httpx = ">=0.20.0,<0.27.0" attrs = ">=21.3.0" python-dateutil = "^2.8.0" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] pytest = ">=7.2.1" ruff = ">=0.1.14" openapi-python-client = "0.17.3" From 0786183b01123a3d7c3c1b85d73760799d52b86b Mon Sep 17 00:00:00 2001 From: Nathan Thorpe Date: Mon, 5 May 2025 13:22:12 -0400 Subject: [PATCH 4/4] request -> input, change not null --- .../v1/api/processes/create_custom_process.py | 20 +-- .../v1/api/processes/update_custom_process.py | 12 +- cirro_api_client/v1/models/__init__.py | 4 +- ...ess_request.py => custom_process_input.py} | 10 +- cirro_api_client/v1/models/process.py | 157 ++++++++---------- cirro_api_client/v1/models/process_detail.py | 144 +++++++--------- 6 files changed, 148 insertions(+), 199 deletions(-) rename cirro_api_client/v1/models/{custom_process_request.py => custom_process_input.py} (98%) diff --git a/cirro_api_client/v1/api/processes/create_custom_process.py b/cirro_api_client/v1/api/processes/create_custom_process.py index 02c91f9..f0e4ad2 100644 --- a/cirro_api_client/v1/api/processes/create_custom_process.py +++ b/cirro_api_client/v1/api/processes/create_custom_process.py @@ -6,7 +6,7 @@ from ... import errors from ...client import Client from ...models.create_response import CreateResponse -from ...models.custom_process_request import CustomProcessRequest +from ...models.custom_process_input import CustomProcessInput from ...models.error_message import ErrorMessage from ...models.portal_error_response import PortalErrorResponse from ...types import Response @@ -14,7 +14,7 @@ def _get_kwargs( *, - body: CustomProcessRequest, + body: CustomProcessInput, ) -> Dict[str, Any]: headers: Dict[str, Any] = {} @@ -65,14 +65,14 @@ def _build_response( def sync_detailed( *, client: Client, - body: CustomProcessRequest, + body: CustomProcessInput, ) -> Response[Union[CreateResponse, ErrorMessage, PortalErrorResponse]]: """Create custom process Creates a custom data type or pipeline which you can use in the listed projects. Args: - body (CustomProcessRequest): + body (CustomProcessInput): client (Client): instance of the API client Raises: @@ -98,14 +98,14 @@ def sync_detailed( def sync( *, client: Client, - body: CustomProcessRequest, + body: CustomProcessInput, ) -> Optional[Union[CreateResponse, ErrorMessage, PortalErrorResponse]]: """Create custom process Creates a custom data type or pipeline which you can use in the listed projects. Args: - body (CustomProcessRequest): + body (CustomProcessInput): client (Client): instance of the API client Raises: @@ -128,14 +128,14 @@ def sync( async def asyncio_detailed( *, client: Client, - body: CustomProcessRequest, + body: CustomProcessInput, ) -> Response[Union[CreateResponse, ErrorMessage, PortalErrorResponse]]: """Create custom process Creates a custom data type or pipeline which you can use in the listed projects. Args: - body (CustomProcessRequest): + body (CustomProcessInput): client (Client): instance of the API client Raises: @@ -158,14 +158,14 @@ async def asyncio_detailed( async def asyncio( *, client: Client, - body: CustomProcessRequest, + body: CustomProcessInput, ) -> Optional[Union[CreateResponse, ErrorMessage, PortalErrorResponse]]: """Create custom process Creates a custom data type or pipeline which you can use in the listed projects. Args: - body (CustomProcessRequest): + body (CustomProcessInput): client (Client): instance of the API client Raises: diff --git a/cirro_api_client/v1/api/processes/update_custom_process.py b/cirro_api_client/v1/api/processes/update_custom_process.py index 9a559ab..8de47b3 100644 --- a/cirro_api_client/v1/api/processes/update_custom_process.py +++ b/cirro_api_client/v1/api/processes/update_custom_process.py @@ -5,14 +5,14 @@ from ... import errors from ...client import Client -from ...models.custom_process_request import CustomProcessRequest +from ...models.custom_process_input import CustomProcessInput from ...types import Response def _get_kwargs( process_id: str, *, - body: CustomProcessRequest, + body: CustomProcessInput, ) -> Dict[str, Any]: headers: Dict[str, Any] = {} @@ -50,7 +50,7 @@ def sync_detailed( process_id: str, *, client: Client, - body: CustomProcessRequest, + body: CustomProcessInput, ) -> Response[Any]: """Update custom process @@ -58,7 +58,7 @@ def sync_detailed( Args: process_id (str): - body (CustomProcessRequest): + body (CustomProcessInput): client (Client): instance of the API client Raises: @@ -86,7 +86,7 @@ async def asyncio_detailed( process_id: str, *, client: Client, - body: CustomProcessRequest, + body: CustomProcessInput, ) -> Response[Any]: """Update custom process @@ -94,7 +94,7 @@ async def asyncio_detailed( Args: process_id (str): - body (CustomProcessRequest): + body (CustomProcessInput): client (Client): instance of the API client Raises: diff --git a/cirro_api_client/v1/models/__init__.py b/cirro_api_client/v1/models/__init__.py index 6839152..cfd405a 100644 --- a/cirro_api_client/v1/models/__init__.py +++ b/cirro_api_client/v1/models/__init__.py @@ -40,7 +40,7 @@ from .create_reference_request import CreateReferenceRequest from .create_response import CreateResponse from .custom_pipeline_settings import CustomPipelineSettings -from .custom_process_request import CustomProcessRequest +from .custom_process_input import CustomProcessInput from .customer_type import CustomerType from .dashboard import Dashboard from .dashboard_dashboard_data import DashboardDashboardData @@ -202,7 +202,7 @@ "CreateResponse", "CustomerType", "CustomPipelineSettings", - "CustomProcessRequest", + "CustomProcessInput", "Dashboard", "DashboardDashboardData", "DashboardInfo", diff --git a/cirro_api_client/v1/models/custom_process_request.py b/cirro_api_client/v1/models/custom_process_input.py similarity index 98% rename from cirro_api_client/v1/models/custom_process_request.py rename to cirro_api_client/v1/models/custom_process_input.py index 08223ec..2bb8758 100644 --- a/cirro_api_client/v1/models/custom_process_request.py +++ b/cirro_api_client/v1/models/custom_process_input.py @@ -12,11 +12,11 @@ from ..models.pipeline_code import PipelineCode -T = TypeVar("T", bound="CustomProcessRequest") +T = TypeVar("T", bound="CustomProcessInput") @_attrs_define -class CustomProcessRequest: +class CustomProcessInput: """ Attributes: id (str): Unique ID of the Process Example: process-hutch-magic_flute-1_0. @@ -296,7 +296,7 @@ def _parse_file_mapping_rules(data: object) -> Union[List["FileMappingRule"], No file_mapping_rules = _parse_file_mapping_rules(d.pop("fileMappingRules", UNSET)) - custom_process_request = cls( + custom_process_input = cls( id=id, name=name, description=description, @@ -318,8 +318,8 @@ def _parse_file_mapping_rules(data: object) -> Union[List["FileMappingRule"], No file_mapping_rules=file_mapping_rules, ) - custom_process_request.additional_properties = d - return custom_process_request + custom_process_input.additional_properties = d + return custom_process_input @property def additional_keys(self) -> List[str]: diff --git a/cirro_api_client/v1/models/process.py b/cirro_api_client/v1/models/process.py index dade1e0..513eb8d 100644 --- a/cirro_api_client/v1/models/process.py +++ b/cirro_api_client/v1/models/process.py @@ -18,45 +18,44 @@ class Process: Attributes: id (str): Unique ID of the Process Example: process-hutch-magic_flute-1_0. name (str): Friendly name for the process Example: MAGeCK Flute. + description (str): Description of the process Example: MAGeCK Flute enables accurate identification of essential + genes with their related biological functions. + data_type (str): Name of the data type this pipeline produces (if it is not defined, use the name) executor (Executor): How the workflow is executed - description (Union[Unset, str]): Description of the process Example: MAGeCK Flute enables accurate - identification of essential genes with their related biological functions. - data_type (Union[None, Unset, str]): Name of the data type this pipeline produces (if it is not defined, use the - name) + child_process_ids (List[str]): IDs of pipelines that can be run downstream + parent_process_ids (List[str]): IDs of processes that can run this pipeline + linked_project_ids (List[str]): Projects that can run this process + is_tenant_wide (bool): Whether the process is shared with the tenant + allow_multiple_sources (bool): Whether the pipeline is allowed to have multiple dataset sources + uses_sample_sheet (bool): Whether the pipeline uses the Cirro-provided sample sheet + is_archived (bool): Whether the process is marked as archived category (Union[Unset, str]): Category of the process Example: Microbial Analysis. pipeline_type (Union[Unset, str]): Type of pipeline Example: nf-core. documentation_url (Union[Unset, str]): Link to process documentation Example: https://docs.cirro.bio/pipelines/catalog_targeted_sequencing/#crispr-screen-analysis. file_requirements_message (Union[Unset, str]): Description of the files to be uploaded (optional) - child_process_ids (Union[Unset, List[str]]): IDs of pipelines that can be run downstream - parent_process_ids (Union[Unset, List[str]]): IDs of processes that can run this pipeline owner (Union[None, Unset, str]): Username of the pipeline creator (blank if Cirro curated) - linked_project_ids (Union[Unset, List[str]]): Projects that can run this process - is_tenant_wide (Union[Unset, bool]): Whether the process is shared with the tenant - allow_multiple_sources (Union[Unset, bool]): Whether the pipeline is allowed to have multiple dataset sources - uses_sample_sheet (Union[Unset, bool]): Whether the pipeline uses the Cirro-provided sample sheet - is_archived (Union[Unset, bool]): Whether the process is marked as archived created_at (Union[Unset, datetime.datetime]): When the process was created (does not reflect the pipeline code) updated_at (Union[Unset, datetime.datetime]): When the process was updated (does not reflect the pipeline code) """ id: str name: str + description: str + data_type: str executor: Executor - description: Union[Unset, str] = UNSET - data_type: Union[None, Unset, str] = UNSET + child_process_ids: List[str] + parent_process_ids: List[str] + linked_project_ids: List[str] + is_tenant_wide: bool + allow_multiple_sources: bool + uses_sample_sheet: bool + is_archived: bool category: Union[Unset, str] = UNSET pipeline_type: Union[Unset, str] = UNSET documentation_url: Union[Unset, str] = UNSET file_requirements_message: Union[Unset, str] = UNSET - child_process_ids: Union[Unset, List[str]] = UNSET - parent_process_ids: Union[Unset, List[str]] = UNSET owner: Union[None, Unset, str] = UNSET - linked_project_ids: Union[Unset, List[str]] = UNSET - is_tenant_wide: Union[Unset, bool] = UNSET - allow_multiple_sources: Union[Unset, bool] = UNSET - uses_sample_sheet: Union[Unset, bool] = UNSET - is_archived: Union[Unset, bool] = UNSET created_at: Union[Unset, datetime.datetime] = UNSET updated_at: Union[Unset, datetime.datetime] = UNSET additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -66,15 +65,25 @@ def to_dict(self) -> Dict[str, Any]: name = self.name + description = self.description + + data_type = self.data_type + executor = self.executor.value - description = self.description + child_process_ids = self.child_process_ids - data_type: Union[None, Unset, str] - if isinstance(self.data_type, Unset): - data_type = UNSET - else: - data_type = self.data_type + parent_process_ids = self.parent_process_ids + + linked_project_ids = self.linked_project_ids + + is_tenant_wide = self.is_tenant_wide + + allow_multiple_sources = self.allow_multiple_sources + + uses_sample_sheet = self.uses_sample_sheet + + is_archived = self.is_archived category = self.category @@ -84,32 +93,12 @@ def to_dict(self) -> Dict[str, Any]: file_requirements_message = self.file_requirements_message - child_process_ids: Union[Unset, List[str]] = UNSET - if not isinstance(self.child_process_ids, Unset): - child_process_ids = self.child_process_ids - - parent_process_ids: Union[Unset, List[str]] = UNSET - if not isinstance(self.parent_process_ids, Unset): - parent_process_ids = self.parent_process_ids - owner: Union[None, Unset, str] if isinstance(self.owner, Unset): owner = UNSET else: owner = self.owner - linked_project_ids: Union[Unset, List[str]] = UNSET - if not isinstance(self.linked_project_ids, Unset): - linked_project_ids = self.linked_project_ids - - is_tenant_wide = self.is_tenant_wide - - allow_multiple_sources = self.allow_multiple_sources - - uses_sample_sheet = self.uses_sample_sheet - - is_archived = self.is_archived - created_at: Union[Unset, str] = UNSET if not isinstance(self.created_at, Unset): created_at = self.created_at.isoformat() @@ -124,13 +113,18 @@ def to_dict(self) -> Dict[str, Any]: { "id": id, "name": name, + "description": description, + "dataType": data_type, "executor": executor, + "childProcessIds": child_process_ids, + "parentProcessIds": parent_process_ids, + "linkedProjectIds": linked_project_ids, + "isTenantWide": is_tenant_wide, + "allowMultipleSources": allow_multiple_sources, + "usesSampleSheet": uses_sample_sheet, + "isArchived": is_archived, } ) - if description is not UNSET: - field_dict["description"] = description - if data_type is not UNSET: - field_dict["dataType"] = data_type if category is not UNSET: field_dict["category"] = category if pipeline_type is not UNSET: @@ -139,22 +133,8 @@ def to_dict(self) -> Dict[str, Any]: field_dict["documentationUrl"] = documentation_url if file_requirements_message is not UNSET: field_dict["fileRequirementsMessage"] = file_requirements_message - if child_process_ids is not UNSET: - field_dict["childProcessIds"] = child_process_ids - if parent_process_ids is not UNSET: - field_dict["parentProcessIds"] = parent_process_ids if owner is not UNSET: field_dict["owner"] = owner - if linked_project_ids is not UNSET: - field_dict["linkedProjectIds"] = linked_project_ids - if is_tenant_wide is not UNSET: - field_dict["isTenantWide"] = is_tenant_wide - if allow_multiple_sources is not UNSET: - field_dict["allowMultipleSources"] = allow_multiple_sources - if uses_sample_sheet is not UNSET: - field_dict["usesSampleSheet"] = uses_sample_sheet - if is_archived is not UNSET: - field_dict["isArchived"] = is_archived if created_at is not UNSET: field_dict["createdAt"] = created_at if updated_at is not UNSET: @@ -169,18 +149,25 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: name = d.pop("name") + description = d.pop("description") + + data_type = d.pop("dataType") + executor = Executor(d.pop("executor")) - description = d.pop("description", UNSET) + child_process_ids = cast(List[str], d.pop("childProcessIds")) - def _parse_data_type(data: object) -> Union[None, Unset, str]: - if data is None: - return data - if isinstance(data, Unset): - return data - return cast(Union[None, Unset, str], data) + parent_process_ids = cast(List[str], d.pop("parentProcessIds")) + + linked_project_ids = cast(List[str], d.pop("linkedProjectIds")) + + is_tenant_wide = d.pop("isTenantWide") + + allow_multiple_sources = d.pop("allowMultipleSources") - data_type = _parse_data_type(d.pop("dataType", UNSET)) + uses_sample_sheet = d.pop("usesSampleSheet") + + is_archived = d.pop("isArchived") category = d.pop("category", UNSET) @@ -190,10 +177,6 @@ def _parse_data_type(data: object) -> Union[None, Unset, str]: file_requirements_message = d.pop("fileRequirementsMessage", UNSET) - child_process_ids = cast(List[str], d.pop("childProcessIds", UNSET)) - - parent_process_ids = cast(List[str], d.pop("parentProcessIds", UNSET)) - def _parse_owner(data: object) -> Union[None, Unset, str]: if data is None: return data @@ -203,16 +186,6 @@ def _parse_owner(data: object) -> Union[None, Unset, str]: owner = _parse_owner(d.pop("owner", UNSET)) - linked_project_ids = cast(List[str], d.pop("linkedProjectIds", UNSET)) - - is_tenant_wide = d.pop("isTenantWide", UNSET) - - allow_multiple_sources = d.pop("allowMultipleSources", UNSET) - - uses_sample_sheet = d.pop("usesSampleSheet", UNSET) - - is_archived = d.pop("isArchived", UNSET) - _created_at = d.pop("createdAt", UNSET) created_at: Union[Unset, datetime.datetime] if isinstance(_created_at, Unset): @@ -230,21 +203,21 @@ def _parse_owner(data: object) -> Union[None, Unset, str]: process = cls( id=id, name=name, - executor=executor, description=description, data_type=data_type, - category=category, - pipeline_type=pipeline_type, - documentation_url=documentation_url, - file_requirements_message=file_requirements_message, + executor=executor, child_process_ids=child_process_ids, parent_process_ids=parent_process_ids, - owner=owner, linked_project_ids=linked_project_ids, is_tenant_wide=is_tenant_wide, allow_multiple_sources=allow_multiple_sources, uses_sample_sheet=uses_sample_sheet, is_archived=is_archived, + category=category, + pipeline_type=pipeline_type, + documentation_url=documentation_url, + file_requirements_message=file_requirements_message, + owner=owner, created_at=created_at, updated_at=updated_at, ) diff --git a/cirro_api_client/v1/models/process_detail.py b/cirro_api_client/v1/models/process_detail.py index 0ba00e2..d362c70 100644 --- a/cirro_api_client/v1/models/process_detail.py +++ b/cirro_api_client/v1/models/process_detail.py @@ -24,26 +24,25 @@ class ProcessDetail: Attributes: id (str): Unique ID of the Process Example: process-hutch-magic_flute-1_0. name (str): Friendly name for the process Example: MAGeCK Flute. + description (str): Description of the process Example: MAGeCK Flute enables accurate identification of essential + genes with their related biological functions. + data_type (str): Name of the data type this pipeline produces (if it is not defined, use the name) executor (Executor): How the workflow is executed + child_process_ids (List[str]): IDs of pipelines that can be run downstream + parent_process_ids (List[str]): IDs of processes that can run this pipeline linked_project_ids (List[str]): Projects that can run this process - description (Union[Unset, str]): Description of the process Example: MAGeCK Flute enables accurate - identification of essential genes with their related biological functions. - data_type (Union[None, Unset, str]): Name of the data type this pipeline produces (if it is not defined, use the - name) + is_tenant_wide (bool): Whether the process is shared with the tenant + allow_multiple_sources (bool): Whether the pipeline is allowed to have multiple dataset sources + uses_sample_sheet (bool): Whether the pipeline uses the Cirro-provided sample sheet + is_archived (bool): Whether the process is marked as archived category (Union[Unset, str]): Category of the process Example: Microbial Analysis. pipeline_type (Union[Unset, str]): Type of pipeline Example: nf-core. - child_process_ids (Union[Unset, List[str]]): IDs of pipelines that can be run downstream - parent_process_ids (Union[Unset, List[str]]): IDs of processes that can run this pipeline documentation_url (Union[Unset, str]): Link to process documentation Example: https://docs.cirro.bio/pipelines/catalog_targeted_sequencing/#crispr-screen-analysis. file_requirements_message (Union[Unset, str]): Description of the files to be uploaded (optional) pipeline_code (Union['PipelineCode', None, Unset]): owner (Union[None, Unset, str]): Username of the pipeline creator (blank if Cirro curated) - is_tenant_wide (Union[Unset, bool]): Whether the process is shared with the tenant - allow_multiple_sources (Union[Unset, bool]): Whether the pipeline is allowed to have multiple dataset sources - uses_sample_sheet (Union[Unset, bool]): Whether the pipeline uses the Cirro-provided sample sheet custom_settings (Union['CustomPipelineSettings', None, Unset]): - is_archived (Union[Unset, bool]): Whether the process is marked as archived file_mapping_rules (Union[List['FileMappingRule'], None, Unset]): created_at (Union[Unset, datetime.datetime]): When the process was created (does not reflect the pipeline code) updated_at (Union[Unset, datetime.datetime]): When the process was updated (does not reflect the pipeline code) @@ -51,23 +50,23 @@ class ProcessDetail: id: str name: str + description: str + data_type: str executor: Executor + child_process_ids: List[str] + parent_process_ids: List[str] linked_project_ids: List[str] - description: Union[Unset, str] = UNSET - data_type: Union[None, Unset, str] = UNSET + is_tenant_wide: bool + allow_multiple_sources: bool + uses_sample_sheet: bool + is_archived: bool category: Union[Unset, str] = UNSET pipeline_type: Union[Unset, str] = UNSET - child_process_ids: Union[Unset, List[str]] = UNSET - parent_process_ids: Union[Unset, List[str]] = UNSET documentation_url: Union[Unset, str] = UNSET file_requirements_message: Union[Unset, str] = UNSET pipeline_code: Union["PipelineCode", None, Unset] = UNSET owner: Union[None, Unset, str] = UNSET - is_tenant_wide: Union[Unset, bool] = UNSET - allow_multiple_sources: Union[Unset, bool] = UNSET - uses_sample_sheet: Union[Unset, bool] = UNSET custom_settings: Union["CustomPipelineSettings", None, Unset] = UNSET - is_archived: Union[Unset, bool] = UNSET file_mapping_rules: Union[List["FileMappingRule"], None, Unset] = UNSET created_at: Union[Unset, datetime.datetime] = UNSET updated_at: Union[Unset, datetime.datetime] = UNSET @@ -81,29 +80,29 @@ def to_dict(self) -> Dict[str, Any]: name = self.name + description = self.description + + data_type = self.data_type + executor = self.executor.value + child_process_ids = self.child_process_ids + + parent_process_ids = self.parent_process_ids + linked_project_ids = self.linked_project_ids - description = self.description + is_tenant_wide = self.is_tenant_wide - data_type: Union[None, Unset, str] - if isinstance(self.data_type, Unset): - data_type = UNSET - else: - data_type = self.data_type + allow_multiple_sources = self.allow_multiple_sources - category = self.category + uses_sample_sheet = self.uses_sample_sheet - pipeline_type = self.pipeline_type + is_archived = self.is_archived - child_process_ids: Union[Unset, List[str]] = UNSET - if not isinstance(self.child_process_ids, Unset): - child_process_ids = self.child_process_ids + category = self.category - parent_process_ids: Union[Unset, List[str]] = UNSET - if not isinstance(self.parent_process_ids, Unset): - parent_process_ids = self.parent_process_ids + pipeline_type = self.pipeline_type documentation_url = self.documentation_url @@ -123,12 +122,6 @@ def to_dict(self) -> Dict[str, Any]: else: owner = self.owner - is_tenant_wide = self.is_tenant_wide - - allow_multiple_sources = self.allow_multiple_sources - - uses_sample_sheet = self.uses_sample_sheet - custom_settings: Union[Dict[str, Any], None, Unset] if isinstance(self.custom_settings, Unset): custom_settings = UNSET @@ -137,8 +130,6 @@ def to_dict(self) -> Dict[str, Any]: else: custom_settings = self.custom_settings - is_archived = self.is_archived - file_mapping_rules: Union[List[Dict[str, Any]], None, Unset] if isinstance(self.file_mapping_rules, Unset): file_mapping_rules = UNSET @@ -165,22 +156,22 @@ def to_dict(self) -> Dict[str, Any]: { "id": id, "name": name, + "description": description, + "dataType": data_type, "executor": executor, + "childProcessIds": child_process_ids, + "parentProcessIds": parent_process_ids, "linkedProjectIds": linked_project_ids, + "isTenantWide": is_tenant_wide, + "allowMultipleSources": allow_multiple_sources, + "usesSampleSheet": uses_sample_sheet, + "isArchived": is_archived, } ) - if description is not UNSET: - field_dict["description"] = description - if data_type is not UNSET: - field_dict["dataType"] = data_type if category is not UNSET: field_dict["category"] = category if pipeline_type is not UNSET: field_dict["pipelineType"] = pipeline_type - if child_process_ids is not UNSET: - field_dict["childProcessIds"] = child_process_ids - if parent_process_ids is not UNSET: - field_dict["parentProcessIds"] = parent_process_ids if documentation_url is not UNSET: field_dict["documentationUrl"] = documentation_url if file_requirements_message is not UNSET: @@ -189,16 +180,8 @@ def to_dict(self) -> Dict[str, Any]: field_dict["pipelineCode"] = pipeline_code if owner is not UNSET: field_dict["owner"] = owner - if is_tenant_wide is not UNSET: - field_dict["isTenantWide"] = is_tenant_wide - if allow_multiple_sources is not UNSET: - field_dict["allowMultipleSources"] = allow_multiple_sources - if uses_sample_sheet is not UNSET: - field_dict["usesSampleSheet"] = uses_sample_sheet if custom_settings is not UNSET: field_dict["customSettings"] = custom_settings - if is_archived is not UNSET: - field_dict["isArchived"] = is_archived if file_mapping_rules is not UNSET: field_dict["fileMappingRules"] = file_mapping_rules if created_at is not UNSET: @@ -219,29 +202,30 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: name = d.pop("name") + description = d.pop("description") + + data_type = d.pop("dataType") + executor = Executor(d.pop("executor")) + child_process_ids = cast(List[str], d.pop("childProcessIds")) + + parent_process_ids = cast(List[str], d.pop("parentProcessIds")) + linked_project_ids = cast(List[str], d.pop("linkedProjectIds")) - description = d.pop("description", UNSET) + is_tenant_wide = d.pop("isTenantWide") - def _parse_data_type(data: object) -> Union[None, Unset, str]: - if data is None: - return data - if isinstance(data, Unset): - return data - return cast(Union[None, Unset, str], data) + allow_multiple_sources = d.pop("allowMultipleSources") - data_type = _parse_data_type(d.pop("dataType", UNSET)) + uses_sample_sheet = d.pop("usesSampleSheet") + + is_archived = d.pop("isArchived") category = d.pop("category", UNSET) pipeline_type = d.pop("pipelineType", UNSET) - child_process_ids = cast(List[str], d.pop("childProcessIds", UNSET)) - - parent_process_ids = cast(List[str], d.pop("parentProcessIds", UNSET)) - documentation_url = d.pop("documentationUrl", UNSET) file_requirements_message = d.pop("fileRequirementsMessage", UNSET) @@ -272,12 +256,6 @@ def _parse_owner(data: object) -> Union[None, Unset, str]: owner = _parse_owner(d.pop("owner", UNSET)) - is_tenant_wide = d.pop("isTenantWide", UNSET) - - allow_multiple_sources = d.pop("allowMultipleSources", UNSET) - - uses_sample_sheet = d.pop("usesSampleSheet", UNSET) - def _parse_custom_settings(data: object) -> Union["CustomPipelineSettings", None, Unset]: if data is None: return data @@ -295,8 +273,6 @@ def _parse_custom_settings(data: object) -> Union["CustomPipelineSettings", None custom_settings = _parse_custom_settings(d.pop("customSettings", UNSET)) - is_archived = d.pop("isArchived", UNSET) - def _parse_file_mapping_rules(data: object) -> Union[List["FileMappingRule"], None, Unset]: if data is None: return data @@ -336,23 +312,23 @@ def _parse_file_mapping_rules(data: object) -> Union[List["FileMappingRule"], No process_detail = cls( id=id, name=name, - executor=executor, - linked_project_ids=linked_project_ids, description=description, data_type=data_type, - category=category, - pipeline_type=pipeline_type, + executor=executor, child_process_ids=child_process_ids, parent_process_ids=parent_process_ids, + linked_project_ids=linked_project_ids, + is_tenant_wide=is_tenant_wide, + allow_multiple_sources=allow_multiple_sources, + uses_sample_sheet=uses_sample_sheet, + is_archived=is_archived, + category=category, + pipeline_type=pipeline_type, documentation_url=documentation_url, file_requirements_message=file_requirements_message, pipeline_code=pipeline_code, owner=owner, - is_tenant_wide=is_tenant_wide, - allow_multiple_sources=allow_multiple_sources, - uses_sample_sheet=uses_sample_sheet, custom_settings=custom_settings, - is_archived=is_archived, file_mapping_rules=file_mapping_rules, created_at=created_at, updated_at=updated_at,