diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml new file mode 100644 index 00000000..3873e501 --- /dev/null +++ b/.github/workflows/test-python.yml @@ -0,0 +1,43 @@ +# This workflow will build and test the Rust code in this repository. There are +# separate workflows for testing the python portion of the code base. +# +# This file is *not* generated from automation and is manually maintained. +# +name: "[tower] Test python" + +on: + pull_request: + push: + branches: + - '*' + tags-ignore: + - '**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + + - name: Install the latest version of uv + uses: astral-sh/setup-uv@v6 + + - name: Install dependencies + if: github.ref_name != 'main' + run: uv sync --all-extras + + - name: Run tests + if: github.ref_name != 'main' + run: uv run -m pytest --tb=short --disable-warnings diff --git a/Cargo.lock b/Cargo.lock index 35e35e9a..78b1714c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -310,7 +310,7 @@ dependencies = [ [[package]] name = "config" -version = "0.3.9" +version = "0.3.10" dependencies = [ "chrono", "clap", @@ -382,7 +382,7 @@ dependencies = [ [[package]] name = "crypto" -version = "0.3.9" +version = "0.3.10" dependencies = [ "base64", "pem", @@ -2425,7 +2425,7 @@ dependencies = [ [[package]] name = "testutils" -version = "0.3.9" +version = "0.3.10" dependencies = [ "pem", "rsa", @@ -2629,7 +2629,7 @@ dependencies = [ [[package]] name = "tower" -version = "0.3.9" +version = "0.3.10" dependencies = [ "tokio", "tower-api", @@ -2665,7 +2665,7 @@ dependencies = [ [[package]] name = "tower-cmd" -version = "0.3.9" +version = "0.3.10" dependencies = [ "anyhow", "bytes", @@ -2704,7 +2704,7 @@ checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-package" -version = "0.3.9" +version = "0.3.10" dependencies = [ "async-compression", "config", @@ -2722,7 +2722,7 @@ dependencies = [ [[package]] name = "tower-runtime" -version = "0.3.9" +version = "0.3.10" dependencies = [ "chrono", "log", @@ -2739,7 +2739,7 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tower-version" -version = "0.3.9" +version = "0.3.10" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 007a651a..7cf975dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ resolver = "2" [workspace.package] edition = "2021" -version = "0.3.9" +version = "0.3.10" description = "Tower is the best way to host Python data apps in production" rust-version = "1.77" authors = ["Brad Heller "] diff --git a/pyproject.toml b/pyproject.toml index 24da39d3..a76d8a0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "tower" -version = "0.3.9" +version = "0.3.10" description = "Tower CLI and runtime environment for Tower." authors = [{ name = "Tower Computing Inc.", email = "brad@tower.dev" }] readme = "README.md" @@ -45,7 +45,11 @@ dependencies = [ ai = ["huggingface-hub>=0.30.2", "ollama>=0.4.7"] iceberg = ["polars>=1.27.1", "pyarrow>=19.0.1", "pyiceberg>=0.9.0"] all = ["tower[ai,iceberg]"] -dev = ["openapi-python-client>=0.12.1"] +dev = [ + "openapi-python-client>=0.12.1", + "pytest>=8.3.5", + "pytest-httpx>=0.35.0", +] [tool.maturin] bindings = "bin" diff --git a/scripts/generate-python-api-client.sh b/scripts/generate-python-api-client.sh index 38ebb0cf..e1cfd1ff 100755 --- a/scripts/generate-python-api-client.sh +++ b/scripts/generate-python-api-client.sh @@ -6,5 +6,9 @@ TOWER_OPENAPI_URL="https://api.tower.dev/v1/openapi-3.0.yaml" OUTPUT_DIR="src/tower" -cd ${OUTPUT_DIR} && uv run openapi-python-client update --meta none \ +# We have to remove the previously-generated source in case some things were +# removed, etc. +rm -rf ${OUTPUT_DIR}/tower_api_client + +cd ${OUTPUT_DIR} && uv run openapi-python-client generate --meta none \ --url ${TOWER_OPENAPI_URL} diff --git a/src/tower/_client.py b/src/tower/_client.py index e1fb6fad..d30c6ada 100644 --- a/src/tower/_client.py +++ b/src/tower/_client.py @@ -15,6 +15,10 @@ ) from .tower_api_client.models.error_model import ErrorModel +# WAIT_TIMEOUT is the amount of time to wait between requests when polling the +# Tower API. +WAIT_TIMEOUT = 2 + # DEFAULT_TOWER_URL is the default tower URL to use when connecting back to # Tower. DEFAULT_TOWER_URL = "https://api.tower.dev" @@ -43,7 +47,7 @@ def _env_client(ctx: TowerContext) -> AuthenticatedClient: def run_app( - name: str, + slug: str, environment: Optional[str] = None, parameters: Optional[Dict[str, str]] = None, ) -> Run: @@ -68,7 +72,7 @@ def run_app( ) output: Optional[Union[ErrorModel, RunAppResponse]] = run_app_api.sync( - name=name, client=client, json_body=input_body + slug=slug, client=client, body=input_body ) if output is None: @@ -92,7 +96,7 @@ def wait_for_run(run: Run) -> None: while True: output: Optional[Union[DescribeRunResponse, ErrorModel]] = describe_run_api.sync( - name=run.app_name, + slug=run.app_slug, seq=run.number, client=client ) @@ -114,4 +118,4 @@ def wait_for_run(run: Run) -> None: elif desc.status == "errored": return else: - time.sleep(2) + time.sleep(WAIT_TIMEOUT) diff --git a/src/tower/tower_api_client/__init__.py b/src/tower/tower_api_client/__init__.py index ab8f53e7..47e2a4d2 100644 --- a/src/tower/tower_api_client/__init__.py +++ b/src/tower/tower_api_client/__init__.py @@ -1,4 +1,5 @@ -""" A client library for accessing Tower API """ +"""A client library for accessing Tower API""" + from .client import AuthenticatedClient, Client __all__ = ( diff --git a/src/tower/tower_api_client/api/__init__.py b/src/tower/tower_api_client/api/__init__.py index dc035f4c..81f9fa24 100644 --- a/src/tower/tower_api_client/api/__init__.py +++ b/src/tower/tower_api_client/api/__init__.py @@ -1 +1 @@ -""" Contains methods for accessing the API """ +"""Contains methods for accessing the API""" diff --git a/src/tower/tower_api_client/api/default/__init__.py b/src/tower/tower_api_client/api/default/__init__.py index e69de29b..2d7c0b23 100644 --- a/src/tower/tower_api_client/api/default/__init__.py +++ b/src/tower/tower_api_client/api/default/__init__.py @@ -0,0 +1 @@ +"""Contains endpoint functions for accessing the API""" diff --git a/src/tower/tower_api_client/api/default/accept_invitation.py b/src/tower/tower_api_client/api/default/accept_invitation.py index ddb5d747..3cb62388 100644 --- a/src/tower/tower_api_client/api/default/accept_invitation.py +++ b/src/tower/tower_api_client/api/default/accept_invitation.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.accept_invitation_params import AcceptInvitationParams from ...models.accept_invitation_response import AcceptInvitationResponse from ...types import Response @@ -11,140 +12,157 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: AcceptInvitationParams, -) -> Dict[str, Any]: - url = "{}/accounts/invite".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: AcceptInvitationParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/accounts/invite", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[AcceptInvitationResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[AcceptInvitationResponse]: if response.status_code == 200: response_200 = AcceptInvitationResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[AcceptInvitationResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[AcceptInvitationResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: AcceptInvitationParams, + body: AcceptInvitationParams, ) -> Response[AcceptInvitationResponse]: """Accept an invitation code Accept an invitation code to join an account Args: - json_body (AcceptInvitationParams): + body (AcceptInvitationParams): + + 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[AcceptInvitationResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: AcceptInvitationParams, + body: AcceptInvitationParams, ) -> Optional[AcceptInvitationResponse]: """Accept an invitation code Accept an invitation code to join an account Args: - json_body (AcceptInvitationParams): + body (AcceptInvitationParams): + + 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[AcceptInvitationResponse] + AcceptInvitationResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: AcceptInvitationParams, + body: AcceptInvitationParams, ) -> Response[AcceptInvitationResponse]: """Accept an invitation code Accept an invitation code to join an account Args: - json_body (AcceptInvitationParams): + body (AcceptInvitationParams): + + 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[AcceptInvitationResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: AcceptInvitationParams, + body: AcceptInvitationParams, ) -> Optional[AcceptInvitationResponse]: """Accept an invitation code Accept an invitation code to join an account Args: - json_body (AcceptInvitationParams): + body (AcceptInvitationParams): + + 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[AcceptInvitationResponse] + AcceptInvitationResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/cancel_run.py b/src/tower/tower_api_client/api/default/cancel_run.py index 0a9a0201..ab709898 100644 --- a/src/tower/tower_api_client/api/default/cancel_run.py +++ b/src/tower/tower_api_client/api/default/cancel_run.py @@ -1,52 +1,55 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.cancel_run_response import CancelRunResponse from ...types import Response def _get_kwargs( - name: str, + slug: str, seq: int, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/apps/{name}/runs/{seq}".format(client.base_url, name=name, seq=seq) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps/{slug}/runs/{seq}".format( + slug=slug, + seq=seq, + ), } + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[CancelRunResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[CancelRunResponse]: if response.status_code == 200: response_200 = CancelRunResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[CancelRunResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[CancelRunResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( - name: str, + slug: str, seq: int, *, client: AuthenticatedClient, @@ -56,29 +59,31 @@ def sync_detailed( Cancel a run Args: - name (str): The name of the app to fetch runs for. + slug (str): The slug of the app to fetch runs for. seq (int): The number of the run to fetch. + 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[CancelRunResponse] """ kwargs = _get_kwargs( - name=name, + slug=slug, seq=seq, - client=client, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( - name: str, + slug: str, seq: int, *, client: AuthenticatedClient, @@ -88,22 +93,26 @@ def sync( Cancel a run Args: - name (str): The name of the app to fetch runs for. + slug (str): The slug of the app to fetch runs for. seq (int): The number of the run to fetch. + 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[CancelRunResponse] + CancelRunResponse """ return sync_detailed( - name=name, + slug=slug, seq=seq, client=client, ).parsed async def asyncio_detailed( - name: str, + slug: str, seq: int, *, client: AuthenticatedClient, @@ -113,27 +122,29 @@ async def asyncio_detailed( Cancel a run Args: - name (str): The name of the app to fetch runs for. + slug (str): The slug of the app to fetch runs for. seq (int): The number of the run to fetch. + 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[CancelRunResponse] """ kwargs = _get_kwargs( - name=name, + slug=slug, seq=seq, - client=client, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( - name: str, + slug: str, seq: int, *, client: AuthenticatedClient, @@ -143,16 +154,20 @@ async def asyncio( Cancel a run Args: - name (str): The name of the app to fetch runs for. + slug (str): The slug of the app to fetch runs for. seq (int): The number of the run to fetch. + 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[CancelRunResponse] + CancelRunResponse """ return ( await asyncio_detailed( - name=name, + slug=slug, seq=seq, client=client, ) diff --git a/src/tower/tower_api_client/api/default/claim_device_login_ticket.py b/src/tower/tower_api_client/api/default/claim_device_login_ticket.py index a16fde0a..0ac0ce73 100644 --- a/src/tower/tower_api_client/api/default/claim_device_login_ticket.py +++ b/src/tower/tower_api_client/api/default/claim_device_login_ticket.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.claim_device_login_ticket_params import ClaimDeviceLoginTicketParams from ...models.claim_device_login_ticket_response import ClaimDeviceLoginTicketResponse from ...types import Response @@ -11,144 +12,157 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: ClaimDeviceLoginTicketParams, -) -> Dict[str, Any]: - url = "{}/login/device/claim".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: ClaimDeviceLoginTicketParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/login/device/claim", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[ClaimDeviceLoginTicketResponse]: if response.status_code == 200: response_200 = ClaimDeviceLoginTicketResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[ClaimDeviceLoginTicketResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: ClaimDeviceLoginTicketParams, + body: ClaimDeviceLoginTicketParams, ) -> Response[ClaimDeviceLoginTicketResponse]: """Claim a device login ticket Claims a device login ticket code for the authenticated user. Args: - json_body (ClaimDeviceLoginTicketParams): + body (ClaimDeviceLoginTicketParams): + + 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[ClaimDeviceLoginTicketResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: ClaimDeviceLoginTicketParams, + body: ClaimDeviceLoginTicketParams, ) -> Optional[ClaimDeviceLoginTicketResponse]: """Claim a device login ticket Claims a device login ticket code for the authenticated user. Args: - json_body (ClaimDeviceLoginTicketParams): + body (ClaimDeviceLoginTicketParams): + + 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[ClaimDeviceLoginTicketResponse] + ClaimDeviceLoginTicketResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: ClaimDeviceLoginTicketParams, + body: ClaimDeviceLoginTicketParams, ) -> Response[ClaimDeviceLoginTicketResponse]: """Claim a device login ticket Claims a device login ticket code for the authenticated user. Args: - json_body (ClaimDeviceLoginTicketParams): + body (ClaimDeviceLoginTicketParams): + + 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[ClaimDeviceLoginTicketResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: ClaimDeviceLoginTicketParams, + body: ClaimDeviceLoginTicketParams, ) -> Optional[ClaimDeviceLoginTicketResponse]: """Claim a device login ticket Claims a device login ticket code for the authenticated user. Args: - json_body (ClaimDeviceLoginTicketParams): + body (ClaimDeviceLoginTicketParams): + + 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[ClaimDeviceLoginTicketResponse] + ClaimDeviceLoginTicketResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/create_account.py b/src/tower/tower_api_client/api/default/create_account.py index f913e818..dcd79a51 100644 --- a/src/tower/tower_api_client/api/default/create_account.py +++ b/src/tower/tower_api_client/api/default/create_account.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import Client +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.create_account_params import CreateAccountParams from ...models.create_account_response import CreateAccountResponse from ...types import Response @@ -11,140 +12,157 @@ def _get_kwargs( *, - client: Client, - json_body: CreateAccountParams, -) -> Dict[str, Any]: - url = "{}/accounts".format(client.base_url) + body: CreateAccountParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/accounts", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs -def _parse_response(*, response: httpx.Response) -> Optional[CreateAccountResponse]: + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[CreateAccountResponse]: if response.status_code == 200: response_200 = CreateAccountResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[CreateAccountResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[CreateAccountResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, - client: Client, - json_body: CreateAccountParams, + client: Union[AuthenticatedClient, Client], + body: CreateAccountParams, ) -> Response[CreateAccountResponse]: """Create account This is the primary way that users register new accounts with Tower. Args: - json_body (CreateAccountParams): + body (CreateAccountParams): + + 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[CreateAccountResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, - client: Client, - json_body: CreateAccountParams, + client: Union[AuthenticatedClient, Client], + body: CreateAccountParams, ) -> Optional[CreateAccountResponse]: """Create account This is the primary way that users register new accounts with Tower. Args: - json_body (CreateAccountParams): + body (CreateAccountParams): + + 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[CreateAccountResponse] + CreateAccountResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, - client: Client, - json_body: CreateAccountParams, + client: Union[AuthenticatedClient, Client], + body: CreateAccountParams, ) -> Response[CreateAccountResponse]: """Create account This is the primary way that users register new accounts with Tower. Args: - json_body (CreateAccountParams): + body (CreateAccountParams): + + 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[CreateAccountResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, - client: Client, - json_body: CreateAccountParams, + client: Union[AuthenticatedClient, Client], + body: CreateAccountParams, ) -> Optional[CreateAccountResponse]: """Create account This is the primary way that users register new accounts with Tower. Args: - json_body (CreateAccountParams): + body (CreateAccountParams): + + 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[CreateAccountResponse] + CreateAccountResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/create_api_key.py b/src/tower/tower_api_client/api/default/create_api_key.py index 8b77f0fc..9cccd382 100644 --- a/src/tower/tower_api_client/api/default/create_api_key.py +++ b/src/tower/tower_api_client/api/default/create_api_key.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.create_api_key_params import CreateAPIKeyParams from ...models.create_api_key_response import CreateAPIKeyResponse from ...types import Response @@ -11,132 +12,149 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: CreateAPIKeyParams, -) -> Dict[str, Any]: - url = "{}/api-keys".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: CreateAPIKeyParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/api-keys", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[CreateAPIKeyResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[CreateAPIKeyResponse]: if response.status_code == 200: response_200 = CreateAPIKeyResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[CreateAPIKeyResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[CreateAPIKeyResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: CreateAPIKeyParams, + body: CreateAPIKeyParams, ) -> Response[CreateAPIKeyResponse]: """Create API Key Args: - json_body (CreateAPIKeyParams): + body (CreateAPIKeyParams): + + 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[CreateAPIKeyResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: CreateAPIKeyParams, + body: CreateAPIKeyParams, ) -> Optional[CreateAPIKeyResponse]: """Create API Key Args: - json_body (CreateAPIKeyParams): + body (CreateAPIKeyParams): + + 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[CreateAPIKeyResponse] + CreateAPIKeyResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: CreateAPIKeyParams, + body: CreateAPIKeyParams, ) -> Response[CreateAPIKeyResponse]: """Create API Key Args: - json_body (CreateAPIKeyParams): + body (CreateAPIKeyParams): + + 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[CreateAPIKeyResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: CreateAPIKeyParams, + body: CreateAPIKeyParams, ) -> Optional[CreateAPIKeyResponse]: """Create API Key Args: - json_body (CreateAPIKeyParams): + body (CreateAPIKeyParams): + + 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[CreateAPIKeyResponse] + CreateAPIKeyResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/create_app.py b/src/tower/tower_api_client/api/default/create_app.py new file mode 100644 index 00000000..9d3701ae --- /dev/null +++ b/src/tower/tower_api_client/api/default/create_app.py @@ -0,0 +1,168 @@ +from http import HTTPStatus +from typing import Any, Optional, Union + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.create_app_params import CreateAppParams +from ...models.create_app_response import CreateAppResponse +from ...types import Response + + +def _get_kwargs( + *, + body: CreateAppParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/apps", + } + + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[CreateAppResponse]: + if response.status_code == 200: + response_200 = CreateAppResponse.from_dict(response.json()) + + return response_200 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[CreateAppResponse]: + 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: AuthenticatedClient, + body: CreateAppParams, +) -> Response[CreateAppResponse]: + """Create app + + Create a new app in the current account. + + Args: + body (CreateAppParams): + + 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[CreateAppResponse] + """ + + kwargs = _get_kwargs( + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + *, + client: AuthenticatedClient, + body: CreateAppParams, +) -> Optional[CreateAppResponse]: + """Create app + + Create a new app in the current account. + + Args: + body (CreateAppParams): + + 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: + CreateAppResponse + """ + + return sync_detailed( + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + *, + client: AuthenticatedClient, + body: CreateAppParams, +) -> Response[CreateAppResponse]: + """Create app + + Create a new app in the current account. + + Args: + body (CreateAppParams): + + 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[CreateAppResponse] + """ + + kwargs = _get_kwargs( + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + *, + client: AuthenticatedClient, + body: CreateAppParams, +) -> Optional[CreateAppResponse]: + """Create app + + Create a new app in the current account. + + Args: + body (CreateAppParams): + + 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: + CreateAppResponse + """ + + return ( + await asyncio_detailed( + client=client, + body=body, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/create_apps.py b/src/tower/tower_api_client/api/default/create_apps.py deleted file mode 100644 index 29242ca2..00000000 --- a/src/tower/tower_api_client/api/default/create_apps.py +++ /dev/null @@ -1,150 +0,0 @@ -from http import HTTPStatus -from typing import Any, Dict, Optional - -import httpx - -from ...client import AuthenticatedClient -from ...models.create_app_params import CreateAppParams -from ...models.create_app_response import CreateAppResponse -from ...types import Response - - -def _get_kwargs( - *, - client: AuthenticatedClient, - json_body: CreateAppParams, -) -> Dict[str, Any]: - url = "{}/apps".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - json_json_body = json_body.to_dict() - - return { - "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, - } - - -def _parse_response(*, response: httpx.Response) -> Optional[CreateAppResponse]: - if response.status_code == 200: - response_200 = CreateAppResponse.from_dict(response.json()) - - return response_200 - return None - - -def _build_response(*, response: httpx.Response) -> Response[CreateAppResponse]: - return Response( - status_code=HTTPStatus(response.status_code), - content=response.content, - headers=response.headers, - parsed=_parse_response(response=response), - ) - - -def sync_detailed( - *, - client: AuthenticatedClient, - json_body: CreateAppParams, -) -> Response[CreateAppResponse]: - """Create app - - Create a new app in the current account. - - Args: - json_body (CreateAppParams): - - Returns: - Response[CreateAppResponse] - """ - - kwargs = _get_kwargs( - client=client, - json_body=json_body, - ) - - response = httpx.request( - verify=client.verify_ssl, - **kwargs, - ) - - return _build_response(response=response) - - -def sync( - *, - client: AuthenticatedClient, - json_body: CreateAppParams, -) -> Optional[CreateAppResponse]: - """Create app - - Create a new app in the current account. - - Args: - json_body (CreateAppParams): - - Returns: - Response[CreateAppResponse] - """ - - return sync_detailed( - client=client, - json_body=json_body, - ).parsed - - -async def asyncio_detailed( - *, - client: AuthenticatedClient, - json_body: CreateAppParams, -) -> Response[CreateAppResponse]: - """Create app - - Create a new app in the current account. - - Args: - json_body (CreateAppParams): - - Returns: - Response[CreateAppResponse] - """ - - kwargs = _get_kwargs( - client=client, - json_body=json_body, - ) - - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) - - return _build_response(response=response) - - -async def asyncio( - *, - client: AuthenticatedClient, - json_body: CreateAppParams, -) -> Optional[CreateAppResponse]: - """Create app - - Create a new app in the current account. - - Args: - json_body (CreateAppParams): - - Returns: - Response[CreateAppResponse] - """ - - return ( - await asyncio_detailed( - client=client, - json_body=json_body, - ) - ).parsed diff --git a/src/tower/tower_api_client/api/default/create_catalog.py b/src/tower/tower_api_client/api/default/create_catalog.py new file mode 100644 index 00000000..8cfb0e0b --- /dev/null +++ b/src/tower/tower_api_client/api/default/create_catalog.py @@ -0,0 +1,168 @@ +from http import HTTPStatus +from typing import Any, Optional, Union + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.create_catalog_params import CreateCatalogParams +from ...models.create_catalog_response import CreateCatalogResponse +from ...types import Response + + +def _get_kwargs( + *, + body: CreateCatalogParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/catalogs", + } + + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[CreateCatalogResponse]: + if response.status_code == 200: + response_200 = CreateCatalogResponse.from_dict(response.json()) + + return response_200 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[CreateCatalogResponse]: + 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: AuthenticatedClient, + body: CreateCatalogParams, +) -> Response[CreateCatalogResponse]: + """Create catalog + + Create a new catalog object in the currently authenticated account. + + Args: + body (CreateCatalogParams): + + 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[CreateCatalogResponse] + """ + + kwargs = _get_kwargs( + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + *, + client: AuthenticatedClient, + body: CreateCatalogParams, +) -> Optional[CreateCatalogResponse]: + """Create catalog + + Create a new catalog object in the currently authenticated account. + + Args: + body (CreateCatalogParams): + + 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: + CreateCatalogResponse + """ + + return sync_detailed( + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + *, + client: AuthenticatedClient, + body: CreateCatalogParams, +) -> Response[CreateCatalogResponse]: + """Create catalog + + Create a new catalog object in the currently authenticated account. + + Args: + body (CreateCatalogParams): + + 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[CreateCatalogResponse] + """ + + kwargs = _get_kwargs( + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + *, + client: AuthenticatedClient, + body: CreateCatalogParams, +) -> Optional[CreateCatalogResponse]: + """Create catalog + + Create a new catalog object in the currently authenticated account. + + Args: + body (CreateCatalogParams): + + 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: + CreateCatalogResponse + """ + + return ( + await asyncio_detailed( + client=client, + body=body, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/create_device_login_ticket.py b/src/tower/tower_api_client/api/default/create_device_login_ticket.py index 12afec5c..5aa29947 100644 --- a/src/tower/tower_api_client/api/default/create_device_login_ticket.py +++ b/src/tower/tower_api_client/api/default/create_device_login_ticket.py @@ -1,88 +1,88 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import Client +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.create_device_login_ticket_response import ( CreateDeviceLoginTicketResponse, ) from ...types import Response -def _get_kwargs( - *, - client: Client, -) -> Dict[str, Any]: - url = "{}/login/device".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +def _get_kwargs() -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/login/device", } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[CreateDeviceLoginTicketResponse]: if response.status_code == 200: response_200 = CreateDeviceLoginTicketResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[CreateDeviceLoginTicketResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, - client: Client, + client: Union[AuthenticatedClient, Client], ) -> Response[CreateDeviceLoginTicketResponse]: - """Create a device login ticket + """Create device login ticket Creates a new device login ticket and returns the codes and urls needed for authentication. + 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[CreateDeviceLoginTicketResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, - client: Client, + client: Union[AuthenticatedClient, Client], ) -> Optional[CreateDeviceLoginTicketResponse]: - """Create a device login ticket + """Create device login ticket Creates a new device login ticket and returns the codes and urls needed for authentication. + 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[CreateDeviceLoginTicketResponse] + CreateDeviceLoginTicketResponse """ return sync_detailed( @@ -92,36 +92,41 @@ def sync( async def asyncio_detailed( *, - client: Client, + client: Union[AuthenticatedClient, Client], ) -> Response[CreateDeviceLoginTicketResponse]: - """Create a device login ticket + """Create device login ticket Creates a new device login ticket and returns the codes and urls needed for authentication. + 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[CreateDeviceLoginTicketResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, - client: Client, + client: Union[AuthenticatedClient, Client], ) -> Optional[CreateDeviceLoginTicketResponse]: - """Create a device login ticket + """Create device login ticket Creates a new device login ticket and returns the codes and urls needed for authentication. + 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[CreateDeviceLoginTicketResponse] + CreateDeviceLoginTicketResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/create_secret.py b/src/tower/tower_api_client/api/default/create_secret.py index 3a039b80..1907aaa7 100644 --- a/src/tower/tower_api_client/api/default/create_secret.py +++ b/src/tower/tower_api_client/api/default/create_secret.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.create_secret_params import CreateSecretParams from ...models.create_secret_response import CreateSecretResponse from ...types import Response @@ -11,140 +12,157 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: CreateSecretParams, -) -> Dict[str, Any]: - url = "{}/secrets".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: CreateSecretParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/secrets", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[CreateSecretResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[CreateSecretResponse]: if response.status_code == 200: response_200 = CreateSecretResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[CreateSecretResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[CreateSecretResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: CreateSecretParams, + body: CreateSecretParams, ) -> Response[CreateSecretResponse]: """Create secret Creates a new secret and associates it with the current account. Args: - json_body (CreateSecretParams): + body (CreateSecretParams): + + 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[CreateSecretResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: CreateSecretParams, + body: CreateSecretParams, ) -> Optional[CreateSecretResponse]: """Create secret Creates a new secret and associates it with the current account. Args: - json_body (CreateSecretParams): + body (CreateSecretParams): + + 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[CreateSecretResponse] + CreateSecretResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: CreateSecretParams, + body: CreateSecretParams, ) -> Response[CreateSecretResponse]: """Create secret Creates a new secret and associates it with the current account. Args: - json_body (CreateSecretParams): + body (CreateSecretParams): + + 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[CreateSecretResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: CreateSecretParams, + body: CreateSecretParams, ) -> Optional[CreateSecretResponse]: """Create secret Creates a new secret and associates it with the current account. Args: - json_body (CreateSecretParams): + body (CreateSecretParams): + + 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[CreateSecretResponse] + CreateSecretResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/create_session.py b/src/tower/tower_api_client/api/default/create_session.py index 81a7ae8f..82bf7a01 100644 --- a/src/tower/tower_api_client/api/default/create_session.py +++ b/src/tower/tower_api_client/api/default/create_session.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import Client +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.create_session_params import CreateSessionParams from ...models.create_session_response import CreateSessionResponse from ...types import Response @@ -11,140 +12,157 @@ def _get_kwargs( *, - client: Client, - json_body: CreateSessionParams, -) -> Dict[str, Any]: - url = "{}/session".format(client.base_url) + body: CreateSessionParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/session", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs -def _parse_response(*, response: httpx.Response) -> Optional[CreateSessionResponse]: + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[CreateSessionResponse]: if response.status_code == 200: response_200 = CreateSessionResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[CreateSessionResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[CreateSessionResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, - client: Client, - json_body: CreateSessionParams, + client: Union[AuthenticatedClient, Client], + body: CreateSessionParams, ) -> Response[CreateSessionResponse]: """Create session Create a new session and return it. Args: - json_body (CreateSessionParams): + body (CreateSessionParams): + + 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[CreateSessionResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, - client: Client, - json_body: CreateSessionParams, + client: Union[AuthenticatedClient, Client], + body: CreateSessionParams, ) -> Optional[CreateSessionResponse]: """Create session Create a new session and return it. Args: - json_body (CreateSessionParams): + body (CreateSessionParams): + + 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[CreateSessionResponse] + CreateSessionResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, - client: Client, - json_body: CreateSessionParams, + client: Union[AuthenticatedClient, Client], + body: CreateSessionParams, ) -> Response[CreateSessionResponse]: """Create session Create a new session and return it. Args: - json_body (CreateSessionParams): + body (CreateSessionParams): + + 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[CreateSessionResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, - client: Client, - json_body: CreateSessionParams, + client: Union[AuthenticatedClient, Client], + body: CreateSessionParams, ) -> Optional[CreateSessionResponse]: """Create session Create a new session and return it. Args: - json_body (CreateSessionParams): + body (CreateSessionParams): + + 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[CreateSessionResponse] + CreateSessionResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/create_team.py b/src/tower/tower_api_client/api/default/create_team.py index 8ff88712..58ab0644 100644 --- a/src/tower/tower_api_client/api/default/create_team.py +++ b/src/tower/tower_api_client/api/default/create_team.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.create_team_params import CreateTeamParams from ...models.create_team_response import CreateTeamResponse from ...types import Response @@ -11,140 +12,157 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: CreateTeamParams, -) -> Dict[str, Any]: - url = "{}/teams".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: CreateTeamParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/teams", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[CreateTeamResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[CreateTeamResponse]: if response.status_code == 200: response_200 = CreateTeamResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[CreateTeamResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[CreateTeamResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: CreateTeamParams, + body: CreateTeamParams, ) -> Response[CreateTeamResponse]: - """Create Team + """Create team Create a new team Args: - json_body (CreateTeamParams): + body (CreateTeamParams): + + 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[CreateTeamResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: CreateTeamParams, + body: CreateTeamParams, ) -> Optional[CreateTeamResponse]: - """Create Team + """Create team Create a new team Args: - json_body (CreateTeamParams): + body (CreateTeamParams): + + 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[CreateTeamResponse] + CreateTeamResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: CreateTeamParams, + body: CreateTeamParams, ) -> Response[CreateTeamResponse]: - """Create Team + """Create team Create a new team Args: - json_body (CreateTeamParams): + body (CreateTeamParams): + + 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[CreateTeamResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: CreateTeamParams, + body: CreateTeamParams, ) -> Optional[CreateTeamResponse]: - """Create Team + """Create team Create a new team Args: - json_body (CreateTeamParams): + body (CreateTeamParams): + + 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[CreateTeamResponse] + CreateTeamResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/delete_api_key.py b/src/tower/tower_api_client/api/default/delete_api_key.py index e5ba86e1..3774096d 100644 --- a/src/tower/tower_api_client/api/default/delete_api_key.py +++ b/src/tower/tower_api_client/api/default/delete_api_key.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.delete_api_key_params import DeleteAPIKeyParams from ...models.delete_api_key_response import DeleteAPIKeyResponse from ...types import Response @@ -11,132 +12,149 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: DeleteAPIKeyParams, -) -> Dict[str, Any]: - url = "{}/api-keys".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: DeleteAPIKeyParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "delete", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/api-keys", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[DeleteAPIKeyResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[DeleteAPIKeyResponse]: if response.status_code == 200: response_200 = DeleteAPIKeyResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[DeleteAPIKeyResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[DeleteAPIKeyResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: DeleteAPIKeyParams, + body: DeleteAPIKeyParams, ) -> Response[DeleteAPIKeyResponse]: - """Delete API Key + """Delete API key Args: - json_body (DeleteAPIKeyParams): + body (DeleteAPIKeyParams): + + 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[DeleteAPIKeyResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: DeleteAPIKeyParams, + body: DeleteAPIKeyParams, ) -> Optional[DeleteAPIKeyResponse]: - """Delete API Key + """Delete API key Args: - json_body (DeleteAPIKeyParams): + body (DeleteAPIKeyParams): + + 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[DeleteAPIKeyResponse] + DeleteAPIKeyResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: DeleteAPIKeyParams, + body: DeleteAPIKeyParams, ) -> Response[DeleteAPIKeyResponse]: - """Delete API Key + """Delete API key Args: - json_body (DeleteAPIKeyParams): + body (DeleteAPIKeyParams): + + 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[DeleteAPIKeyResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: DeleteAPIKeyParams, + body: DeleteAPIKeyParams, ) -> Optional[DeleteAPIKeyResponse]: - """Delete API Key + """Delete API key Args: - json_body (DeleteAPIKeyParams): + body (DeleteAPIKeyParams): + + 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[DeleteAPIKeyResponse] + DeleteAPIKeyResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/delete_app.py b/src/tower/tower_api_client/api/default/delete_app.py index fbcf3542..ad9bdf2f 100644 --- a/src/tower/tower_api_client/api/default/delete_app.py +++ b/src/tower/tower_api_client/api/default/delete_app.py @@ -1,51 +1,53 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.delete_app_response import DeleteAppResponse from ...types import Response def _get_kwargs( - name: str, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/apps/{name}".format(client.base_url, name=name) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { + slug: str, +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "delete", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps/{slug}".format( + slug=slug, + ), } + return _kwargs -def _parse_response(*, response: httpx.Response) -> Optional[DeleteAppResponse]: + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[DeleteAppResponse]: if response.status_code == 200: response_200 = DeleteAppResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[DeleteAppResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[DeleteAppResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, ) -> Response[DeleteAppResponse]: @@ -54,27 +56,29 @@ def sync_detailed( Delete one of your apps, the associated code, and all the runs as well. Args: - name (str): The name of the app to delete. + slug (str): The slug of the app to delete. + + 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[DeleteAppResponse] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( - name: str, + slug: str, *, client: AuthenticatedClient, ) -> Optional[DeleteAppResponse]: @@ -83,20 +87,24 @@ def sync( Delete one of your apps, the associated code, and all the runs as well. Args: - name (str): The name of the app to delete. + slug (str): The slug of the app to delete. + + 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[DeleteAppResponse] + DeleteAppResponse """ return sync_detailed( - name=name, + slug=slug, client=client, ).parsed async def asyncio_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, ) -> Response[DeleteAppResponse]: @@ -105,25 +113,27 @@ async def asyncio_detailed( Delete one of your apps, the associated code, and all the runs as well. Args: - name (str): The name of the app to delete. + slug (str): The slug of the app to delete. + + 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[DeleteAppResponse] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( - name: str, + slug: str, *, client: AuthenticatedClient, ) -> Optional[DeleteAppResponse]: @@ -132,15 +142,19 @@ async def asyncio( Delete one of your apps, the associated code, and all the runs as well. Args: - name (str): The name of the app to delete. + slug (str): The slug of the app to delete. + + 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[DeleteAppResponse] + DeleteAppResponse """ return ( await asyncio_detailed( - name=name, + slug=slug, client=client, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/delete_catalog.py b/src/tower/tower_api_client/api/default/delete_catalog.py new file mode 100644 index 00000000..85ca4995 --- /dev/null +++ b/src/tower/tower_api_client/api/default/delete_catalog.py @@ -0,0 +1,160 @@ +from http import HTTPStatus +from typing import Any, Optional, Union + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.delete_catalog_response import DeleteCatalogResponse +from ...types import Response + + +def _get_kwargs( + slug: str, +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { + "method": "delete", + "url": "/catalogs/{slug}".format( + slug=slug, + ), + } + + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[DeleteCatalogResponse]: + if response.status_code == 200: + response_200 = DeleteCatalogResponse.from_dict(response.json()) + + return response_200 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[DeleteCatalogResponse]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + slug: str, + *, + client: AuthenticatedClient, +) -> Response[DeleteCatalogResponse]: + """Delete catalog + + Delete a new catalog object in the currently authenticated account. + + Args: + slug (str): The slug of the catalog to update. + + 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[DeleteCatalogResponse] + """ + + kwargs = _get_kwargs( + slug=slug, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + slug: str, + *, + client: AuthenticatedClient, +) -> Optional[DeleteCatalogResponse]: + """Delete catalog + + Delete a new catalog object in the currently authenticated account. + + Args: + slug (str): The slug of the catalog to update. + + 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: + DeleteCatalogResponse + """ + + return sync_detailed( + slug=slug, + client=client, + ).parsed + + +async def asyncio_detailed( + slug: str, + *, + client: AuthenticatedClient, +) -> Response[DeleteCatalogResponse]: + """Delete catalog + + Delete a new catalog object in the currently authenticated account. + + Args: + slug (str): The slug of the catalog to update. + + 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[DeleteCatalogResponse] + """ + + kwargs = _get_kwargs( + slug=slug, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + slug: str, + *, + client: AuthenticatedClient, +) -> Optional[DeleteCatalogResponse]: + """Delete catalog + + Delete a new catalog object in the currently authenticated account. + + Args: + slug (str): The slug of the catalog to update. + + 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: + DeleteCatalogResponse + """ + + return ( + await asyncio_detailed( + slug=slug, + client=client, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/delete_secret.py b/src/tower/tower_api_client/api/default/delete_secret.py index 61692b12..ad7e8047 100644 --- a/src/tower/tower_api_client/api/default/delete_secret.py +++ b/src/tower/tower_api_client/api/default/delete_secret.py @@ -1,44 +1,54 @@ from http import HTTPStatus -from typing import Any, Dict, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...types import UNSET, Response, Unset def _get_kwargs( name: str, *, - client: AuthenticatedClient, - environment: Union[Unset, None, str] = UNSET, -) -> Dict[str, Any]: - url = "{}/secrets/{name}".format(client.base_url, name=name) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + environment: Union[Unset, str] = UNSET, +) -> dict[str, Any]: + params: dict[str, Any] = {} - params: Dict[str, Any] = {} params["environment"] = environment params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - return { + _kwargs: dict[str, Any] = { "method": "delete", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/secrets/{name}".format( + name=name, + ), "params": params, } + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[Any]: + if response.status_code == 204: + return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[Any]: + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[Any]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=None, + parsed=_parse_response(client=client, response=response), ) @@ -46,15 +56,19 @@ def sync_detailed( name: str, *, client: AuthenticatedClient, - environment: Union[Unset, None, str] = UNSET, + environment: Union[Unset, str] = UNSET, ) -> Response[Any]: - """Delete a secret. + """Delete secret Delete a secret by name. Args: name (str): The name of the secret to delete. - environment (Union[Unset, None, str]): The environment of the secret to delete. + environment (Union[Unset, str]): The environment of the secret to delete. + + 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] @@ -62,31 +76,33 @@ def sync_detailed( kwargs = _get_kwargs( name=name, - client=client, environment=environment, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio_detailed( name: str, *, client: AuthenticatedClient, - environment: Union[Unset, None, str] = UNSET, + environment: Union[Unset, str] = UNSET, ) -> Response[Any]: - """Delete a secret. + """Delete secret Delete a secret by name. Args: name (str): The name of the secret to delete. - environment (Union[Unset, None, str]): The environment of the secret to delete. + environment (Union[Unset, str]): The environment of the secret to delete. + + 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] @@ -94,11 +110,9 @@ async def asyncio_detailed( kwargs = _get_kwargs( name=name, - client=client, environment=environment, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) diff --git a/src/tower/tower_api_client/api/default/delete_team.py b/src/tower/tower_api_client/api/default/delete_team.py index 5e0d271d..3fcee983 100644 --- a/src/tower/tower_api_client/api/default/delete_team.py +++ b/src/tower/tower_api_client/api/default/delete_team.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.delete_team_params import DeleteTeamParams from ...models.delete_team_response import DeleteTeamResponse from ...types import Response @@ -11,140 +12,157 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: DeleteTeamParams, -) -> Dict[str, Any]: - url = "{}/teams".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: DeleteTeamParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "delete", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/teams", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[DeleteTeamResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[DeleteTeamResponse]: if response.status_code == 200: response_200 = DeleteTeamResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[DeleteTeamResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[DeleteTeamResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: DeleteTeamParams, + body: DeleteTeamParams, ) -> Response[DeleteTeamResponse]: - """Delete Team + """Delete team Delete a new team Args: - json_body (DeleteTeamParams): + body (DeleteTeamParams): + + 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[DeleteTeamResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: DeleteTeamParams, + body: DeleteTeamParams, ) -> Optional[DeleteTeamResponse]: - """Delete Team + """Delete team Delete a new team Args: - json_body (DeleteTeamParams): + body (DeleteTeamParams): + + 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[DeleteTeamResponse] + DeleteTeamResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: DeleteTeamParams, + body: DeleteTeamParams, ) -> Response[DeleteTeamResponse]: - """Delete Team + """Delete team Delete a new team Args: - json_body (DeleteTeamParams): + body (DeleteTeamParams): + + 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[DeleteTeamResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: DeleteTeamParams, + body: DeleteTeamParams, ) -> Optional[DeleteTeamResponse]: - """Delete Team + """Delete team Delete a new team Args: - json_body (DeleteTeamParams): + body (DeleteTeamParams): + + 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[DeleteTeamResponse] + DeleteTeamResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/delete_team_invitation.py b/src/tower/tower_api_client/api/default/delete_team_invitation.py index fbcaa33e..f15cbc89 100644 --- a/src/tower/tower_api_client/api/default/delete_team_invitation.py +++ b/src/tower/tower_api_client/api/default/delete_team_invitation.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.delete_team_invitation_params import DeleteTeamInvitationParams from ...models.delete_team_invitation_response import DeleteTeamInvitationResponse from ...types import Response @@ -12,44 +13,47 @@ def _get_kwargs( slug: str, *, - client: AuthenticatedClient, - json_body: DeleteTeamInvitationParams, -) -> Dict[str, Any]: - url = "{}/teams/{slug}/invites".format(client.base_url, slug=slug) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: DeleteTeamInvitationParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "delete", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/teams/{slug}/invites".format( + slug=slug, + ), } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[DeleteTeamInvitationResponse]: if response.status_code == 200: response_200 = DeleteTeamInvitationResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[DeleteTeamInvitationResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -57,15 +61,19 @@ def sync_detailed( slug: str, *, client: AuthenticatedClient, - json_body: DeleteTeamInvitationParams, + body: DeleteTeamInvitationParams, ) -> Response[DeleteTeamInvitationResponse]: - """Delete Team Invitation + """Delete team invitation Delete a pending team invitation that you have previously sent Args: slug (str): The slug of the team to remove someone from - json_body (DeleteTeamInvitationParams): + body (DeleteTeamInvitationParams): + + 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[DeleteTeamInvitationResponse] @@ -73,40 +81,42 @@ def sync_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( slug: str, *, client: AuthenticatedClient, - json_body: DeleteTeamInvitationParams, + body: DeleteTeamInvitationParams, ) -> Optional[DeleteTeamInvitationResponse]: - """Delete Team Invitation + """Delete team invitation Delete a pending team invitation that you have previously sent Args: slug (str): The slug of the team to remove someone from - json_body (DeleteTeamInvitationParams): + body (DeleteTeamInvitationParams): + + 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[DeleteTeamInvitationResponse] + DeleteTeamInvitationResponse """ return sync_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ).parsed @@ -114,15 +124,19 @@ async def asyncio_detailed( slug: str, *, client: AuthenticatedClient, - json_body: DeleteTeamInvitationParams, + body: DeleteTeamInvitationParams, ) -> Response[DeleteTeamInvitationResponse]: - """Delete Team Invitation + """Delete team invitation Delete a pending team invitation that you have previously sent Args: slug (str): The slug of the team to remove someone from - json_body (DeleteTeamInvitationParams): + body (DeleteTeamInvitationParams): + + 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[DeleteTeamInvitationResponse] @@ -130,38 +144,40 @@ async def asyncio_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( slug: str, *, client: AuthenticatedClient, - json_body: DeleteTeamInvitationParams, + body: DeleteTeamInvitationParams, ) -> Optional[DeleteTeamInvitationResponse]: - """Delete Team Invitation + """Delete team invitation Delete a pending team invitation that you have previously sent Args: slug (str): The slug of the team to remove someone from - json_body (DeleteTeamInvitationParams): + body (DeleteTeamInvitationParams): + + 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[DeleteTeamInvitationResponse] + DeleteTeamInvitationResponse """ return ( await asyncio_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/deploy_app.py b/src/tower/tower_api_client/api/default/deploy_app.py index 1981394b..a9698164 100644 --- a/src/tower/tower_api_client/api/default/deploy_app.py +++ b/src/tower/tower_api_client/api/default/deploy_app.py @@ -1,165 +1,195 @@ from http import HTTPStatus -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.deploy_app_response import DeployAppResponse +from ...models.error_model import ErrorModel from ...types import UNSET, Response, Unset def _get_kwargs( - name: str, + slug: str, *, - client: AuthenticatedClient, content_encoding: Union[Unset, str] = UNSET, -) -> Dict[str, Any]: - url = "{}/apps/{name}/deploy".format(client.base_url, name=name) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - +) -> dict[str, Any]: + headers: dict[str, Any] = {} if not isinstance(content_encoding, Unset): headers["Content-Encoding"] = content_encoding - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps/{slug}/deploy".format( + slug=slug, + ), } + _kwargs["headers"] = headers + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[DeployAppResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[Union[DeployAppResponse, ErrorModel]]: if response.status_code == 200: response_200 = DeployAppResponse.from_dict(response.json()) return response_200 - return None + if response.status_code == 400: + response_400 = ErrorModel.from_dict(response.json()) + + return response_400 + if response.status_code == 422: + response_422 = ErrorModel.from_dict(response.json()) + + return response_422 + if response.status_code == 500: + response_500 = ErrorModel.from_dict(response.json()) + + return response_500 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[DeployAppResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[Union[DeployAppResponse, ErrorModel]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, content_encoding: Union[Unset, str] = UNSET, -) -> Response[DeployAppResponse]: +) -> Response[Union[DeployAppResponse, ErrorModel]]: """Deploy app Deploy a new version of an app. Reads the request body, which is a TAR file (or a GZipped TAR file) and creates a new deployment for an app based on that file. Args: - name (str): The name of the app to deploy. + slug (str): The slug of the app to deploy. content_encoding (Union[Unset, str]): The encoding of the content. + 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[DeployAppResponse] + Response[Union[DeployAppResponse, ErrorModel]] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, content_encoding=content_encoding, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( - name: str, + slug: str, *, client: AuthenticatedClient, content_encoding: Union[Unset, str] = UNSET, -) -> Optional[DeployAppResponse]: +) -> Optional[Union[DeployAppResponse, ErrorModel]]: """Deploy app Deploy a new version of an app. Reads the request body, which is a TAR file (or a GZipped TAR file) and creates a new deployment for an app based on that file. Args: - name (str): The name of the app to deploy. + slug (str): The slug of the app to deploy. content_encoding (Union[Unset, str]): The encoding of the content. + 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[DeployAppResponse] + Union[DeployAppResponse, ErrorModel] """ return sync_detailed( - name=name, + slug=slug, client=client, content_encoding=content_encoding, ).parsed async def asyncio_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, content_encoding: Union[Unset, str] = UNSET, -) -> Response[DeployAppResponse]: +) -> Response[Union[DeployAppResponse, ErrorModel]]: """Deploy app Deploy a new version of an app. Reads the request body, which is a TAR file (or a GZipped TAR file) and creates a new deployment for an app based on that file. Args: - name (str): The name of the app to deploy. + slug (str): The slug of the app to deploy. content_encoding (Union[Unset, str]): The encoding of the content. + 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[DeployAppResponse] + Response[Union[DeployAppResponse, ErrorModel]] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, content_encoding=content_encoding, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( - name: str, + slug: str, *, client: AuthenticatedClient, content_encoding: Union[Unset, str] = UNSET, -) -> Optional[DeployAppResponse]: +) -> Optional[Union[DeployAppResponse, ErrorModel]]: """Deploy app Deploy a new version of an app. Reads the request body, which is a TAR file (or a GZipped TAR file) and creates a new deployment for an app based on that file. Args: - name (str): The name of the app to deploy. + slug (str): The slug of the app to deploy. content_encoding (Union[Unset, str]): The encoding of the content. + 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[DeployAppResponse] + Union[DeployAppResponse, ErrorModel] """ return ( await asyncio_detailed( - name=name, + slug=slug, client=client, content_encoding=content_encoding, ) diff --git a/src/tower/tower_api_client/api/default/describe_app.py b/src/tower/tower_api_client/api/default/describe_app.py index 3447e51e..ce09fd48 100644 --- a/src/tower/tower_api_client/api/default/describe_app.py +++ b/src/tower/tower_api_client/api/default/describe_app.py @@ -1,164 +1,180 @@ from http import HTTPStatus -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.describe_app_response import DescribeAppResponse from ...types import UNSET, Response, Unset def _get_kwargs( - name: str, + slug: str, *, - client: AuthenticatedClient, - runs: Union[Unset, None, int] = UNSET, -) -> Dict[str, Any]: - url = "{}/apps/{name}".format(client.base_url, name=name) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + runs: Union[Unset, int] = UNSET, +) -> dict[str, Any]: + params: dict[str, Any] = {} - params: Dict[str, Any] = {} params["runs"] = runs params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - return { + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps/{slug}".format( + slug=slug, + ), "params": params, } + return _kwargs -def _parse_response(*, response: httpx.Response) -> Optional[DescribeAppResponse]: + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[DescribeAppResponse]: if response.status_code == 200: response_200 = DescribeAppResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[DescribeAppResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[DescribeAppResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, - runs: Union[Unset, None, int] = UNSET, + runs: Union[Unset, int] = UNSET, ) -> Response[DescribeAppResponse]: """Describe app Get all the runs for the current account. Args: - name (str): The name of the app to fetch. - runs (Union[Unset, None, int]): The number of recent runs to fetch for the app. + slug (str): The slug of the app to fetch. + runs (Union[Unset, int]): The number of recent runs to fetch for the app. + + 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[DescribeAppResponse] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, runs=runs, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( - name: str, + slug: str, *, client: AuthenticatedClient, - runs: Union[Unset, None, int] = UNSET, + runs: Union[Unset, int] = UNSET, ) -> Optional[DescribeAppResponse]: """Describe app Get all the runs for the current account. Args: - name (str): The name of the app to fetch. - runs (Union[Unset, None, int]): The number of recent runs to fetch for the app. + slug (str): The slug of the app to fetch. + runs (Union[Unset, int]): The number of recent runs to fetch for the app. + + 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[DescribeAppResponse] + DescribeAppResponse """ return sync_detailed( - name=name, + slug=slug, client=client, runs=runs, ).parsed async def asyncio_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, - runs: Union[Unset, None, int] = UNSET, + runs: Union[Unset, int] = UNSET, ) -> Response[DescribeAppResponse]: """Describe app Get all the runs for the current account. Args: - name (str): The name of the app to fetch. - runs (Union[Unset, None, int]): The number of recent runs to fetch for the app. + slug (str): The slug of the app to fetch. + runs (Union[Unset, int]): The number of recent runs to fetch for the app. + + 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[DescribeAppResponse] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, runs=runs, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( - name: str, + slug: str, *, client: AuthenticatedClient, - runs: Union[Unset, None, int] = UNSET, + runs: Union[Unset, int] = UNSET, ) -> Optional[DescribeAppResponse]: """Describe app Get all the runs for the current account. Args: - name (str): The name of the app to fetch. - runs (Union[Unset, None, int]): The number of recent runs to fetch for the app. + slug (str): The slug of the app to fetch. + runs (Union[Unset, int]): The number of recent runs to fetch for the app. + + 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[DescribeAppResponse] + DescribeAppResponse """ return ( await asyncio_detailed( - name=name, + slug=slug, client=client, runs=runs, ) diff --git a/src/tower/tower_api_client/api/default/describe_app_version.py b/src/tower/tower_api_client/api/default/describe_app_version.py index 2851a0d5..87d46540 100644 --- a/src/tower/tower_api_client/api/default/describe_app_version.py +++ b/src/tower/tower_api_client/api/default/describe_app_version.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.describe_app_version_response import DescribeAppVersionResponse from ...types import Response @@ -11,41 +12,39 @@ def _get_kwargs( name: str, num: str, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/apps/{name}/versions/{num}".format(client.base_url, name=name, num=num) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps/{name}/versions/{num}".format( + name=name, + num=num, + ), } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[DescribeAppVersionResponse]: if response.status_code == 200: response_200 = DescribeAppVersionResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[DescribeAppVersionResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -63,6 +62,10 @@ def sync_detailed( name (str): The name of the app to get the version for. num (str): The version string to get the version for. + 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[DescribeAppVersionResponse] """ @@ -70,15 +73,13 @@ def sync_detailed( kwargs = _get_kwargs( name=name, num=num, - client=client, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( @@ -95,8 +96,12 @@ def sync( name (str): The name of the app to get the version for. num (str): The version string to get the version for. + 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[DescribeAppVersionResponse] + DescribeAppVersionResponse """ return sync_detailed( @@ -120,6 +125,10 @@ async def asyncio_detailed( name (str): The name of the app to get the version for. num (str): The version string to get the version for. + 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[DescribeAppVersionResponse] """ @@ -127,13 +136,11 @@ async def asyncio_detailed( kwargs = _get_kwargs( name=name, num=num, - client=client, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( @@ -150,8 +157,12 @@ async def asyncio( name (str): The name of the app to get the version for. num (str): The version string to get the version for. + 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[DescribeAppVersionResponse] + DescribeAppVersionResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/describe_device_login_session.py b/src/tower/tower_api_client/api/default/describe_device_login_session.py index 9bd88346..a708bf19 100644 --- a/src/tower/tower_api_client/api/default/describe_device_login_session.py +++ b/src/tower/tower_api_client/api/default/describe_device_login_session.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import Client +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.describe_device_login_session_response import ( DescribeDeviceLoginSessionResponse, ) @@ -12,50 +13,45 @@ def _get_kwargs( device_code: str, - *, - client: Client, -) -> Dict[str, Any]: - url = "{}/login/device/{device_code}".format( - client.base_url, device_code=device_code - ) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/login/device/{device_code}".format( + device_code=device_code, + ), } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[DescribeDeviceLoginSessionResponse]: if response.status_code == 200: response_200 = DescribeDeviceLoginSessionResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[DescribeDeviceLoginSessionResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( device_code: str, *, - client: Client, + client: Union[AuthenticatedClient, Client], ) -> Response[DescribeDeviceLoginSessionResponse]: """Describe device login session @@ -64,27 +60,29 @@ def sync_detailed( Args: device_code (str): The device code to check. + 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[DescribeDeviceLoginSessionResponse] """ kwargs = _get_kwargs( device_code=device_code, - client=client, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( device_code: str, *, - client: Client, + client: Union[AuthenticatedClient, Client], ) -> Optional[DescribeDeviceLoginSessionResponse]: """Describe device login session @@ -93,8 +91,12 @@ def sync( Args: device_code (str): The device code to check. + 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[DescribeDeviceLoginSessionResponse] + DescribeDeviceLoginSessionResponse """ return sync_detailed( @@ -106,7 +108,7 @@ def sync( async def asyncio_detailed( device_code: str, *, - client: Client, + client: Union[AuthenticatedClient, Client], ) -> Response[DescribeDeviceLoginSessionResponse]: """Describe device login session @@ -115,25 +117,27 @@ async def asyncio_detailed( Args: device_code (str): The device code to check. + 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[DescribeDeviceLoginSessionResponse] """ kwargs = _get_kwargs( device_code=device_code, - client=client, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( device_code: str, *, - client: Client, + client: Union[AuthenticatedClient, Client], ) -> Optional[DescribeDeviceLoginSessionResponse]: """Describe device login session @@ -142,8 +146,12 @@ async def asyncio( Args: device_code (str): The device code to check. + 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[DescribeDeviceLoginSessionResponse] + DescribeDeviceLoginSessionResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/describe_run.py b/src/tower/tower_api_client/api/default/describe_run.py index be41f3f0..0e1818ed 100644 --- a/src/tower/tower_api_client/api/default/describe_run.py +++ b/src/tower/tower_api_client/api/default/describe_run.py @@ -1,36 +1,32 @@ from http import HTTPStatus -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.describe_run_response import DescribeRunResponse from ...models.error_model import ErrorModel from ...types import Response def _get_kwargs( - name: str, + slug: str, seq: int, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/apps/{name}/runs/{seq}".format(client.base_url, name=name, seq=seq) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps/{slug}/runs/{seq}".format( + slug=slug, + seq=seq, + ), } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[Union[DescribeRunResponse, ErrorModel]]: if response.status_code == 200: response_200 = DescribeRunResponse.from_dict(response.json()) @@ -44,22 +40,25 @@ def _parse_response( response_404 = ErrorModel.from_dict(response.json()) return response_404 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[Union[DescribeRunResponse, ErrorModel]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( - name: str, + slug: str, seq: int, *, client: AuthenticatedClient, @@ -69,29 +68,31 @@ def sync_detailed( Describe a run of an app. Args: - name (str): The name of the app to fetch runs for. + slug (str): The slug of the app to fetch runs for. seq (int): The number of the run to fetch. + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + Returns: Response[Union[DescribeRunResponse, ErrorModel]] """ kwargs = _get_kwargs( - name=name, + slug=slug, seq=seq, - client=client, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( - name: str, + slug: str, seq: int, *, client: AuthenticatedClient, @@ -101,22 +102,26 @@ def sync( Describe a run of an app. Args: - name (str): The name of the app to fetch runs for. + slug (str): The slug of the app to fetch runs for. seq (int): The number of the run to fetch. + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + Returns: - Response[Union[DescribeRunResponse, ErrorModel]] + Union[DescribeRunResponse, ErrorModel] """ return sync_detailed( - name=name, + slug=slug, seq=seq, client=client, ).parsed async def asyncio_detailed( - name: str, + slug: str, seq: int, *, client: AuthenticatedClient, @@ -126,27 +131,29 @@ async def asyncio_detailed( Describe a run of an app. Args: - name (str): The name of the app to fetch runs for. + slug (str): The slug of the app to fetch runs for. seq (int): The number of the run to fetch. + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + Returns: Response[Union[DescribeRunResponse, ErrorModel]] """ kwargs = _get_kwargs( - name=name, + slug=slug, seq=seq, - client=client, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( - name: str, + slug: str, seq: int, *, client: AuthenticatedClient, @@ -156,16 +163,20 @@ async def asyncio( Describe a run of an app. Args: - name (str): The name of the app to fetch runs for. + slug (str): The slug of the app to fetch runs for. seq (int): The number of the run to fetch. + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + Returns: - Response[Union[DescribeRunResponse, ErrorModel]] + Union[DescribeRunResponse, ErrorModel] """ return ( await asyncio_detailed( - name=name, + slug=slug, seq=seq, client=client, ) diff --git a/src/tower/tower_api_client/api/default/describe_run_logs.py b/src/tower/tower_api_client/api/default/describe_run_logs.py new file mode 100644 index 00000000..70305f64 --- /dev/null +++ b/src/tower/tower_api_client/api/default/describe_run_logs.py @@ -0,0 +1,174 @@ +from http import HTTPStatus +from typing import Any, Optional, Union + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.describe_run_logs_response import DescribeRunLogsResponse +from ...types import Response + + +def _get_kwargs( + slug: str, + seq: int, +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/apps/{slug}/runs/{seq}/logs".format( + slug=slug, + seq=seq, + ), + } + + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[DescribeRunLogsResponse]: + if response.status_code == 200: + response_200 = DescribeRunLogsResponse.from_dict(response.json()) + + return response_200 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[DescribeRunLogsResponse]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + slug: str, + seq: int, + *, + client: AuthenticatedClient, +) -> Response[DescribeRunLogsResponse]: + """Describe run logs + + Retrieves the logs associated with a particular run of an app. + + Args: + slug (str): The slug of the app to get logs for. + seq (int): The sequence number of the run to get logs for. + + 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[DescribeRunLogsResponse] + """ + + kwargs = _get_kwargs( + slug=slug, + seq=seq, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + slug: str, + seq: int, + *, + client: AuthenticatedClient, +) -> Optional[DescribeRunLogsResponse]: + """Describe run logs + + Retrieves the logs associated with a particular run of an app. + + Args: + slug (str): The slug of the app to get logs for. + seq (int): The sequence number of the run to get logs for. + + 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: + DescribeRunLogsResponse + """ + + return sync_detailed( + slug=slug, + seq=seq, + client=client, + ).parsed + + +async def asyncio_detailed( + slug: str, + seq: int, + *, + client: AuthenticatedClient, +) -> Response[DescribeRunLogsResponse]: + """Describe run logs + + Retrieves the logs associated with a particular run of an app. + + Args: + slug (str): The slug of the app to get logs for. + seq (int): The sequence number of the run to get logs for. + + 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[DescribeRunLogsResponse] + """ + + kwargs = _get_kwargs( + slug=slug, + seq=seq, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + slug: str, + seq: int, + *, + client: AuthenticatedClient, +) -> Optional[DescribeRunLogsResponse]: + """Describe run logs + + Retrieves the logs associated with a particular run of an app. + + Args: + slug (str): The slug of the app to get logs for. + seq (int): The sequence number of the run to get logs for. + + 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: + DescribeRunLogsResponse + """ + + return ( + await asyncio_detailed( + slug=slug, + seq=seq, + client=client, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/describe_secrets_key.py b/src/tower/tower_api_client/api/default/describe_secrets_key.py index ef2ffea5..65e6fa0d 100644 --- a/src/tower/tower_api_client/api/default/describe_secrets_key.py +++ b/src/tower/tower_api_client/api/default/describe_secrets_key.py @@ -1,104 +1,108 @@ from http import HTTPStatus -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.describe_secrets_key_response import DescribeSecretsKeyResponse from ...types import UNSET, Response, Unset def _get_kwargs( *, - client: AuthenticatedClient, - format_: Union[Unset, None, str] = UNSET, -) -> Dict[str, Any]: - url = "{}/secrets/key".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + format_: Union[Unset, str] = UNSET, +) -> dict[str, Any]: + params: dict[str, Any] = {} - params: Dict[str, Any] = {} params["format"] = format_ params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - return { + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/secrets/key", "params": params, } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[DescribeSecretsKeyResponse]: if response.status_code == 200: response_200 = DescribeSecretsKeyResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[DescribeSecretsKeyResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - format_: Union[Unset, None, str] = UNSET, + format_: Union[Unset, str] = UNSET, ) -> Response[DescribeSecretsKeyResponse]: """Describe encryption key Gets the encryption key used for encrypting secrets that you want to create in Tower. Args: - format_ (Union[Unset, None, str]): The format to return the key in. Options are 'pkcs1' - and 'spki'. + format_ (Union[Unset, str]): The format to return the key in. Options are 'pkcs1' and + 'spki'. + + 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[DescribeSecretsKeyResponse] """ kwargs = _get_kwargs( - client=client, format_=format_, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - format_: Union[Unset, None, str] = UNSET, + format_: Union[Unset, str] = UNSET, ) -> Optional[DescribeSecretsKeyResponse]: """Describe encryption key Gets the encryption key used for encrypting secrets that you want to create in Tower. Args: - format_ (Union[Unset, None, str]): The format to return the key in. Options are 'pkcs1' - and 'spki'. + format_ (Union[Unset, str]): The format to return the key in. Options are 'pkcs1' and + 'spki'. + + 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[DescribeSecretsKeyResponse] + DescribeSecretsKeyResponse """ return sync_detailed( @@ -110,46 +114,52 @@ def sync( async def asyncio_detailed( *, client: AuthenticatedClient, - format_: Union[Unset, None, str] = UNSET, + format_: Union[Unset, str] = UNSET, ) -> Response[DescribeSecretsKeyResponse]: """Describe encryption key Gets the encryption key used for encrypting secrets that you want to create in Tower. Args: - format_ (Union[Unset, None, str]): The format to return the key in. Options are 'pkcs1' - and 'spki'. + format_ (Union[Unset, str]): The format to return the key in. Options are 'pkcs1' and + 'spki'. + + 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[DescribeSecretsKeyResponse] """ kwargs = _get_kwargs( - client=client, format_=format_, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - format_: Union[Unset, None, str] = UNSET, + format_: Union[Unset, str] = UNSET, ) -> Optional[DescribeSecretsKeyResponse]: """Describe encryption key Gets the encryption key used for encrypting secrets that you want to create in Tower. Args: - format_ (Union[Unset, None, str]): The format to return the key in. Options are 'pkcs1' - and 'spki'. + format_ (Union[Unset, str]): The format to return the key in. Options are 'pkcs1' and + 'spki'. + + 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[DescribeSecretsKeyResponse] + DescribeSecretsKeyResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/describe_session.py b/src/tower/tower_api_client/api/default/describe_session.py index a5de2823..1e750f64 100644 --- a/src/tower/tower_api_client/api/default/describe_session.py +++ b/src/tower/tower_api_client/api/default/describe_session.py @@ -1,45 +1,44 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.describe_session_response import DescribeSessionResponse from ...types import Response -def _get_kwargs( - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/session".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +def _get_kwargs() -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/session", } + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[DescribeSessionResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[DescribeSessionResponse]: if response.status_code == 200: response_200 = DescribeSessionResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[DescribeSessionResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[DescribeSessionResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -51,20 +50,21 @@ def sync_detailed( Validate your current session and return the user information associated with the session. + 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[DescribeSessionResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( @@ -75,8 +75,12 @@ def sync( Validate your current session and return the user information associated with the session. + 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[DescribeSessionResponse] + DescribeSessionResponse """ return sync_detailed( @@ -92,18 +96,19 @@ async def asyncio_detailed( Validate your current session and return the user information associated with the session. + 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[DescribeSessionResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( @@ -114,8 +119,12 @@ async def asyncio( Validate your current session and return the user information associated with the session. + 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[DescribeSessionResponse] + DescribeSessionResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/export_secrets.py b/src/tower/tower_api_client/api/default/export_secrets.py index a7a64777..90c2ffb4 100644 --- a/src/tower/tower_api_client/api/default/export_secrets.py +++ b/src/tower/tower_api_client/api/default/export_secrets.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.export_secrets_response import ExportSecretsResponse from ...models.export_user_secrets_params import ExportUserSecretsParams from ...types import UNSET, Response, Unset @@ -11,19 +12,16 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: ExportUserSecretsParams, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, -) -> Dict[str, Any]: - url = "{}/secrets/export".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - params: Dict[str, Any] = {} + body: ExportUserSecretsParams, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + params: dict[str, Any] = {} + params["environment"] = environment params["all"] = all_ @@ -34,106 +32,121 @@ def _get_kwargs( params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/secrets/export", "params": params, } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[ExportSecretsResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[ExportSecretsResponse]: if response.status_code == 200: response_200 = ExportSecretsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[ExportSecretsResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[ExportSecretsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: ExportUserSecretsParams, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + body: ExportUserSecretsParams, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, ) -> Response[ExportSecretsResponse]: """Export secrets Lists all the secrets in your current account and re-encrypt them with the public key you supplied. Args: - environment (Union[Unset, None, str]): The environment to filter by. - all_ (Union[Unset, None, bool]): Whether to fetch all secrets or only the ones that are - not marked as deleted. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. - json_body (ExportUserSecretsParams): + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all secrets or only the ones that are not + marked as deleted. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + body (ExportUserSecretsParams): + + 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[ExportSecretsResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, environment=environment, all_=all_, page=page, page_size=page_size, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: ExportUserSecretsParams, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + body: ExportUserSecretsParams, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, ) -> Optional[ExportSecretsResponse]: """Export secrets Lists all the secrets in your current account and re-encrypt them with the public key you supplied. Args: - environment (Union[Unset, None, str]): The environment to filter by. - all_ (Union[Unset, None, bool]): Whether to fetch all secrets or only the ones that are - not marked as deleted. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. - json_body (ExportUserSecretsParams): + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all secrets or only the ones that are not + marked as deleted. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + body (ExportUserSecretsParams): + + 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[ExportSecretsResponse] + ExportSecretsResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, environment=environment, all_=all_, page=page, @@ -144,72 +157,78 @@ def sync( async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: ExportUserSecretsParams, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + body: ExportUserSecretsParams, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, ) -> Response[ExportSecretsResponse]: """Export secrets Lists all the secrets in your current account and re-encrypt them with the public key you supplied. Args: - environment (Union[Unset, None, str]): The environment to filter by. - all_ (Union[Unset, None, bool]): Whether to fetch all secrets or only the ones that are - not marked as deleted. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. - json_body (ExportUserSecretsParams): + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all secrets or only the ones that are not + marked as deleted. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + body (ExportUserSecretsParams): + + 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[ExportSecretsResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, environment=environment, all_=all_, page=page, page_size=page_size, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: ExportUserSecretsParams, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + body: ExportUserSecretsParams, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, ) -> Optional[ExportSecretsResponse]: """Export secrets Lists all the secrets in your current account and re-encrypt them with the public key you supplied. Args: - environment (Union[Unset, None, str]): The environment to filter by. - all_ (Union[Unset, None, bool]): Whether to fetch all secrets or only the ones that are - not marked as deleted. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. - json_body (ExportUserSecretsParams): + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all secrets or only the ones that are not + marked as deleted. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + body (ExportUserSecretsParams): + + 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[ExportSecretsResponse] + ExportSecretsResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, environment=environment, all_=all_, page=page, diff --git a/src/tower/tower_api_client/api/default/generate_app_statistics.py b/src/tower/tower_api_client/api/default/generate_app_statistics.py index bc575523..35a92e33 100644 --- a/src/tower/tower_api_client/api/default/generate_app_statistics.py +++ b/src/tower/tower_api_client/api/default/generate_app_statistics.py @@ -1,49 +1,44 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.generate_app_statistics_response import GenerateAppStatisticsResponse from ...types import Response -def _get_kwargs( - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/stats/apps".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +def _get_kwargs() -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/stats/apps", } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[GenerateAppStatisticsResponse]: if response.status_code == 200: response_200 = GenerateAppStatisticsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[GenerateAppStatisticsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -55,20 +50,21 @@ def sync_detailed( Generates current statistics about apps + 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[GenerateAppStatisticsResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( @@ -79,8 +75,12 @@ def sync( Generates current statistics about apps + 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[GenerateAppStatisticsResponse] + GenerateAppStatisticsResponse """ return sync_detailed( @@ -96,18 +96,19 @@ async def asyncio_detailed( Generates current statistics about apps + 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[GenerateAppStatisticsResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( @@ -118,8 +119,12 @@ async def asyncio( Generates current statistics about apps + 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[GenerateAppStatisticsResponse] + GenerateAppStatisticsResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/generate_run_statistics.py b/src/tower/tower_api_client/api/default/generate_run_statistics.py index a08e6610..c15fa6c4 100644 --- a/src/tower/tower_api_client/api/default/generate_run_statistics.py +++ b/src/tower/tower_api_client/api/default/generate_run_statistics.py @@ -1,104 +1,106 @@ from http import HTTPStatus -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.generate_run_statistics_response import GenerateRunStatisticsResponse from ...types import UNSET, Response, Unset def _get_kwargs( *, - client: AuthenticatedClient, - period: Union[Unset, None, str] = "24h", -) -> Dict[str, Any]: - url = "{}/stats/runs".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + period: Union[Unset, str] = "24h", +) -> dict[str, Any]: + params: dict[str, Any] = {} - params: Dict[str, Any] = {} params["period"] = period params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - return { + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/stats/runs", "params": params, } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[GenerateRunStatisticsResponse]: if response.status_code == 200: response_200 = GenerateRunStatisticsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[GenerateRunStatisticsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - period: Union[Unset, None, str] = "24h", + period: Union[Unset, str] = "24h", ) -> Response[GenerateRunStatisticsResponse]: """Generate run statistics Generates statistics about runs over a specified time period. Args: - period (Union[Unset, None, str]): Time period for statistics (24h, 7d, 30d) Default: - '24h'. + period (Union[Unset, str]): Time period for statistics (24h, 7d, 30d) Default: '24h'. + + 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[GenerateRunStatisticsResponse] """ kwargs = _get_kwargs( - client=client, period=period, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - period: Union[Unset, None, str] = "24h", + period: Union[Unset, str] = "24h", ) -> Optional[GenerateRunStatisticsResponse]: """Generate run statistics Generates statistics about runs over a specified time period. Args: - period (Union[Unset, None, str]): Time period for statistics (24h, 7d, 30d) Default: - '24h'. + period (Union[Unset, str]): Time period for statistics (24h, 7d, 30d) Default: '24h'. + + 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[GenerateRunStatisticsResponse] + GenerateRunStatisticsResponse """ return sync_detailed( @@ -110,46 +112,50 @@ def sync( async def asyncio_detailed( *, client: AuthenticatedClient, - period: Union[Unset, None, str] = "24h", + period: Union[Unset, str] = "24h", ) -> Response[GenerateRunStatisticsResponse]: """Generate run statistics Generates statistics about runs over a specified time period. Args: - period (Union[Unset, None, str]): Time period for statistics (24h, 7d, 30d) Default: - '24h'. + period (Union[Unset, str]): Time period for statistics (24h, 7d, 30d) Default: '24h'. + + 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[GenerateRunStatisticsResponse] """ kwargs = _get_kwargs( - client=client, period=period, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - period: Union[Unset, None, str] = "24h", + period: Union[Unset, str] = "24h", ) -> Optional[GenerateRunStatisticsResponse]: """Generate run statistics Generates statistics about runs over a specified time period. Args: - period (Union[Unset, None, str]): Time period for statistics (24h, 7d, 30d) Default: - '24h'. + period (Union[Unset, str]): Time period for statistics (24h, 7d, 30d) Default: '24h'. + + 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[GenerateRunStatisticsResponse] + GenerateRunStatisticsResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/get_app_run_logs.py b/src/tower/tower_api_client/api/default/get_app_run_logs.py deleted file mode 100644 index 3caf9ed4..00000000 --- a/src/tower/tower_api_client/api/default/get_app_run_logs.py +++ /dev/null @@ -1,159 +0,0 @@ -from http import HTTPStatus -from typing import Any, Dict, Optional - -import httpx - -from ...client import AuthenticatedClient -from ...models.get_run_logs_output_body import GetRunLogsOutputBody -from ...types import Response - - -def _get_kwargs( - name: str, - seq: int, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/apps/{name}/runs/{seq}/logs".format(client.base_url, name=name, seq=seq) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { - "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - } - - -def _parse_response(*, response: httpx.Response) -> Optional[GetRunLogsOutputBody]: - if response.status_code == 200: - response_200 = GetRunLogsOutputBody.from_dict(response.json()) - - return response_200 - return None - - -def _build_response(*, response: httpx.Response) -> Response[GetRunLogsOutputBody]: - return Response( - status_code=HTTPStatus(response.status_code), - content=response.content, - headers=response.headers, - parsed=_parse_response(response=response), - ) - - -def sync_detailed( - name: str, - seq: int, - *, - client: AuthenticatedClient, -) -> Response[GetRunLogsOutputBody]: - """Get logs for a specific app run. - - Retrieves the logs associated with a particular run of an app. - - Args: - name (str): The name of the app to get logs for. - seq (int): The sequence number of the run to get logs for. - - Returns: - Response[GetRunLogsOutputBody] - """ - - kwargs = _get_kwargs( - name=name, - seq=seq, - client=client, - ) - - response = httpx.request( - verify=client.verify_ssl, - **kwargs, - ) - - return _build_response(response=response) - - -def sync( - name: str, - seq: int, - *, - client: AuthenticatedClient, -) -> Optional[GetRunLogsOutputBody]: - """Get logs for a specific app run. - - Retrieves the logs associated with a particular run of an app. - - Args: - name (str): The name of the app to get logs for. - seq (int): The sequence number of the run to get logs for. - - Returns: - Response[GetRunLogsOutputBody] - """ - - return sync_detailed( - name=name, - seq=seq, - client=client, - ).parsed - - -async def asyncio_detailed( - name: str, - seq: int, - *, - client: AuthenticatedClient, -) -> Response[GetRunLogsOutputBody]: - """Get logs for a specific app run. - - Retrieves the logs associated with a particular run of an app. - - Args: - name (str): The name of the app to get logs for. - seq (int): The sequence number of the run to get logs for. - - Returns: - Response[GetRunLogsOutputBody] - """ - - kwargs = _get_kwargs( - name=name, - seq=seq, - client=client, - ) - - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) - - return _build_response(response=response) - - -async def asyncio( - name: str, - seq: int, - *, - client: AuthenticatedClient, -) -> Optional[GetRunLogsOutputBody]: - """Get logs for a specific app run. - - Retrieves the logs associated with a particular run of an app. - - Args: - name (str): The name of the app to get logs for. - seq (int): The sequence number of the run to get logs for. - - Returns: - Response[GetRunLogsOutputBody] - """ - - return ( - await asyncio_detailed( - name=name, - seq=seq, - client=client, - ) - ).parsed diff --git a/src/tower/tower_api_client/api/default/invite_team_member.py b/src/tower/tower_api_client/api/default/invite_team_member.py index 10c8fe9e..8d0e6f5f 100644 --- a/src/tower/tower_api_client/api/default/invite_team_member.py +++ b/src/tower/tower_api_client/api/default/invite_team_member.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.invite_team_member_params import InviteTeamMemberParams from ...models.invite_team_member_response import InviteTeamMemberResponse from ...types import Response @@ -12,40 +13,47 @@ def _get_kwargs( slug: str, *, - client: AuthenticatedClient, - json_body: InviteTeamMemberParams, -) -> Dict[str, Any]: - url = "{}/teams/{slug}/invites".format(client.base_url, slug=slug) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - json_json_body = json_body.to_dict() + body: InviteTeamMemberParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/teams/{slug}/invites".format( + slug=slug, + ), } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[InviteTeamMemberResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[InviteTeamMemberResponse]: if response.status_code == 200: response_200 = InviteTeamMemberResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[InviteTeamMemberResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[InviteTeamMemberResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -53,15 +61,19 @@ def sync_detailed( slug: str, *, client: AuthenticatedClient, - json_body: InviteTeamMemberParams, + body: InviteTeamMemberParams, ) -> Response[InviteTeamMemberResponse]: - """Invite Team Member + """Invite team member Invite a new team Args: slug (str): The slug of the team to invite someone to - json_body (InviteTeamMemberParams): + body (InviteTeamMemberParams): + + 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[InviteTeamMemberResponse] @@ -69,40 +81,42 @@ def sync_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( slug: str, *, client: AuthenticatedClient, - json_body: InviteTeamMemberParams, + body: InviteTeamMemberParams, ) -> Optional[InviteTeamMemberResponse]: - """Invite Team Member + """Invite team member Invite a new team Args: slug (str): The slug of the team to invite someone to - json_body (InviteTeamMemberParams): + body (InviteTeamMemberParams): + + 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[InviteTeamMemberResponse] + InviteTeamMemberResponse """ return sync_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ).parsed @@ -110,15 +124,19 @@ async def asyncio_detailed( slug: str, *, client: AuthenticatedClient, - json_body: InviteTeamMemberParams, + body: InviteTeamMemberParams, ) -> Response[InviteTeamMemberResponse]: - """Invite Team Member + """Invite team member Invite a new team Args: slug (str): The slug of the team to invite someone to - json_body (InviteTeamMemberParams): + body (InviteTeamMemberParams): + + 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[InviteTeamMemberResponse] @@ -126,38 +144,40 @@ async def asyncio_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( slug: str, *, client: AuthenticatedClient, - json_body: InviteTeamMemberParams, + body: InviteTeamMemberParams, ) -> Optional[InviteTeamMemberResponse]: - """Invite Team Member + """Invite team member Invite a new team Args: slug (str): The slug of the team to invite someone to - json_body (InviteTeamMemberParams): + body (InviteTeamMemberParams): + + 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[InviteTeamMemberResponse] + InviteTeamMemberResponse """ return ( await asyncio_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/leave_team.py b/src/tower/tower_api_client/api/default/leave_team.py index 1046e03a..99738087 100644 --- a/src/tower/tower_api_client/api/default/leave_team.py +++ b/src/tower/tower_api_client/api/default/leave_team.py @@ -1,46 +1,48 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.leave_team_response import LeaveTeamResponse from ...types import Response def _get_kwargs( slug: str, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/teams/{slug}/leave".format(client.base_url, slug=slug) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/teams/{slug}/leave".format( + slug=slug, + ), } + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[LeaveTeamResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[LeaveTeamResponse]: if response.status_code == 200: response_200 = LeaveTeamResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[LeaveTeamResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[LeaveTeamResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -49,7 +51,7 @@ def sync_detailed( *, client: AuthenticatedClient, ) -> Response[LeaveTeamResponse]: - """Leave Team + """Leave team Remove yourself from a team, if that's something you'd like to do for whatever reason. If you're the last member of a team, you cannot remove yourself. You should delete the team instead. @@ -57,21 +59,23 @@ def sync_detailed( Args: slug (str): The slug of the team to leave + 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[LeaveTeamResponse] """ kwargs = _get_kwargs( slug=slug, - client=client, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( @@ -79,7 +83,7 @@ def sync( *, client: AuthenticatedClient, ) -> Optional[LeaveTeamResponse]: - """Leave Team + """Leave team Remove yourself from a team, if that's something you'd like to do for whatever reason. If you're the last member of a team, you cannot remove yourself. You should delete the team instead. @@ -87,8 +91,12 @@ def sync( Args: slug (str): The slug of the team to leave + 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[LeaveTeamResponse] + LeaveTeamResponse """ return sync_detailed( @@ -102,7 +110,7 @@ async def asyncio_detailed( *, client: AuthenticatedClient, ) -> Response[LeaveTeamResponse]: - """Leave Team + """Leave team Remove yourself from a team, if that's something you'd like to do for whatever reason. If you're the last member of a team, you cannot remove yourself. You should delete the team instead. @@ -110,19 +118,21 @@ async def asyncio_detailed( Args: slug (str): The slug of the team to leave + 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[LeaveTeamResponse] """ kwargs = _get_kwargs( slug=slug, - client=client, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( @@ -130,7 +140,7 @@ async def asyncio( *, client: AuthenticatedClient, ) -> Optional[LeaveTeamResponse]: - """Leave Team + """Leave team Remove yourself from a team, if that's something you'd like to do for whatever reason. If you're the last member of a team, you cannot remove yourself. You should delete the team instead. @@ -138,8 +148,12 @@ async def asyncio( Args: slug (str): The slug of the team to leave + 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[LeaveTeamResponse] + LeaveTeamResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/list_api_keys.py b/src/tower/tower_api_client/api/default/list_api_keys.py index e28a5819..6329c24d 100644 --- a/src/tower/tower_api_client/api/default/list_api_keys.py +++ b/src/tower/tower_api_client/api/default/list_api_keys.py @@ -1,45 +1,44 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_api_keys_response import ListAPIKeysResponse from ...types import Response -def _get_kwargs( - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/api-keys".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +def _get_kwargs() -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/api-keys", } + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[ListAPIKeysResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[ListAPIKeysResponse]: if response.status_code == 200: response_200 = ListAPIKeysResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[ListAPIKeysResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[ListAPIKeysResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -47,36 +46,41 @@ def sync_detailed( *, client: AuthenticatedClient, ) -> Response[ListAPIKeysResponse]: - """List API Keys + """List API keys List all the API keys associated with your current account. + 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[ListAPIKeysResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, ) -> Optional[ListAPIKeysResponse]: - """List API Keys + """List API keys List all the API keys associated with your current account. + 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[ListAPIKeysResponse] + ListAPIKeysResponse """ return sync_detailed( @@ -88,34 +92,39 @@ async def asyncio_detailed( *, client: AuthenticatedClient, ) -> Response[ListAPIKeysResponse]: - """List API Keys + """List API keys List all the API keys associated with your current account. + 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[ListAPIKeysResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, ) -> Optional[ListAPIKeysResponse]: - """List API Keys + """List API keys List all the API keys associated with your current account. + 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[ListAPIKeysResponse] + ListAPIKeysResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/list_app_environments.py b/src/tower/tower_api_client/api/default/list_app_environments.py index af818e47..df48cb09 100644 --- a/src/tower/tower_api_client/api/default/list_app_environments.py +++ b/src/tower/tower_api_client/api/default/list_app_environments.py @@ -1,55 +1,53 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_app_environments_response import ListAppEnvironmentsResponse from ...types import Response def _get_kwargs( - name: str, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/apps/{name}/environments".format(client.base_url, name=name) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { + slug: str, +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps/{slug}/environments".format( + slug=slug, + ), } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[ListAppEnvironmentsResponse]: if response.status_code == 200: response_200 = ListAppEnvironmentsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[ListAppEnvironmentsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, ) -> Response[ListAppEnvironmentsResponse]: @@ -58,27 +56,29 @@ def sync_detailed( Generates a list of all the known environments for a given app in the current account. Args: - name (str): The name of the app to get the version for. + slug (str): The name of the app to get the version for. + + 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[ListAppEnvironmentsResponse] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( - name: str, + slug: str, *, client: AuthenticatedClient, ) -> Optional[ListAppEnvironmentsResponse]: @@ -87,20 +87,24 @@ def sync( Generates a list of all the known environments for a given app in the current account. Args: - name (str): The name of the app to get the version for. + slug (str): The name of the app to get the version for. + + 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[ListAppEnvironmentsResponse] + ListAppEnvironmentsResponse """ return sync_detailed( - name=name, + slug=slug, client=client, ).parsed async def asyncio_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, ) -> Response[ListAppEnvironmentsResponse]: @@ -109,25 +113,27 @@ async def asyncio_detailed( Generates a list of all the known environments for a given app in the current account. Args: - name (str): The name of the app to get the version for. + slug (str): The name of the app to get the version for. + + 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[ListAppEnvironmentsResponse] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( - name: str, + slug: str, *, client: AuthenticatedClient, ) -> Optional[ListAppEnvironmentsResponse]: @@ -136,15 +142,19 @@ async def asyncio( Generates a list of all the known environments for a given app in the current account. Args: - name (str): The name of the app to get the version for. + slug (str): The name of the app to get the version for. + + 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[ListAppEnvironmentsResponse] + ListAppEnvironmentsResponse """ return ( await asyncio_detailed( - name=name, + slug=slug, client=client, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/list_app_versions.py b/src/tower/tower_api_client/api/default/list_app_versions.py index 4c70b46a..a758dab1 100644 --- a/src/tower/tower_api_client/api/default/list_app_versions.py +++ b/src/tower/tower_api_client/api/default/list_app_versions.py @@ -1,46 +1,48 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_app_versions_response import ListAppVersionsResponse from ...types import Response def _get_kwargs( name: str, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/apps/{name}/versions".format(client.base_url, name=name) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps/{name}/versions".format( + name=name, + ), } + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[ListAppVersionsResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[ListAppVersionsResponse]: if response.status_code == 200: response_200 = ListAppVersionsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[ListAppVersionsResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[ListAppVersionsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -56,21 +58,23 @@ def sync_detailed( Args: name (str): The name of the app to list versions for. + 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[ListAppVersionsResponse] """ kwargs = _get_kwargs( name=name, - client=client, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( @@ -85,8 +89,12 @@ def sync( Args: name (str): The name of the app to list versions for. + 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[ListAppVersionsResponse] + ListAppVersionsResponse """ return sync_detailed( @@ -107,19 +115,21 @@ async def asyncio_detailed( Args: name (str): The name of the app to list versions for. + 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[ListAppVersionsResponse] """ kwargs = _get_kwargs( name=name, - client=client, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( @@ -134,8 +144,12 @@ async def asyncio( Args: name (str): The name of the app to list versions for. + 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[ListAppVersionsResponse] + ListAppVersionsResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/list_apps.py b/src/tower/tower_api_client/api/default/list_apps.py index 1eb051bd..5490a7aa 100644 --- a/src/tower/tower_api_client/api/default/list_apps.py +++ b/src/tower/tower_api_client/api/default/list_apps.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_apps_response import ListAppsResponse from ...models.list_apps_status_item import ListAppsStatusItem from ...types import UNSET, Response, Unset @@ -11,20 +12,15 @@ def _get_kwargs( *, - client: AuthenticatedClient, - query: Union[Unset, None, str] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, - period: Union[Unset, None, str] = UNSET, - num_runs: Union[Unset, None, int] = 20, - status: Union[Unset, None, List[ListAppsStatusItem]] = UNSET, -) -> Dict[str, Any]: - url = "{}/apps".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - params: Dict[str, Any] = {} + query: Union[Unset, str] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + period: Union[Unset, str] = UNSET, + num_runs: Union[Unset, int] = 20, + status: Union[Unset, list[ListAppsStatusItem]] = UNSET, +) -> dict[str, Any]: + params: dict[str, Any] = {} + params["query"] = query params["page"] = page @@ -35,78 +31,83 @@ def _get_kwargs( params["num_runs"] = num_runs - json_status: Union[Unset, None, List[str]] = UNSET + json_status: Union[Unset, list[str]] = UNSET if not isinstance(status, Unset): - if status is None: - json_status = None - else: - json_status = [] - for status_item_data in status: - status_item = status_item_data.value - - json_status.append(status_item) + json_status = [] + for status_item_data in status: + status_item = status_item_data.value + json_status.append(status_item) params["status"] = json_status params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - return { + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps", "params": params, } + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[ListAppsResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[ListAppsResponse]: if response.status_code == 200: response_200 = ListAppsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[ListAppsResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[ListAppsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - query: Union[Unset, None, str] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, - period: Union[Unset, None, str] = UNSET, - num_runs: Union[Unset, None, int] = 20, - status: Union[Unset, None, List[ListAppsStatusItem]] = UNSET, + query: Union[Unset, str] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + period: Union[Unset, str] = UNSET, + num_runs: Union[Unset, int] = 20, + status: Union[Unset, list[ListAppsStatusItem]] = UNSET, ) -> Response[ListAppsResponse]: """List apps Get all the apps for the current account. Args: - query (Union[Unset, None, str]): The search query to filter apps by. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. - period (Union[Unset, None, str]): Time period for statistics (24h, 7d, 30d, or none) - num_runs (Union[Unset, None, int]): Number of recent runs to fetch (-1 for all runs, - defaults to 20) Default: 20. - status (Union[Unset, None, List[ListAppsStatusItem]]): Filter apps by status(es) (comma + query (Union[Unset, str]): The search query to filter apps by. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + period (Union[Unset, str]): Time period for statistics (24h, 7d, 30d, or none) + num_runs (Union[Unset, int]): Number of recent runs to fetch (-1 for all runs, defaults to + 20) Default: 20. + status (Union[Unset, list[ListAppsStatusItem]]): Filter apps by status(es) (comma separated for multiple). Valid values: active, failed, disabled etc. + 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[ListAppsResponse] """ kwargs = _get_kwargs( - client=client, query=query, page=page, page_size=page_size, @@ -115,40 +116,43 @@ def sync_detailed( status=status, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - query: Union[Unset, None, str] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, - period: Union[Unset, None, str] = UNSET, - num_runs: Union[Unset, None, int] = 20, - status: Union[Unset, None, List[ListAppsStatusItem]] = UNSET, + query: Union[Unset, str] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + period: Union[Unset, str] = UNSET, + num_runs: Union[Unset, int] = 20, + status: Union[Unset, list[ListAppsStatusItem]] = UNSET, ) -> Optional[ListAppsResponse]: """List apps Get all the apps for the current account. Args: - query (Union[Unset, None, str]): The search query to filter apps by. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. - period (Union[Unset, None, str]): Time period for statistics (24h, 7d, 30d, or none) - num_runs (Union[Unset, None, int]): Number of recent runs to fetch (-1 for all runs, - defaults to 20) Default: 20. - status (Union[Unset, None, List[ListAppsStatusItem]]): Filter apps by status(es) (comma + query (Union[Unset, str]): The search query to filter apps by. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + period (Union[Unset, str]): Time period for statistics (24h, 7d, 30d, or none) + num_runs (Union[Unset, int]): Number of recent runs to fetch (-1 for all runs, defaults to + 20) Default: 20. + status (Union[Unset, list[ListAppsStatusItem]]): Filter apps by status(es) (comma separated for multiple). Valid values: active, failed, disabled etc. + 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[ListAppsResponse] + ListAppsResponse """ return sync_detailed( @@ -165,33 +169,36 @@ def sync( async def asyncio_detailed( *, client: AuthenticatedClient, - query: Union[Unset, None, str] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, - period: Union[Unset, None, str] = UNSET, - num_runs: Union[Unset, None, int] = 20, - status: Union[Unset, None, List[ListAppsStatusItem]] = UNSET, + query: Union[Unset, str] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + period: Union[Unset, str] = UNSET, + num_runs: Union[Unset, int] = 20, + status: Union[Unset, list[ListAppsStatusItem]] = UNSET, ) -> Response[ListAppsResponse]: """List apps Get all the apps for the current account. Args: - query (Union[Unset, None, str]): The search query to filter apps by. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. - period (Union[Unset, None, str]): Time period for statistics (24h, 7d, 30d, or none) - num_runs (Union[Unset, None, int]): Number of recent runs to fetch (-1 for all runs, - defaults to 20) Default: 20. - status (Union[Unset, None, List[ListAppsStatusItem]]): Filter apps by status(es) (comma + query (Union[Unset, str]): The search query to filter apps by. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + period (Union[Unset, str]): Time period for statistics (24h, 7d, 30d, or none) + num_runs (Union[Unset, int]): Number of recent runs to fetch (-1 for all runs, defaults to + 20) Default: 20. + status (Union[Unset, list[ListAppsStatusItem]]): Filter apps by status(es) (comma separated for multiple). Valid values: active, failed, disabled etc. + 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[ListAppsResponse] """ kwargs = _get_kwargs( - client=client, query=query, page=page, page_size=page_size, @@ -200,38 +207,41 @@ async def asyncio_detailed( status=status, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - query: Union[Unset, None, str] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, - period: Union[Unset, None, str] = UNSET, - num_runs: Union[Unset, None, int] = 20, - status: Union[Unset, None, List[ListAppsStatusItem]] = UNSET, + query: Union[Unset, str] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + period: Union[Unset, str] = UNSET, + num_runs: Union[Unset, int] = 20, + status: Union[Unset, list[ListAppsStatusItem]] = UNSET, ) -> Optional[ListAppsResponse]: """List apps Get all the apps for the current account. Args: - query (Union[Unset, None, str]): The search query to filter apps by. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. - period (Union[Unset, None, str]): Time period for statistics (24h, 7d, 30d, or none) - num_runs (Union[Unset, None, int]): Number of recent runs to fetch (-1 for all runs, - defaults to 20) Default: 20. - status (Union[Unset, None, List[ListAppsStatusItem]]): Filter apps by status(es) (comma + query (Union[Unset, str]): The search query to filter apps by. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + period (Union[Unset, str]): Time period for statistics (24h, 7d, 30d, or none) + num_runs (Union[Unset, int]): Number of recent runs to fetch (-1 for all runs, defaults to + 20) Default: 20. + status (Union[Unset, list[ListAppsStatusItem]]): Filter apps by status(es) (comma separated for multiple). Valid values: active, failed, disabled etc. + 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[ListAppsResponse] + ListAppsResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/list_catalogs.py b/src/tower/tower_api_client/api/default/list_catalogs.py new file mode 100644 index 00000000..33395140 --- /dev/null +++ b/src/tower/tower_api_client/api/default/list_catalogs.py @@ -0,0 +1,215 @@ +from http import HTTPStatus +from typing import Any, Optional, Union + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.list_catalogs_response import ListCatalogsResponse +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + *, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, +) -> dict[str, Any]: + params: dict[str, Any] = {} + + params["environment"] = environment + + params["all"] = all_ + + params["page"] = page + + params["page_size"] = page_size + + 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": "/catalogs", + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[ListCatalogsResponse]: + if response.status_code == 200: + response_200 = ListCatalogsResponse.from_dict(response.json()) + + return response_200 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[ListCatalogsResponse]: + 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: AuthenticatedClient, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, +) -> Response[ListCatalogsResponse]: + """List catalogs + + Lists all the catalogs associated with your current account. + + Args: + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all catalogs across all environments or only + for the current environment. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + + 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[ListCatalogsResponse] + """ + + kwargs = _get_kwargs( + environment=environment, + all_=all_, + page=page, + page_size=page_size, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + *, + client: AuthenticatedClient, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, +) -> Optional[ListCatalogsResponse]: + """List catalogs + + Lists all the catalogs associated with your current account. + + Args: + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all catalogs across all environments or only + for the current environment. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + + 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: + ListCatalogsResponse + """ + + return sync_detailed( + client=client, + environment=environment, + all_=all_, + page=page, + page_size=page_size, + ).parsed + + +async def asyncio_detailed( + *, + client: AuthenticatedClient, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, +) -> Response[ListCatalogsResponse]: + """List catalogs + + Lists all the catalogs associated with your current account. + + Args: + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all catalogs across all environments or only + for the current environment. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + + 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[ListCatalogsResponse] + """ + + kwargs = _get_kwargs( + environment=environment, + all_=all_, + page=page, + page_size=page_size, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + *, + client: AuthenticatedClient, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, +) -> Optional[ListCatalogsResponse]: + """List catalogs + + Lists all the catalogs associated with your current account. + + Args: + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all catalogs across all environments or only + for the current environment. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + + 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: + ListCatalogsResponse + """ + + return ( + await asyncio_detailed( + client=client, + environment=environment, + all_=all_, + page=page, + page_size=page_size, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/list_my_team_invitations.py b/src/tower/tower_api_client/api/default/list_my_team_invitations.py index e1c7bb15..29ea69cd 100644 --- a/src/tower/tower_api_client/api/default/list_my_team_invitations.py +++ b/src/tower/tower_api_client/api/default/list_my_team_invitations.py @@ -1,49 +1,44 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_my_team_invitations_response import ListMyTeamInvitationsResponse from ...types import Response -def _get_kwargs( - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/team-invites".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +def _get_kwargs() -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/team-invites", } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[ListMyTeamInvitationsResponse]: if response.status_code == 200: response_200 = ListMyTeamInvitationsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[ListMyTeamInvitationsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -51,36 +46,41 @@ def sync_detailed( *, client: AuthenticatedClient, ) -> Response[ListMyTeamInvitationsResponse]: - """List My Team Invitations + """List my team invitations List your pending invitations for teams + 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[ListMyTeamInvitationsResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, ) -> Optional[ListMyTeamInvitationsResponse]: - """List My Team Invitations + """List my team invitations List your pending invitations for teams + 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[ListMyTeamInvitationsResponse] + ListMyTeamInvitationsResponse """ return sync_detailed( @@ -92,34 +92,39 @@ async def asyncio_detailed( *, client: AuthenticatedClient, ) -> Response[ListMyTeamInvitationsResponse]: - """List My Team Invitations + """List my team invitations List your pending invitations for teams + 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[ListMyTeamInvitationsResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, ) -> Optional[ListMyTeamInvitationsResponse]: - """List My Team Invitations + """List my team invitations List your pending invitations for teams + 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[ListMyTeamInvitationsResponse] + ListMyTeamInvitationsResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/list_runs.py b/src/tower/tower_api_client/api/default/list_runs.py index f9b3c53a..6bdafe7c 100644 --- a/src/tower/tower_api_client/api/default/list_runs.py +++ b/src/tower/tower_api_client/api/default/list_runs.py @@ -1,65 +1,96 @@ +import datetime from http import HTTPStatus -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_runs_response import ListRunsResponse +from ...models.list_runs_status_item import ListRunsStatusItem from ...types import UNSET, Response, Unset def _get_kwargs( - name: str, + slug: str, *, - client: AuthenticatedClient, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, -) -> Dict[str, Any]: - url = "{}/apps/{name}/runs".format(client.base_url, name=name) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + status: Union[Unset, list[ListRunsStatusItem]] = UNSET, + start_at: Union[Unset, datetime.datetime] = UNSET, + end_at: Union[Unset, datetime.datetime] = UNSET, +) -> dict[str, Any]: + params: dict[str, Any] = {} - params: Dict[str, Any] = {} params["page"] = page params["page_size"] = page_size + json_status: Union[Unset, list[str]] = UNSET + if not isinstance(status, Unset): + json_status = [] + for status_item_data in status: + status_item = status_item_data.value + json_status.append(status_item) + + params["status"] = json_status + + json_start_at: Union[Unset, str] = UNSET + if not isinstance(start_at, Unset): + json_start_at = start_at.isoformat() + params["start_at"] = json_start_at + + json_end_at: Union[Unset, str] = UNSET + if not isinstance(end_at, Unset): + json_end_at = end_at.isoformat() + params["end_at"] = json_end_at + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - return { + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/apps/{slug}/runs".format( + slug=slug, + ), "params": params, } + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[ListRunsResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[ListRunsResponse]: if response.status_code == 200: response_200 = ListRunsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[ListRunsResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[ListRunsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + status: Union[Unset, list[ListRunsStatusItem]] = UNSET, + start_at: Union[Unset, datetime.datetime] = UNSET, + end_at: Union[Unset, datetime.datetime] = UNSET, ) -> Response[ListRunsResponse]: """List runs @@ -67,35 +98,49 @@ def sync_detailed( parameters passed in. Args: - name (str): The name of the app to fetch runs for. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. + slug (str): The slug of the app to fetch runs for. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + status (Union[Unset, list[ListRunsStatusItem]]): Filter runs by status(es) (comma + separated for multiple). + start_at (Union[Unset, datetime.datetime]): Filter runs scheduled after or at this + datetime (inclusive) + end_at (Union[Unset, datetime.datetime]): Filter runs scheduled before or at this datetime + (inclusive) + + 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[ListRunsResponse] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, page=page, page_size=page_size, + status=status, + start_at=start_at, + end_at=end_at, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( - name: str, + slug: str, *, client: AuthenticatedClient, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + status: Union[Unset, list[ListRunsStatusItem]] = UNSET, + start_at: Union[Unset, datetime.datetime] = UNSET, + end_at: Union[Unset, datetime.datetime] = UNSET, ) -> Optional[ListRunsResponse]: """List runs @@ -103,28 +148,44 @@ def sync( parameters passed in. Args: - name (str): The name of the app to fetch runs for. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. + slug (str): The slug of the app to fetch runs for. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + status (Union[Unset, list[ListRunsStatusItem]]): Filter runs by status(es) (comma + separated for multiple). + start_at (Union[Unset, datetime.datetime]): Filter runs scheduled after or at this + datetime (inclusive) + end_at (Union[Unset, datetime.datetime]): Filter runs scheduled before or at this datetime + (inclusive) + + 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[ListRunsResponse] + ListRunsResponse """ return sync_detailed( - name=name, + slug=slug, client=client, page=page, page_size=page_size, + status=status, + start_at=start_at, + end_at=end_at, ).parsed async def asyncio_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + status: Union[Unset, list[ListRunsStatusItem]] = UNSET, + start_at: Union[Unset, datetime.datetime] = UNSET, + end_at: Union[Unset, datetime.datetime] = UNSET, ) -> Response[ListRunsResponse]: """List runs @@ -132,33 +193,47 @@ async def asyncio_detailed( parameters passed in. Args: - name (str): The name of the app to fetch runs for. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. + slug (str): The slug of the app to fetch runs for. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + status (Union[Unset, list[ListRunsStatusItem]]): Filter runs by status(es) (comma + separated for multiple). + start_at (Union[Unset, datetime.datetime]): Filter runs scheduled after or at this + datetime (inclusive) + end_at (Union[Unset, datetime.datetime]): Filter runs scheduled before or at this datetime + (inclusive) + + 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[ListRunsResponse] """ kwargs = _get_kwargs( - name=name, - client=client, + slug=slug, page=page, page_size=page_size, + status=status, + start_at=start_at, + end_at=end_at, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( - name: str, + slug: str, *, client: AuthenticatedClient, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, + status: Union[Unset, list[ListRunsStatusItem]] = UNSET, + start_at: Union[Unset, datetime.datetime] = UNSET, + end_at: Union[Unset, datetime.datetime] = UNSET, ) -> Optional[ListRunsResponse]: """List runs @@ -166,19 +241,32 @@ async def asyncio( parameters passed in. Args: - name (str): The name of the app to fetch runs for. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. + slug (str): The slug of the app to fetch runs for. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + status (Union[Unset, list[ListRunsStatusItem]]): Filter runs by status(es) (comma + separated for multiple). + start_at (Union[Unset, datetime.datetime]): Filter runs scheduled after or at this + datetime (inclusive) + end_at (Union[Unset, datetime.datetime]): Filter runs scheduled before or at this datetime + (inclusive) + + 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[ListRunsResponse] + ListRunsResponse """ return ( await asyncio_detailed( - name=name, + slug=slug, client=client, page=page, page_size=page_size, + status=status, + start_at=start_at, + end_at=end_at, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/list_secret_environments.py b/src/tower/tower_api_client/api/default/list_secret_environments.py index 85431318..e1c9126a 100644 --- a/src/tower/tower_api_client/api/default/list_secret_environments.py +++ b/src/tower/tower_api_client/api/default/list_secret_environments.py @@ -1,49 +1,44 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_secret_environments_response import ListSecretEnvironmentsResponse from ...types import Response -def _get_kwargs( - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/secrets/environments".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +def _get_kwargs() -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/secrets/environments", } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[ListSecretEnvironmentsResponse]: if response.status_code == 200: response_200 = ListSecretEnvironmentsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[ListSecretEnvironmentsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -55,20 +50,21 @@ def sync_detailed( Lists all the environments associated with secrets. + 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[ListSecretEnvironmentsResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( @@ -79,8 +75,12 @@ def sync( Lists all the environments associated with secrets. + 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[ListSecretEnvironmentsResponse] + ListSecretEnvironmentsResponse """ return sync_detailed( @@ -96,18 +96,19 @@ async def asyncio_detailed( Lists all the environments associated with secrets. + 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[ListSecretEnvironmentsResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( @@ -118,8 +119,12 @@ async def asyncio( Lists all the environments associated with secrets. + 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[ListSecretEnvironmentsResponse] + ListSecretEnvironmentsResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/list_secrets.py b/src/tower/tower_api_client/api/default/list_secrets.py index 3e419539..559f5f78 100644 --- a/src/tower/tower_api_client/api/default/list_secrets.py +++ b/src/tower/tower_api_client/api/default/list_secrets.py @@ -1,27 +1,23 @@ from http import HTTPStatus -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_secrets_response import ListSecretsResponse from ...types import UNSET, Response, Unset def _get_kwargs( *, - client: AuthenticatedClient, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, -) -> Dict[str, Any]: - url = "{}/secrets".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, +) -> dict[str, Any]: + params: dict[str, Any] = {} - params: Dict[str, Any] = {} params["environment"] = environment params["all"] = all_ @@ -32,93 +28,105 @@ def _get_kwargs( params = {k: v for k, v in params.items() if v is not UNSET and v is not None} - return { + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/secrets", "params": params, } + return _kwargs -def _parse_response(*, response: httpx.Response) -> Optional[ListSecretsResponse]: + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[ListSecretsResponse]: if response.status_code == 200: response_200 = ListSecretsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[ListSecretsResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[ListSecretsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, ) -> Response[ListSecretsResponse]: """List secrets Lists all the secrets associated with your current account. Args: - environment (Union[Unset, None, str]): The environment to filter by. - all_ (Union[Unset, None, bool]): Whether to fetch all secrets or only the ones that are - not marked as deleted. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all secrets or only the ones that are not + marked as deleted. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + + 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[ListSecretsResponse] """ kwargs = _get_kwargs( - client=client, environment=environment, all_=all_, page=page, page_size=page_size, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, ) -> Optional[ListSecretsResponse]: """List secrets Lists all the secrets associated with your current account. Args: - environment (Union[Unset, None, str]): The environment to filter by. - all_ (Union[Unset, None, bool]): Whether to fetch all secrets or only the ones that are - not marked as deleted. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all secrets or only the ones that are not + marked as deleted. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + + 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[ListSecretsResponse] + ListSecretsResponse """ return sync_detailed( @@ -133,61 +141,67 @@ def sync( async def asyncio_detailed( *, client: AuthenticatedClient, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, ) -> Response[ListSecretsResponse]: """List secrets Lists all the secrets associated with your current account. Args: - environment (Union[Unset, None, str]): The environment to filter by. - all_ (Union[Unset, None, bool]): Whether to fetch all secrets or only the ones that are - not marked as deleted. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all secrets or only the ones that are not + marked as deleted. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + + 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[ListSecretsResponse] """ kwargs = _get_kwargs( - client=client, environment=environment, all_=all_, page=page, page_size=page_size, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - environment: Union[Unset, None, str] = UNSET, - all_: Union[Unset, None, bool] = UNSET, - page: Union[Unset, None, int] = UNSET, - page_size: Union[Unset, None, int] = UNSET, + environment: Union[Unset, str] = UNSET, + all_: Union[Unset, bool] = UNSET, + page: Union[Unset, int] = UNSET, + page_size: Union[Unset, int] = UNSET, ) -> Optional[ListSecretsResponse]: """List secrets Lists all the secrets associated with your current account. Args: - environment (Union[Unset, None, str]): The environment to filter by. - all_ (Union[Unset, None, bool]): Whether to fetch all secrets or only the ones that are - not marked as deleted. - page (Union[Unset, None, int]): The page number to fetch. - page_size (Union[Unset, None, int]): The number of records to fetch on each page. + environment (Union[Unset, str]): The environment to filter by. + all_ (Union[Unset, bool]): Whether to fetch all secrets or only the ones that are not + marked as deleted. + page (Union[Unset, int]): The page number to fetch. + page_size (Union[Unset, int]): The number of records to fetch on each page. + + 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[ListSecretsResponse] + ListSecretsResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/list_team_invitations.py b/src/tower/tower_api_client/api/default/list_team_invitations.py index 183ada21..85930b0e 100644 --- a/src/tower/tower_api_client/api/default/list_team_invitations.py +++ b/src/tower/tower_api_client/api/default/list_team_invitations.py @@ -1,50 +1,48 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_team_invitations_response import ListTeamInvitationsResponse from ...types import Response def _get_kwargs( slug: str, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/teams/{slug}/invites".format(client.base_url, slug=slug) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/teams/{slug}/invites".format( + slug=slug, + ), } + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[ListTeamInvitationsResponse]: if response.status_code == 200: response_200 = ListTeamInvitationsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[ListTeamInvitationsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -53,28 +51,30 @@ def sync_detailed( *, client: AuthenticatedClient, ) -> Response[ListTeamInvitationsResponse]: - """List Team Invitations + """List team invitations List the pending invitations for a team Args: slug (str): The slug of the team to list members for + 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[ListTeamInvitationsResponse] """ kwargs = _get_kwargs( slug=slug, - client=client, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( @@ -82,15 +82,19 @@ def sync( *, client: AuthenticatedClient, ) -> Optional[ListTeamInvitationsResponse]: - """List Team Invitations + """List team invitations List the pending invitations for a team Args: slug (str): The slug of the team to list members for + 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[ListTeamInvitationsResponse] + ListTeamInvitationsResponse """ return sync_detailed( @@ -104,26 +108,28 @@ async def asyncio_detailed( *, client: AuthenticatedClient, ) -> Response[ListTeamInvitationsResponse]: - """List Team Invitations + """List team invitations List the pending invitations for a team Args: slug (str): The slug of the team to list members for + 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[ListTeamInvitationsResponse] """ kwargs = _get_kwargs( slug=slug, - client=client, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( @@ -131,15 +137,19 @@ async def asyncio( *, client: AuthenticatedClient, ) -> Optional[ListTeamInvitationsResponse]: - """List Team Invitations + """List team invitations List the pending invitations for a team Args: slug (str): The slug of the team to list members for + 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[ListTeamInvitationsResponse] + ListTeamInvitationsResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/list_team_members.py b/src/tower/tower_api_client/api/default/list_team_members.py index 2e17e152..e74bbc66 100644 --- a/src/tower/tower_api_client/api/default/list_team_members.py +++ b/src/tower/tower_api_client/api/default/list_team_members.py @@ -1,46 +1,48 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_team_members_response import ListTeamMembersResponse from ...types import Response def _get_kwargs( slug: str, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/teams/{slug}/members".format(client.base_url, slug=slug) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/teams/{slug}/members".format( + slug=slug, + ), } + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[ListTeamMembersResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[ListTeamMembersResponse]: if response.status_code == 200: response_200 = ListTeamMembersResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[ListTeamMembersResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[ListTeamMembersResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -49,28 +51,30 @@ def sync_detailed( *, client: AuthenticatedClient, ) -> Response[ListTeamMembersResponse]: - """List Team Members + """List team members List the members of a team Args: slug (str): The slug of the team to list members for + 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[ListTeamMembersResponse] """ kwargs = _get_kwargs( slug=slug, - client=client, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( @@ -78,15 +82,19 @@ def sync( *, client: AuthenticatedClient, ) -> Optional[ListTeamMembersResponse]: - """List Team Members + """List team members List the members of a team Args: slug (str): The slug of the team to list members for + 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[ListTeamMembersResponse] + ListTeamMembersResponse """ return sync_detailed( @@ -100,26 +108,28 @@ async def asyncio_detailed( *, client: AuthenticatedClient, ) -> Response[ListTeamMembersResponse]: - """List Team Members + """List team members List the members of a team Args: slug (str): The slug of the team to list members for + 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[ListTeamMembersResponse] """ kwargs = _get_kwargs( slug=slug, - client=client, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( @@ -127,15 +137,19 @@ async def asyncio( *, client: AuthenticatedClient, ) -> Optional[ListTeamMembersResponse]: - """List Team Members + """List team members List the members of a team Args: slug (str): The slug of the team to list members for + 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[ListTeamMembersResponse] + ListTeamMembersResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/list_teams.py b/src/tower/tower_api_client/api/default/list_teams.py index f4d1bc5e..2c15389b 100644 --- a/src/tower/tower_api_client/api/default/list_teams.py +++ b/src/tower/tower_api_client/api/default/list_teams.py @@ -1,45 +1,44 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.list_teams_response import ListTeamsResponse from ...types import Response -def _get_kwargs( - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/teams".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { +def _get_kwargs() -> dict[str, Any]: + _kwargs: dict[str, Any] = { "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/teams", } + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[ListTeamsResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[ListTeamsResponse]: if response.status_code == 200: response_200 = ListTeamsResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[ListTeamsResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[ListTeamsResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -47,36 +46,41 @@ def sync_detailed( *, client: AuthenticatedClient, ) -> Response[ListTeamsResponse]: - """List Teams + """List teams List all the teams that the user is a member of. + 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[ListTeamsResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, ) -> Optional[ListTeamsResponse]: - """List Teams + """List teams List all the teams that the user is a member of. + 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[ListTeamsResponse] + ListTeamsResponse """ return sync_detailed( @@ -88,34 +92,39 @@ async def asyncio_detailed( *, client: AuthenticatedClient, ) -> Response[ListTeamsResponse]: - """List Teams + """List teams List all the teams that the user is a member of. + 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[ListTeamsResponse] """ - kwargs = _get_kwargs( - client=client, - ) + kwargs = _get_kwargs() - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, ) -> Optional[ListTeamsResponse]: - """List Teams + """List teams List all the teams that the user is a member of. + 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[ListTeamsResponse] + ListTeamsResponse """ return ( diff --git a/src/tower/tower_api_client/api/default/refresh_session.py b/src/tower/tower_api_client/api/default/refresh_session.py index 5542f639..70b25a6b 100644 --- a/src/tower/tower_api_client/api/default/refresh_session.py +++ b/src/tower/tower_api_client/api/default/refresh_session.py @@ -1,129 +1,172 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.refresh_session_params import RefreshSessionParams from ...models.refresh_session_response import RefreshSessionResponse from ...types import Response def _get_kwargs( *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/session/refresh".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: RefreshSessionParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), + "url": "/session/refresh", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + -def _parse_response(*, response: httpx.Response) -> Optional[RefreshSessionResponse]: +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[RefreshSessionResponse]: if response.status_code == 200: response_200 = RefreshSessionResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[RefreshSessionResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[RefreshSessionResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, + body: RefreshSessionParams, ) -> Response[RefreshSessionResponse]: """Refresh session Returns a new session based on the supplied authentication context. This is helpful when clients want to use POST instead of GET to check session information. + Args: + body (RefreshSessionParams): + + 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[RefreshSessionResponse] """ kwargs = _get_kwargs( - client=client, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, + body: RefreshSessionParams, ) -> Optional[RefreshSessionResponse]: """Refresh session Returns a new session based on the supplied authentication context. This is helpful when clients want to use POST instead of GET to check session information. + Args: + body (RefreshSessionParams): + + 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[RefreshSessionResponse] + RefreshSessionResponse """ return sync_detailed( client=client, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, + body: RefreshSessionParams, ) -> Response[RefreshSessionResponse]: """Refresh session Returns a new session based on the supplied authentication context. This is helpful when clients want to use POST instead of GET to check session information. + Args: + body (RefreshSessionParams): + + 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[RefreshSessionResponse] """ kwargs = _get_kwargs( - client=client, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, + body: RefreshSessionParams, ) -> Optional[RefreshSessionResponse]: """Refresh session Returns a new session based on the supplied authentication context. This is helpful when clients want to use POST instead of GET to check session information. + Args: + body (RefreshSessionParams): + + 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[RefreshSessionResponse] + RefreshSessionResponse """ return ( await asyncio_detailed( client=client, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/remove_team_member.py b/src/tower/tower_api_client/api/default/remove_team_member.py index ab73ef1d..df782461 100644 --- a/src/tower/tower_api_client/api/default/remove_team_member.py +++ b/src/tower/tower_api_client/api/default/remove_team_member.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.remove_team_member_params import RemoveTeamMemberParams from ...models.remove_team_member_response import RemoveTeamMemberResponse from ...types import Response @@ -12,40 +13,47 @@ def _get_kwargs( slug: str, *, - client: AuthenticatedClient, - json_body: RemoveTeamMemberParams, -) -> Dict[str, Any]: - url = "{}/teams/{slug}/members".format(client.base_url, slug=slug) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - json_json_body = json_body.to_dict() + body: RemoveTeamMemberParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - return { + _kwargs: dict[str, Any] = { "method": "delete", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/teams/{slug}/members".format( + slug=slug, + ), } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[RemoveTeamMemberResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[RemoveTeamMemberResponse]: if response.status_code == 200: response_200 = RemoveTeamMemberResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[RemoveTeamMemberResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[RemoveTeamMemberResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -53,15 +61,19 @@ def sync_detailed( slug: str, *, client: AuthenticatedClient, - json_body: RemoveTeamMemberParams, + body: RemoveTeamMemberParams, ) -> Response[RemoveTeamMemberResponse]: - """Remove Team Member + """Remove team member Remove a new team Args: slug (str): The slug of the team to remove someone from - json_body (RemoveTeamMemberParams): + body (RemoveTeamMemberParams): + + 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[RemoveTeamMemberResponse] @@ -69,40 +81,42 @@ def sync_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( slug: str, *, client: AuthenticatedClient, - json_body: RemoveTeamMemberParams, + body: RemoveTeamMemberParams, ) -> Optional[RemoveTeamMemberResponse]: - """Remove Team Member + """Remove team member Remove a new team Args: slug (str): The slug of the team to remove someone from - json_body (RemoveTeamMemberParams): + body (RemoveTeamMemberParams): + + 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[RemoveTeamMemberResponse] + RemoveTeamMemberResponse """ return sync_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ).parsed @@ -110,15 +124,19 @@ async def asyncio_detailed( slug: str, *, client: AuthenticatedClient, - json_body: RemoveTeamMemberParams, + body: RemoveTeamMemberParams, ) -> Response[RemoveTeamMemberResponse]: - """Remove Team Member + """Remove team member Remove a new team Args: slug (str): The slug of the team to remove someone from - json_body (RemoveTeamMemberParams): + body (RemoveTeamMemberParams): + + 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[RemoveTeamMemberResponse] @@ -126,38 +144,40 @@ async def asyncio_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( slug: str, *, client: AuthenticatedClient, - json_body: RemoveTeamMemberParams, + body: RemoveTeamMemberParams, ) -> Optional[RemoveTeamMemberResponse]: - """Remove Team Member + """Remove team member Remove a new team Args: slug (str): The slug of the team to remove someone from - json_body (RemoveTeamMemberParams): + body (RemoveTeamMemberParams): + + 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[RemoveTeamMemberResponse] + RemoveTeamMemberResponse """ return ( await asyncio_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/resend_team_invitation.py b/src/tower/tower_api_client/api/default/resend_team_invitation.py index ee7db55f..e0be72c3 100644 --- a/src/tower/tower_api_client/api/default/resend_team_invitation.py +++ b/src/tower/tower_api_client/api/default/resend_team_invitation.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.resend_team_invitation_params import ResendTeamInvitationParams from ...models.resend_team_invitation_response import ResendTeamInvitationResponse from ...types import Response @@ -12,44 +13,47 @@ def _get_kwargs( slug: str, *, - client: AuthenticatedClient, - json_body: ResendTeamInvitationParams, -) -> Dict[str, Any]: - url = "{}/teams/{slug}/invites/resend".format(client.base_url, slug=slug) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: ResendTeamInvitationParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/teams/{slug}/invites/resend".format( + slug=slug, + ), } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[ResendTeamInvitationResponse]: if response.status_code == 200: response_200 = ResendTeamInvitationResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[ResendTeamInvitationResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -57,15 +61,19 @@ def sync_detailed( slug: str, *, client: AuthenticatedClient, - json_body: ResendTeamInvitationParams, + body: ResendTeamInvitationParams, ) -> Response[ResendTeamInvitationResponse]: - """Resend Team Invitation + """Resend team invitation Resend a team invitation to a user if they need a reminder or if they lost it Args: slug (str): The slug of the team to invite someone to - json_body (ResendTeamInvitationParams): + body (ResendTeamInvitationParams): + + 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[ResendTeamInvitationResponse] @@ -73,40 +81,42 @@ def sync_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( slug: str, *, client: AuthenticatedClient, - json_body: ResendTeamInvitationParams, + body: ResendTeamInvitationParams, ) -> Optional[ResendTeamInvitationResponse]: - """Resend Team Invitation + """Resend team invitation Resend a team invitation to a user if they need a reminder or if they lost it Args: slug (str): The slug of the team to invite someone to - json_body (ResendTeamInvitationParams): + body (ResendTeamInvitationParams): + + 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[ResendTeamInvitationResponse] + ResendTeamInvitationResponse """ return sync_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ).parsed @@ -114,15 +124,19 @@ async def asyncio_detailed( slug: str, *, client: AuthenticatedClient, - json_body: ResendTeamInvitationParams, + body: ResendTeamInvitationParams, ) -> Response[ResendTeamInvitationResponse]: - """Resend Team Invitation + """Resend team invitation Resend a team invitation to a user if they need a reminder or if they lost it Args: slug (str): The slug of the team to invite someone to - json_body (ResendTeamInvitationParams): + body (ResendTeamInvitationParams): + + 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[ResendTeamInvitationResponse] @@ -130,38 +144,40 @@ async def asyncio_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( slug: str, *, client: AuthenticatedClient, - json_body: ResendTeamInvitationParams, + body: ResendTeamInvitationParams, ) -> Optional[ResendTeamInvitationResponse]: - """Resend Team Invitation + """Resend team invitation Resend a team invitation to a user if they need a reminder or if they lost it Args: slug (str): The slug of the team to invite someone to - json_body (ResendTeamInvitationParams): + body (ResendTeamInvitationParams): + + 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[ResendTeamInvitationResponse] + ResendTeamInvitationResponse """ return ( await asyncio_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/run_app.py b/src/tower/tower_api_client/api/default/run_app.py index feb21de9..6213b686 100644 --- a/src/tower/tower_api_client/api/default/run_app.py +++ b/src/tower/tower_api_client/api/default/run_app.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional, Union +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.error_model import ErrorModel from ...models.run_app_params import RunAppParams from ...models.run_app_response import RunAppResponse @@ -11,30 +12,30 @@ def _get_kwargs( - name: str, + slug: str, *, - client: AuthenticatedClient, - json_body: RunAppParams, -) -> Dict[str, Any]: - url = "{}/apps/{name}/runs".format(client.base_url, name=name) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: RunAppParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "post", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/apps/{slug}/runs".format( + slug=slug, + ), } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[Union[ErrorModel, RunAppResponse]]: if response.status_code == 200: response_200 = RunAppResponse.from_dict(response.json()) @@ -48,129 +49,144 @@ def _parse_response( response_401 = ErrorModel.from_dict(response.json()) return response_401 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[Union[ErrorModel, RunAppResponse]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, - json_body: RunAppParams, + body: RunAppParams, ) -> Response[Union[ErrorModel, RunAppResponse]]: """Run app Runs an app with the supplied parameters. Args: - name (str): The name of the app to fetch runs for. - json_body (RunAppParams): + slug (str): The slug of the app to fetch runs for. + body (RunAppParams): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: Response[Union[ErrorModel, RunAppResponse]] """ kwargs = _get_kwargs( - name=name, - client=client, - json_body=json_body, + slug=slug, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( - name: str, + slug: str, *, client: AuthenticatedClient, - json_body: RunAppParams, + body: RunAppParams, ) -> Optional[Union[ErrorModel, RunAppResponse]]: """Run app Runs an app with the supplied parameters. Args: - name (str): The name of the app to fetch runs for. - json_body (RunAppParams): + slug (str): The slug of the app to fetch runs for. + body (RunAppParams): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Union[ErrorModel, RunAppResponse]] + Union[ErrorModel, RunAppResponse] """ return sync_detailed( - name=name, + slug=slug, client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( - name: str, + slug: str, *, client: AuthenticatedClient, - json_body: RunAppParams, + body: RunAppParams, ) -> Response[Union[ErrorModel, RunAppResponse]]: """Run app Runs an app with the supplied parameters. Args: - name (str): The name of the app to fetch runs for. - json_body (RunAppParams): + slug (str): The slug of the app to fetch runs for. + body (RunAppParams): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: Response[Union[ErrorModel, RunAppResponse]] """ kwargs = _get_kwargs( - name=name, - client=client, - json_body=json_body, + slug=slug, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( - name: str, + slug: str, *, client: AuthenticatedClient, - json_body: RunAppParams, + body: RunAppParams, ) -> Optional[Union[ErrorModel, RunAppResponse]]: """Run app Runs an app with the supplied parameters. Args: - name (str): The name of the app to fetch runs for. - json_body (RunAppParams): + slug (str): The slug of the app to fetch runs for. + body (RunAppParams): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[Union[ErrorModel, RunAppResponse]] + Union[ErrorModel, RunAppResponse] """ return ( await asyncio_detailed( - name=name, + slug=slug, client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/stream_app_run_logs.py b/src/tower/tower_api_client/api/default/stream_app_run_logs.py deleted file mode 100644 index 1c4e1c57..00000000 --- a/src/tower/tower_api_client/api/default/stream_app_run_logs.py +++ /dev/null @@ -1,100 +0,0 @@ -from http import HTTPStatus -from typing import Any, Dict - -import httpx - -from ...client import AuthenticatedClient -from ...types import Response - - -def _get_kwargs( - name: str, - seq: int, - *, - client: AuthenticatedClient, -) -> Dict[str, Any]: - url = "{}/apps/{name}/runs/{seq}/logs/stream".format( - client.base_url, name=name, seq=seq - ) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - return { - "method": "get", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - } - - -def _build_response(*, response: httpx.Response) -> Response[Any]: - return Response( - status_code=HTTPStatus(response.status_code), - content=response.content, - headers=response.headers, - parsed=None, - ) - - -def sync_detailed( - name: str, - seq: int, - *, - client: AuthenticatedClient, -) -> Response[Any]: - """Stream logs for a specific app run - - Streams the logs associated with a particular run of an app in real-time. - - Args: - name (str): The name of the app to get logs for. - seq (int): The sequence number of the run to get logs for. - - Returns: - Response[Any] - """ - - kwargs = _get_kwargs( - name=name, - seq=seq, - client=client, - ) - - response = httpx.request( - verify=client.verify_ssl, - **kwargs, - ) - - return _build_response(response=response) - - -async def asyncio_detailed( - name: str, - seq: int, - *, - client: AuthenticatedClient, -) -> Response[Any]: - """Stream logs for a specific app run - - Streams the logs associated with a particular run of an app in real-time. - - Args: - name (str): The name of the app to get logs for. - seq (int): The sequence number of the run to get logs for. - - Returns: - Response[Any] - """ - - kwargs = _get_kwargs( - name=name, - seq=seq, - client=client, - ) - - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) - - return _build_response(response=response) diff --git a/src/tower/tower_api_client/api/default/stream_run_logs.py b/src/tower/tower_api_client/api/default/stream_run_logs.py new file mode 100644 index 00000000..687e6b4a --- /dev/null +++ b/src/tower/tower_api_client/api/default/stream_run_logs.py @@ -0,0 +1,198 @@ +from http import HTTPStatus +from typing import Any, Optional, Union + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.log_line import LogLine +from ...models.log_line_error import LogLineError +from ...types import Response + + +def _get_kwargs( + slug: str, + seq: int, +) -> dict[str, Any]: + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/apps/{slug}/runs/{seq}/logs/stream".format( + slug=slug, + seq=seq, + ), + } + + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[list[Union["LogLine", "LogLineError"]]]: + if response.status_code == 200: + response_200 = [] + _response_200 = response.text + for response_200_item_data in _response_200: + + def _parse_response_200_item( + data: object, + ) -> Union["LogLine", "LogLineError"]: + try: + if not isinstance(data, dict): + raise TypeError() + response_200_item_type_0 = LogLine.from_dict(data) + + return response_200_item_type_0 + except: # noqa: E722 + pass + if not isinstance(data, dict): + raise TypeError() + response_200_item_type_1 = LogLineError.from_dict(data) + + return response_200_item_type_1 + + response_200_item = _parse_response_200_item(response_200_item_data) + + response_200.append(response_200_item) + + return response_200 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[list[Union["LogLine", "LogLineError"]]]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + slug: str, + seq: int, + *, + client: AuthenticatedClient, +) -> Response[list[Union["LogLine", "LogLineError"]]]: + """Stream run logs + + Streams the logs associated with a particular run of an app in real-time. + + Args: + slug (str): The slug of the app to get logs for. + seq (int): The sequence number of the run to get logs for. + + 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[Union['LogLine', 'LogLineError']]] + """ + + kwargs = _get_kwargs( + slug=slug, + seq=seq, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + slug: str, + seq: int, + *, + client: AuthenticatedClient, +) -> Optional[list[Union["LogLine", "LogLineError"]]]: + """Stream run logs + + Streams the logs associated with a particular run of an app in real-time. + + Args: + slug (str): The slug of the app to get logs for. + seq (int): The sequence number of the run to get logs for. + + 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[Union['LogLine', 'LogLineError']] + """ + + return sync_detailed( + slug=slug, + seq=seq, + client=client, + ).parsed + + +async def asyncio_detailed( + slug: str, + seq: int, + *, + client: AuthenticatedClient, +) -> Response[list[Union["LogLine", "LogLineError"]]]: + """Stream run logs + + Streams the logs associated with a particular run of an app in real-time. + + Args: + slug (str): The slug of the app to get logs for. + seq (int): The sequence number of the run to get logs for. + + 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[Union['LogLine', 'LogLineError']]] + """ + + kwargs = _get_kwargs( + slug=slug, + seq=seq, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + slug: str, + seq: int, + *, + client: AuthenticatedClient, +) -> Optional[list[Union["LogLine", "LogLineError"]]]: + """Stream run logs + + Streams the logs associated with a particular run of an app in real-time. + + Args: + slug (str): The slug of the app to get logs for. + seq (int): The sequence number of the run to get logs for. + + 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[Union['LogLine', 'LogLineError']] + """ + + return ( + await asyncio_detailed( + slug=slug, + seq=seq, + client=client, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/update_account_slug.py b/src/tower/tower_api_client/api/default/update_account_slug.py index 757d009e..cc7043c6 100644 --- a/src/tower/tower_api_client/api/default/update_account_slug.py +++ b/src/tower/tower_api_client/api/default/update_account_slug.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.update_account_slug_params import UpdateAccountSlugParams from ...models.update_account_slug_response import UpdateAccountSlugResponse from ...types import Response @@ -12,40 +13,47 @@ def _get_kwargs( slug: str, *, - client: AuthenticatedClient, - json_body: UpdateAccountSlugParams, -) -> Dict[str, Any]: - url = "{}/accounts/{slug}".format(client.base_url, slug=slug) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - json_json_body = json_body.to_dict() + body: UpdateAccountSlugParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - return { + _kwargs: dict[str, Any] = { "method": "put", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/accounts/{slug}".format( + slug=slug, + ), } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[UpdateAccountSlugResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[UpdateAccountSlugResponse]: if response.status_code == 200: response_200 = UpdateAccountSlugResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[UpdateAccountSlugResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[UpdateAccountSlugResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -53,7 +61,7 @@ def sync_detailed( slug: str, *, client: AuthenticatedClient, - json_body: UpdateAccountSlugParams, + body: UpdateAccountSlugParams, ) -> Response[UpdateAccountSlugResponse]: """Update account slug @@ -61,7 +69,11 @@ def sync_detailed( Args: slug (str): The slug of the account to update - json_body (UpdateAccountSlugParams): + body (UpdateAccountSlugParams): + + 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[UpdateAccountSlugResponse] @@ -69,23 +81,21 @@ def sync_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( slug: str, *, client: AuthenticatedClient, - json_body: UpdateAccountSlugParams, + body: UpdateAccountSlugParams, ) -> Optional[UpdateAccountSlugResponse]: """Update account slug @@ -93,16 +103,20 @@ def sync( Args: slug (str): The slug of the account to update - json_body (UpdateAccountSlugParams): + body (UpdateAccountSlugParams): + + 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[UpdateAccountSlugResponse] + UpdateAccountSlugResponse """ return sync_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ).parsed @@ -110,7 +124,7 @@ async def asyncio_detailed( slug: str, *, client: AuthenticatedClient, - json_body: UpdateAccountSlugParams, + body: UpdateAccountSlugParams, ) -> Response[UpdateAccountSlugResponse]: """Update account slug @@ -118,7 +132,11 @@ async def asyncio_detailed( Args: slug (str): The slug of the account to update - json_body (UpdateAccountSlugParams): + body (UpdateAccountSlugParams): + + 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[UpdateAccountSlugResponse] @@ -126,21 +144,19 @@ async def asyncio_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( slug: str, *, client: AuthenticatedClient, - json_body: UpdateAccountSlugParams, + body: UpdateAccountSlugParams, ) -> Optional[UpdateAccountSlugResponse]: """Update account slug @@ -148,16 +164,20 @@ async def asyncio( Args: slug (str): The slug of the account to update - json_body (UpdateAccountSlugParams): + body (UpdateAccountSlugParams): + + 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[UpdateAccountSlugResponse] + UpdateAccountSlugResponse """ return ( await asyncio_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/update_app.py b/src/tower/tower_api_client/api/default/update_app.py new file mode 100644 index 00000000..5d08dbf0 --- /dev/null +++ b/src/tower/tower_api_client/api/default/update_app.py @@ -0,0 +1,183 @@ +from http import HTTPStatus +from typing import Any, Optional, Union + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.update_app_params import UpdateAppParams +from ...models.update_app_response import UpdateAppResponse +from ...types import Response + + +def _get_kwargs( + name: str, + *, + body: UpdateAppParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "put", + "url": "/apps/{name}".format( + name=name, + ), + } + + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[UpdateAppResponse]: + if response.status_code == 200: + response_200 = UpdateAppResponse.from_dict(response.json()) + + return response_200 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[UpdateAppResponse]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + name: str, + *, + client: AuthenticatedClient, + body: UpdateAppParams, +) -> Response[UpdateAppResponse]: + """Update app + + Update an app in the currently authenticated account. + + Args: + name (str): The name of the App to update. + body (UpdateAppParams): + + 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[UpdateAppResponse] + """ + + kwargs = _get_kwargs( + name=name, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + name: str, + *, + client: AuthenticatedClient, + body: UpdateAppParams, +) -> Optional[UpdateAppResponse]: + """Update app + + Update an app in the currently authenticated account. + + Args: + name (str): The name of the App to update. + body (UpdateAppParams): + + 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: + UpdateAppResponse + """ + + return sync_detailed( + name=name, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + name: str, + *, + client: AuthenticatedClient, + body: UpdateAppParams, +) -> Response[UpdateAppResponse]: + """Update app + + Update an app in the currently authenticated account. + + Args: + name (str): The name of the App to update. + body (UpdateAppParams): + + 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[UpdateAppResponse] + """ + + kwargs = _get_kwargs( + name=name, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + name: str, + *, + client: AuthenticatedClient, + body: UpdateAppParams, +) -> Optional[UpdateAppResponse]: + """Update app + + Update an app in the currently authenticated account. + + Args: + name (str): The name of the App to update. + body (UpdateAppParams): + + 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: + UpdateAppResponse + """ + + return ( + await asyncio_detailed( + name=name, + client=client, + body=body, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/update_catalog.py b/src/tower/tower_api_client/api/default/update_catalog.py new file mode 100644 index 00000000..97698867 --- /dev/null +++ b/src/tower/tower_api_client/api/default/update_catalog.py @@ -0,0 +1,183 @@ +from http import HTTPStatus +from typing import Any, Optional, Union + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.update_catalog_params import UpdateCatalogParams +from ...models.update_catalog_response import UpdateCatalogResponse +from ...types import Response + + +def _get_kwargs( + slug: str, + *, + body: UpdateCatalogParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "put", + "url": "/catalogs/{slug}".format( + slug=slug, + ), + } + + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[UpdateCatalogResponse]: + if response.status_code == 200: + response_200 = UpdateCatalogResponse.from_dict(response.json()) + + return response_200 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[UpdateCatalogResponse]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + slug: str, + *, + client: AuthenticatedClient, + body: UpdateCatalogParams, +) -> Response[UpdateCatalogResponse]: + """Update catalog + + Update a new catalog object in the currently authenticated account. + + Args: + slug (str): The slug of the catalog to update. + body (UpdateCatalogParams): + + 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[UpdateCatalogResponse] + """ + + kwargs = _get_kwargs( + slug=slug, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + slug: str, + *, + client: AuthenticatedClient, + body: UpdateCatalogParams, +) -> Optional[UpdateCatalogResponse]: + """Update catalog + + Update a new catalog object in the currently authenticated account. + + Args: + slug (str): The slug of the catalog to update. + body (UpdateCatalogParams): + + 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: + UpdateCatalogResponse + """ + + return sync_detailed( + slug=slug, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + slug: str, + *, + client: AuthenticatedClient, + body: UpdateCatalogParams, +) -> Response[UpdateCatalogResponse]: + """Update catalog + + Update a new catalog object in the currently authenticated account. + + Args: + slug (str): The slug of the catalog to update. + body (UpdateCatalogParams): + + 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[UpdateCatalogResponse] + """ + + kwargs = _get_kwargs( + slug=slug, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + slug: str, + *, + client: AuthenticatedClient, + body: UpdateCatalogParams, +) -> Optional[UpdateCatalogResponse]: + """Update catalog + + Update a new catalog object in the currently authenticated account. + + Args: + slug (str): The slug of the catalog to update. + body (UpdateCatalogParams): + + 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: + UpdateCatalogResponse + """ + + return ( + await asyncio_detailed( + slug=slug, + client=client, + body=body, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/update_my_team_invitation.py b/src/tower/tower_api_client/api/default/update_my_team_invitation.py index 2065841d..931f0ceb 100644 --- a/src/tower/tower_api_client/api/default/update_my_team_invitation.py +++ b/src/tower/tower_api_client/api/default/update_my_team_invitation.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.update_my_team_invitation_params import UpdateMyTeamInvitationParams from ...models.update_my_team_invitation_response import UpdateMyTeamInvitationResponse from ...types import Response @@ -11,144 +12,157 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: UpdateMyTeamInvitationParams, -) -> Dict[str, Any]: - url = "{}/team-invites".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: UpdateMyTeamInvitationParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "put", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/team-invites", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + def _parse_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Optional[UpdateMyTeamInvitationResponse]: if response.status_code == 200: response_200 = UpdateMyTeamInvitationResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None def _build_response( - *, response: httpx.Response + *, client: Union[AuthenticatedClient, Client], response: httpx.Response ) -> Response[UpdateMyTeamInvitationResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: UpdateMyTeamInvitationParams, + body: UpdateMyTeamInvitationParams, ) -> Response[UpdateMyTeamInvitationResponse]: - """Update My Team Invitation + """Update my team invitation Update a team invitation that you have pending Args: - json_body (UpdateMyTeamInvitationParams): + body (UpdateMyTeamInvitationParams): + + 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[UpdateMyTeamInvitationResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: UpdateMyTeamInvitationParams, + body: UpdateMyTeamInvitationParams, ) -> Optional[UpdateMyTeamInvitationResponse]: - """Update My Team Invitation + """Update my team invitation Update a team invitation that you have pending Args: - json_body (UpdateMyTeamInvitationParams): + body (UpdateMyTeamInvitationParams): + + 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[UpdateMyTeamInvitationResponse] + UpdateMyTeamInvitationResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: UpdateMyTeamInvitationParams, + body: UpdateMyTeamInvitationParams, ) -> Response[UpdateMyTeamInvitationResponse]: - """Update My Team Invitation + """Update my team invitation Update a team invitation that you have pending Args: - json_body (UpdateMyTeamInvitationParams): + body (UpdateMyTeamInvitationParams): + + 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[UpdateMyTeamInvitationResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: UpdateMyTeamInvitationParams, + body: UpdateMyTeamInvitationParams, ) -> Optional[UpdateMyTeamInvitationResponse]: - """Update My Team Invitation + """Update my team invitation Update a team invitation that you have pending Args: - json_body (UpdateMyTeamInvitationParams): + body (UpdateMyTeamInvitationParams): + + 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[UpdateMyTeamInvitationResponse] + UpdateMyTeamInvitationResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/update_secret.py b/src/tower/tower_api_client/api/default/update_secret.py new file mode 100644 index 00000000..2c4e7e3f --- /dev/null +++ b/src/tower/tower_api_client/api/default/update_secret.py @@ -0,0 +1,183 @@ +from http import HTTPStatus +from typing import Any, Optional, Union + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.update_secret_params import UpdateSecretParams +from ...models.update_secret_response import UpdateSecretResponse +from ...types import Response + + +def _get_kwargs( + name: str, + *, + body: UpdateSecretParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "put", + "url": "/secrets/{name}".format( + name=name, + ), + } + + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[UpdateSecretResponse]: + if response.status_code == 200: + response_200 = UpdateSecretResponse.from_dict(response.json()) + + return response_200 + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[UpdateSecretResponse]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + name: str, + *, + client: AuthenticatedClient, + body: UpdateSecretParams, +) -> Response[UpdateSecretResponse]: + """Update secret + + Updates a secret that has previously been created in your account + + Args: + name (str): + body (UpdateSecretParams): + + 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[UpdateSecretResponse] + """ + + kwargs = _get_kwargs( + name=name, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + name: str, + *, + client: AuthenticatedClient, + body: UpdateSecretParams, +) -> Optional[UpdateSecretResponse]: + """Update secret + + Updates a secret that has previously been created in your account + + Args: + name (str): + body (UpdateSecretParams): + + 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: + UpdateSecretResponse + """ + + return sync_detailed( + name=name, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + name: str, + *, + client: AuthenticatedClient, + body: UpdateSecretParams, +) -> Response[UpdateSecretResponse]: + """Update secret + + Updates a secret that has previously been created in your account + + Args: + name (str): + body (UpdateSecretParams): + + 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[UpdateSecretResponse] + """ + + kwargs = _get_kwargs( + name=name, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + name: str, + *, + client: AuthenticatedClient, + body: UpdateSecretParams, +) -> Optional[UpdateSecretResponse]: + """Update secret + + Updates a secret that has previously been created in your account + + Args: + name (str): + body (UpdateSecretParams): + + 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: + UpdateSecretResponse + """ + + return ( + await asyncio_detailed( + name=name, + client=client, + body=body, + ) + ).parsed diff --git a/src/tower/tower_api_client/api/default/update_team.py b/src/tower/tower_api_client/api/default/update_team.py index a2c47878..cce35396 100644 --- a/src/tower/tower_api_client/api/default/update_team.py +++ b/src/tower/tower_api_client/api/default/update_team.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.update_team_params import UpdateTeamParams from ...models.update_team_response import UpdateTeamResponse from ...types import Response @@ -12,40 +13,47 @@ def _get_kwargs( slug: str, *, - client: AuthenticatedClient, - json_body: UpdateTeamParams, -) -> Dict[str, Any]: - url = "{}/teams/{slug}".format(client.base_url, slug=slug) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() - - json_json_body = json_body.to_dict() + body: UpdateTeamParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - return { + _kwargs: dict[str, Any] = { "method": "put", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/teams/{slug}".format( + slug=slug, + ), } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[UpdateTeamResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[UpdateTeamResponse]: if response.status_code == 200: response_200 = UpdateTeamResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[UpdateTeamResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[UpdateTeamResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) @@ -53,16 +61,20 @@ def sync_detailed( slug: str, *, client: AuthenticatedClient, - json_body: UpdateTeamParams, + body: UpdateTeamParams, ) -> Response[UpdateTeamResponse]: - """Update Team + """Update team Update a team with a new name or slug. Note that updating the team with a new slug will cause all your URLs to change! Args: slug (str): The slug of the team to update - json_body (UpdateTeamParams): + body (UpdateTeamParams): + + 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[UpdateTeamResponse] @@ -70,41 +82,43 @@ def sync_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( slug: str, *, client: AuthenticatedClient, - json_body: UpdateTeamParams, + body: UpdateTeamParams, ) -> Optional[UpdateTeamResponse]: - """Update Team + """Update team Update a team with a new name or slug. Note that updating the team with a new slug will cause all your URLs to change! Args: slug (str): The slug of the team to update - json_body (UpdateTeamParams): + body (UpdateTeamParams): + + 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[UpdateTeamResponse] + UpdateTeamResponse """ return sync_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ).parsed @@ -112,16 +126,20 @@ async def asyncio_detailed( slug: str, *, client: AuthenticatedClient, - json_body: UpdateTeamParams, + body: UpdateTeamParams, ) -> Response[UpdateTeamResponse]: - """Update Team + """Update team Update a team with a new name or slug. Note that updating the team with a new slug will cause all your URLs to change! Args: slug (str): The slug of the team to update - json_body (UpdateTeamParams): + body (UpdateTeamParams): + + 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[UpdateTeamResponse] @@ -129,39 +147,41 @@ async def asyncio_detailed( kwargs = _get_kwargs( slug=slug, - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( slug: str, *, client: AuthenticatedClient, - json_body: UpdateTeamParams, + body: UpdateTeamParams, ) -> Optional[UpdateTeamResponse]: - """Update Team + """Update team Update a team with a new name or slug. Note that updating the team with a new slug will cause all your URLs to change! Args: slug (str): The slug of the team to update - json_body (UpdateTeamParams): + body (UpdateTeamParams): + + 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[UpdateTeamResponse] + UpdateTeamResponse """ return ( await asyncio_detailed( slug=slug, client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/api/default/update_user.py b/src/tower/tower_api_client/api/default/update_user.py index 7e2516d2..acab84c4 100644 --- a/src/tower/tower_api_client/api/default/update_user.py +++ b/src/tower/tower_api_client/api/default/update_user.py @@ -1,9 +1,10 @@ from http import HTTPStatus -from typing import Any, Dict, Optional +from typing import Any, Optional, Union import httpx -from ...client import AuthenticatedClient +from ... import errors +from ...client import AuthenticatedClient, Client from ...models.update_user_params import UpdateUserParams from ...models.update_user_response import UpdateUserResponse from ...types import Response @@ -11,140 +12,157 @@ def _get_kwargs( *, - client: AuthenticatedClient, - json_body: UpdateUserParams, -) -> Dict[str, Any]: - url = "{}/user".format(client.base_url) - - headers: Dict[str, str] = client.get_headers() - cookies: Dict[str, Any] = client.get_cookies() + body: UpdateUserParams, +) -> dict[str, Any]: + headers: dict[str, Any] = {} - json_json_body = json_body.to_dict() - - return { + _kwargs: dict[str, Any] = { "method": "put", - "url": url, - "headers": headers, - "cookies": cookies, - "timeout": client.get_timeout(), - "json": json_json_body, + "url": "/user", } + _body = body.to_dict() + + _kwargs["json"] = _body + headers["Content-Type"] = "application/json" -def _parse_response(*, response: httpx.Response) -> Optional[UpdateUserResponse]: + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Optional[UpdateUserResponse]: if response.status_code == 200: response_200 = UpdateUserResponse.from_dict(response.json()) return response_200 - return None + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None -def _build_response(*, response: httpx.Response) -> Response[UpdateUserResponse]: +def _build_response( + *, client: Union[AuthenticatedClient, Client], response: httpx.Response +) -> Response[UpdateUserResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, headers=response.headers, - parsed=_parse_response(response=response), + parsed=_parse_response(client=client, response=response), ) def sync_detailed( *, client: AuthenticatedClient, - json_body: UpdateUserParams, + body: UpdateUserParams, ) -> Response[UpdateUserResponse]: """Update user profile Updates your current user profile. Args: - json_body (UpdateUserParams): + body (UpdateUserParams): + + 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[UpdateUserResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - response = httpx.request( - verify=client.verify_ssl, + response = client.get_httpx_client().request( **kwargs, ) - return _build_response(response=response) + return _build_response(client=client, response=response) def sync( *, client: AuthenticatedClient, - json_body: UpdateUserParams, + body: UpdateUserParams, ) -> Optional[UpdateUserResponse]: """Update user profile Updates your current user profile. Args: - json_body (UpdateUserParams): + body (UpdateUserParams): + + 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[UpdateUserResponse] + UpdateUserResponse """ return sync_detailed( client=client, - json_body=json_body, + body=body, ).parsed async def asyncio_detailed( *, client: AuthenticatedClient, - json_body: UpdateUserParams, + body: UpdateUserParams, ) -> Response[UpdateUserResponse]: """Update user profile Updates your current user profile. Args: - json_body (UpdateUserParams): + body (UpdateUserParams): + + 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[UpdateUserResponse] """ kwargs = _get_kwargs( - client=client, - json_body=json_body, + body=body, ) - async with httpx.AsyncClient(verify=client.verify_ssl) as _client: - response = await _client.request(**kwargs) + response = await client.get_async_httpx_client().request(**kwargs) - return _build_response(response=response) + return _build_response(client=client, response=response) async def asyncio( *, client: AuthenticatedClient, - json_body: UpdateUserParams, + body: UpdateUserParams, ) -> Optional[UpdateUserResponse]: """Update user profile Updates your current user profile. Args: - json_body (UpdateUserParams): + body (UpdateUserParams): + + 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[UpdateUserResponse] + UpdateUserResponse """ return ( await asyncio_detailed( client=client, - json_body=json_body, + body=body, ) ).parsed diff --git a/src/tower/tower_api_client/client.py b/src/tower/tower_api_client/client.py index 1a39694d..eeffd00c 100644 --- a/src/tower/tower_api_client/client.py +++ b/src/tower/tower_api_client/client.py @@ -1,51 +1,286 @@ import ssl -from typing import Dict, Union +from typing import Any, Optional, Union -import attr +import httpx +from attrs import define, evolve, field -@attr.s(auto_attribs=True) +@define class Client: - """A class for keeping track of data related to the API""" + """A class for keeping track of data related to the API - base_url: str - cookies: Dict[str, str] = attr.ib(factory=dict, kw_only=True) - headers: Dict[str, str] = attr.ib(factory=dict, kw_only=True) - timeout: float = attr.ib(5.0, kw_only=True) - verify_ssl: Union[str, bool, ssl.SSLContext] = attr.ib(True, kw_only=True) + The following are accepted as keyword arguments and will be used to construct httpx Clients internally: - def get_headers(self) -> Dict[str, str]: - """Get headers to be used in all endpoints""" - return {**self.headers} + ``base_url``: The base URL for the API, all requests are made to a relative path to this URL - def with_headers(self, headers: Dict[str, str]) -> "Client": - """Get a new client matching this one with additional headers""" - return attr.evolve(self, headers={**self.headers, **headers}) + ``cookies``: A dictionary of cookies to be sent with every request - def get_cookies(self) -> Dict[str, str]: - return {**self.cookies} + ``headers``: A dictionary of headers to be sent with every request + + ``timeout``: The maximum amount of a time a request can take. API functions will raise + httpx.TimeoutException if this is exceeded. + + ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production, + but can be set to False for testing purposes. + + ``follow_redirects``: Whether or not to follow redirects. Default value is False. + + ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor. - def with_cookies(self, cookies: Dict[str, str]) -> "Client": - """Get a new client matching this one with additional cookies""" - return attr.evolve(self, cookies={**self.cookies, **cookies}) - def get_timeout(self) -> float: - return self.timeout + Attributes: + raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a + status code that was not documented in the source OpenAPI document. Can also be provided as a keyword + argument to the constructor. + """ - def with_timeout(self, timeout: float) -> "Client": + raise_on_unexpected_status: bool = field(default=False, kw_only=True) + _base_url: str = field(alias="base_url") + _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies") + _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers") + _timeout: Optional[httpx.Timeout] = field( + default=None, kw_only=True, alias="timeout" + ) + _verify_ssl: Union[str, bool, ssl.SSLContext] = field( + default=True, kw_only=True, alias="verify_ssl" + ) + _follow_redirects: bool = field( + default=False, kw_only=True, alias="follow_redirects" + ) + _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args") + _client: Optional[httpx.Client] = field(default=None, init=False) + _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False) + + def with_headers(self, headers: dict[str, str]) -> "Client": + """Get a new client matching this one with additional headers""" + if self._client is not None: + self._client.headers.update(headers) + if self._async_client is not None: + self._async_client.headers.update(headers) + return evolve(self, headers={**self._headers, **headers}) + + def with_cookies(self, cookies: dict[str, str]) -> "Client": + """Get a new client matching this one with additional cookies""" + if self._client is not None: + self._client.cookies.update(cookies) + if self._async_client is not None: + self._async_client.cookies.update(cookies) + return evolve(self, cookies={**self._cookies, **cookies}) + + def with_timeout(self, timeout: httpx.Timeout) -> "Client": """Get a new client matching this one with a new timeout (in seconds)""" - return attr.evolve(self, timeout=timeout) + if self._client is not None: + self._client.timeout = timeout + if self._async_client is not None: + self._async_client.timeout = timeout + return evolve(self, timeout=timeout) + + def set_httpx_client(self, client: httpx.Client) -> "Client": + """Manually set the underlying httpx.Client + + **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. + """ + self._client = client + return self + + def get_httpx_client(self) -> httpx.Client: + """Get the underlying httpx.Client, constructing a new one if not previously set""" + if self._client is None: + self._client = httpx.Client( + base_url=self._base_url, + cookies=self._cookies, + headers=self._headers, + timeout=self._timeout, + verify=self._verify_ssl, + follow_redirects=self._follow_redirects, + **self._httpx_args, + ) + return self._client + + def __enter__(self) -> "Client": + """Enter a context manager for self.client—you cannot enter twice (see httpx docs)""" + self.get_httpx_client().__enter__() + return self + + def __exit__(self, *args: Any, **kwargs: Any) -> None: + """Exit a context manager for internal httpx.Client (see httpx docs)""" + self.get_httpx_client().__exit__(*args, **kwargs) + + def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> "Client": + """Manually the underlying httpx.AsyncClient + + **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. + """ + self._async_client = async_client + return self + + def get_async_httpx_client(self) -> httpx.AsyncClient: + """Get the underlying httpx.AsyncClient, constructing a new one if not previously set""" + if self._async_client is None: + self._async_client = httpx.AsyncClient( + base_url=self._base_url, + cookies=self._cookies, + headers=self._headers, + timeout=self._timeout, + verify=self._verify_ssl, + follow_redirects=self._follow_redirects, + **self._httpx_args, + ) + return self._async_client + + async def __aenter__(self) -> "Client": + """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)""" + await self.get_async_httpx_client().__aenter__() + return self + + async def __aexit__(self, *args: Any, **kwargs: Any) -> None: + """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)""" + await self.get_async_httpx_client().__aexit__(*args, **kwargs) + + +@define +class AuthenticatedClient: + """A Client which has been authenticated for use on secured endpoints + + The following are accepted as keyword arguments and will be used to construct httpx Clients internally: + ``base_url``: The base URL for the API, all requests are made to a relative path to this URL -@attr.s(auto_attribs=True) -class AuthenticatedClient(Client): - """A Client which has been authenticated for use on secured endpoints""" + ``cookies``: A dictionary of cookies to be sent with every request + + ``headers``: A dictionary of headers to be sent with every request + + ``timeout``: The maximum amount of a time a request can take. API functions will raise + httpx.TimeoutException if this is exceeded. + + ``verify_ssl``: Whether or not to verify the SSL certificate of the API server. This should be True in production, + but can be set to False for testing purposes. + + ``follow_redirects``: Whether or not to follow redirects. Default value is False. + + ``httpx_args``: A dictionary of additional arguments to be passed to the ``httpx.Client`` and ``httpx.AsyncClient`` constructor. + + + Attributes: + raise_on_unexpected_status: Whether or not to raise an errors.UnexpectedStatus if the API returns a + status code that was not documented in the source OpenAPI document. Can also be provided as a keyword + argument to the constructor. + token: The token to use for authentication + prefix: The prefix to use for the Authorization header + auth_header_name: The name of the Authorization header + """ + + raise_on_unexpected_status: bool = field(default=False, kw_only=True) + _base_url: str = field(alias="base_url") + _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies") + _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers") + _timeout: Optional[httpx.Timeout] = field( + default=None, kw_only=True, alias="timeout" + ) + _verify_ssl: Union[str, bool, ssl.SSLContext] = field( + default=True, kw_only=True, alias="verify_ssl" + ) + _follow_redirects: bool = field( + default=False, kw_only=True, alias="follow_redirects" + ) + _httpx_args: dict[str, Any] = field(factory=dict, kw_only=True, alias="httpx_args") + _client: Optional[httpx.Client] = field(default=None, init=False) + _async_client: Optional[httpx.AsyncClient] = field(default=None, init=False) token: str prefix: str = "Bearer" auth_header_name: str = "Authorization" - def get_headers(self) -> Dict[str, str]: - auth_header_value = f"{self.prefix} {self.token}" if self.prefix else self.token - """Get headers to be used in authenticated endpoints""" - return {self.auth_header_name: auth_header_value, **self.headers} + def with_headers(self, headers: dict[str, str]) -> "AuthenticatedClient": + """Get a new client matching this one with additional headers""" + if self._client is not None: + self._client.headers.update(headers) + if self._async_client is not None: + self._async_client.headers.update(headers) + return evolve(self, headers={**self._headers, **headers}) + + def with_cookies(self, cookies: dict[str, str]) -> "AuthenticatedClient": + """Get a new client matching this one with additional cookies""" + if self._client is not None: + self._client.cookies.update(cookies) + if self._async_client is not None: + self._async_client.cookies.update(cookies) + return evolve(self, cookies={**self._cookies, **cookies}) + + def with_timeout(self, timeout: httpx.Timeout) -> "AuthenticatedClient": + """Get a new client matching this one with a new timeout (in seconds)""" + if self._client is not None: + self._client.timeout = timeout + if self._async_client is not None: + self._async_client.timeout = timeout + return evolve(self, timeout=timeout) + + def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient": + """Manually set the underlying httpx.Client + + **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. + """ + self._client = client + return self + + def get_httpx_client(self) -> httpx.Client: + """Get the underlying httpx.Client, constructing a new one if not previously set""" + if self._client is None: + self._headers[self.auth_header_name] = ( + f"{self.prefix} {self.token}" if self.prefix else self.token + ) + self._client = httpx.Client( + base_url=self._base_url, + cookies=self._cookies, + headers=self._headers, + timeout=self._timeout, + verify=self._verify_ssl, + follow_redirects=self._follow_redirects, + **self._httpx_args, + ) + return self._client + + def __enter__(self) -> "AuthenticatedClient": + """Enter a context manager for self.client—you cannot enter twice (see httpx docs)""" + self.get_httpx_client().__enter__() + return self + + def __exit__(self, *args: Any, **kwargs: Any) -> None: + """Exit a context manager for internal httpx.Client (see httpx docs)""" + self.get_httpx_client().__exit__(*args, **kwargs) + + def set_async_httpx_client( + self, async_client: httpx.AsyncClient + ) -> "AuthenticatedClient": + """Manually the underlying httpx.AsyncClient + + **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. + """ + self._async_client = async_client + return self + + def get_async_httpx_client(self) -> httpx.AsyncClient: + """Get the underlying httpx.AsyncClient, constructing a new one if not previously set""" + if self._async_client is None: + self._headers[self.auth_header_name] = ( + f"{self.prefix} {self.token}" if self.prefix else self.token + ) + self._async_client = httpx.AsyncClient( + base_url=self._base_url, + cookies=self._cookies, + headers=self._headers, + timeout=self._timeout, + verify=self._verify_ssl, + follow_redirects=self._follow_redirects, + **self._httpx_args, + ) + return self._async_client + + async def __aenter__(self) -> "AuthenticatedClient": + """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)""" + await self.get_async_httpx_client().__aenter__() + return self + + async def __aexit__(self, *args: Any, **kwargs: Any) -> None: + """Exit a context manager for underlying httpx.AsyncClient (see httpx docs)""" + await self.get_async_httpx_client().__aexit__(*args, **kwargs) diff --git a/src/tower/tower_api_client/errors.py b/src/tower/tower_api_client/errors.py new file mode 100644 index 00000000..5f92e76a --- /dev/null +++ b/src/tower/tower_api_client/errors.py @@ -0,0 +1,16 @@ +"""Contains shared errors types that can be raised from API functions""" + + +class UnexpectedStatus(Exception): + """Raised by api functions when the response status an undocumented status and Client.raise_on_unexpected_status is True""" + + def __init__(self, status_code: int, content: bytes): + self.status_code = status_code + self.content = content + + super().__init__( + f"Unexpected status code: {status_code}\n\nResponse content:\n{content.decode(errors='ignore')}" + ) + + +__all__ = ["UnexpectedStatus"] diff --git a/src/tower/tower_api_client/models/__init__.py b/src/tower/tower_api_client/models/__init__.py index 68bd09de..2a83e2a2 100644 --- a/src/tower/tower_api_client/models/__init__.py +++ b/src/tower/tower_api_client/models/__init__.py @@ -1,4 +1,4 @@ -""" Contains all the data models used in inputs/outputs """ +"""Contains all the data models used in inputs/outputs""" from .accept_invitation_params import AcceptInvitationParams from .accept_invitation_response import AcceptInvitationResponse @@ -6,9 +6,12 @@ from .api_key import APIKey from .app import App from .app_statistics import AppStatistics +from .app_status import AppStatus from .app_summary import AppSummary from .app_version import AppVersion from .cancel_run_response import CancelRunResponse +from .catalog import Catalog +from .catalog_property import CatalogProperty from .claim_device_login_ticket_params import ClaimDeviceLoginTicketParams from .claim_device_login_ticket_response import ClaimDeviceLoginTicketResponse from .create_account_params import CreateAccountParams @@ -18,6 +21,9 @@ from .create_api_key_response import CreateAPIKeyResponse from .create_app_params import CreateAppParams from .create_app_response import CreateAppResponse +from .create_catalog_params import CreateCatalogParams +from .create_catalog_params_type import CreateCatalogParamsType +from .create_catalog_response import CreateCatalogResponse from .create_device_login_ticket_response import CreateDeviceLoginTicketResponse from .create_secret_params import CreateSecretParams from .create_secret_response import CreateSecretResponse @@ -28,6 +34,7 @@ from .delete_api_key_params import DeleteAPIKeyParams from .delete_api_key_response import DeleteAPIKeyResponse from .delete_app_response import DeleteAppResponse +from .delete_catalog_response import DeleteCatalogResponse from .delete_team_invitation_params import DeleteTeamInvitationParams from .delete_team_invitation_response import DeleteTeamInvitationResponse from .delete_team_params import DeleteTeamParams @@ -36,9 +43,11 @@ from .describe_app_response import DescribeAppResponse from .describe_app_version_response import DescribeAppVersionResponse from .describe_device_login_session_response import DescribeDeviceLoginSessionResponse +from .describe_run_logs_response import DescribeRunLogsResponse from .describe_run_response import DescribeRunResponse from .describe_secrets_key_response import DescribeSecretsKeyResponse from .describe_session_response import DescribeSessionResponse +from .encrypted_catalog_property import EncryptedCatalogProperty from .error_detail import ErrorDetail from .error_model import ErrorModel from .export_secrets_response import ExportSecretsResponse @@ -46,8 +55,6 @@ from .exported_secret import ExportedSecret from .generate_app_statistics_response import GenerateAppStatisticsResponse from .generate_run_statistics_response import GenerateRunStatisticsResponse -from .get_run_log_line import GetRunLogLine -from .get_run_logs_output_body import GetRunLogsOutputBody from .invite_team_member_params import InviteTeamMemberParams from .invite_team_member_response import InviteTeamMemberResponse from .leave_team_response import LeaveTeamResponse @@ -56,17 +63,21 @@ from .list_app_versions_response import ListAppVersionsResponse from .list_apps_response import ListAppsResponse from .list_apps_status_item import ListAppsStatusItem +from .list_catalogs_response import ListCatalogsResponse from .list_my_team_invitations_response import ListMyTeamInvitationsResponse from .list_runs_response import ListRunsResponse +from .list_runs_status_item import ListRunsStatusItem from .list_secret_environments_response import ListSecretEnvironmentsResponse from .list_secrets_response import ListSecretsResponse from .list_team_invitations_response import ListTeamInvitationsResponse from .list_team_members_response import ListTeamMembersResponse from .list_teams_response import ListTeamsResponse from .log_line import LogLine +from .log_line_channel import LogLineChannel from .log_line_error import LogLineError from .pagination import Pagination from .parameter import Parameter +from .refresh_session_params import RefreshSessionParams from .refresh_session_response import RefreshSessionResponse from .remove_team_member_params import RemoveTeamMemberParams from .remove_team_member_response import RemoveTeamMemberResponse @@ -76,8 +87,11 @@ from .run_app_params import RunAppParams from .run_app_params_parameters import RunAppParamsParameters from .run_app_response import RunAppResponse +from .run_log_line import RunLogLine from .run_results import RunResults from .run_statistics import RunStatistics +from .run_status import RunStatus +from .run_status_group import RunStatusGroup from .secret import Secret from .series_point import SeriesPoint from .session import Session @@ -87,8 +101,14 @@ from .token import Token from .update_account_slug_params import UpdateAccountSlugParams from .update_account_slug_response import UpdateAccountSlugResponse +from .update_app_params import UpdateAppParams +from .update_app_response import UpdateAppResponse +from .update_catalog_params import UpdateCatalogParams +from .update_catalog_response import UpdateCatalogResponse from .update_my_team_invitation_params import UpdateMyTeamInvitationParams from .update_my_team_invitation_response import UpdateMyTeamInvitationResponse +from .update_secret_params import UpdateSecretParams +from .update_secret_response import UpdateSecretResponse from .update_team_params import UpdateTeamParams from .update_team_response import UpdateTeamResponse from .update_user_params import UpdateUserParams @@ -102,9 +122,12 @@ "APIKey", "App", "AppStatistics", + "AppStatus", "AppSummary", "AppVersion", "CancelRunResponse", + "Catalog", + "CatalogProperty", "ClaimDeviceLoginTicketParams", "ClaimDeviceLoginTicketResponse", "CreateAccountParams", @@ -114,6 +137,9 @@ "CreateAPIKeyResponse", "CreateAppParams", "CreateAppResponse", + "CreateCatalogParams", + "CreateCatalogParamsType", + "CreateCatalogResponse", "CreateDeviceLoginTicketResponse", "CreateSecretParams", "CreateSecretResponse", @@ -124,6 +150,7 @@ "DeleteAPIKeyParams", "DeleteAPIKeyResponse", "DeleteAppResponse", + "DeleteCatalogResponse", "DeleteTeamInvitationParams", "DeleteTeamInvitationResponse", "DeleteTeamParams", @@ -132,9 +159,11 @@ "DescribeAppResponse", "DescribeAppVersionResponse", "DescribeDeviceLoginSessionResponse", + "DescribeRunLogsResponse", "DescribeRunResponse", "DescribeSecretsKeyResponse", "DescribeSessionResponse", + "EncryptedCatalogProperty", "ErrorDetail", "ErrorModel", "ExportedSecret", @@ -142,8 +171,6 @@ "ExportUserSecretsParams", "GenerateAppStatisticsResponse", "GenerateRunStatisticsResponse", - "GetRunLogLine", - "GetRunLogsOutputBody", "InviteTeamMemberParams", "InviteTeamMemberResponse", "LeaveTeamResponse", @@ -152,17 +179,21 @@ "ListAppsResponse", "ListAppsStatusItem", "ListAppVersionsResponse", + "ListCatalogsResponse", "ListMyTeamInvitationsResponse", "ListRunsResponse", + "ListRunsStatusItem", "ListSecretEnvironmentsResponse", "ListSecretsResponse", "ListTeamInvitationsResponse", "ListTeamMembersResponse", "ListTeamsResponse", "LogLine", + "LogLineChannel", "LogLineError", "Pagination", "Parameter", + "RefreshSessionParams", "RefreshSessionResponse", "RemoveTeamMemberParams", "RemoveTeamMemberResponse", @@ -172,8 +203,11 @@ "RunAppParams", "RunAppParamsParameters", "RunAppResponse", + "RunLogLine", "RunResults", "RunStatistics", + "RunStatus", + "RunStatusGroup", "Secret", "SeriesPoint", "Session", @@ -183,8 +217,14 @@ "Token", "UpdateAccountSlugParams", "UpdateAccountSlugResponse", + "UpdateAppParams", + "UpdateAppResponse", + "UpdateCatalogParams", + "UpdateCatalogResponse", "UpdateMyTeamInvitationParams", "UpdateMyTeamInvitationResponse", + "UpdateSecretParams", + "UpdateSecretResponse", "UpdateTeamParams", "UpdateTeamResponse", "UpdateUserParams", diff --git a/src/tower/tower_api_client/models/accept_invitation_params.py b/src/tower/tower_api_client/models/accept_invitation_params.py index fea1b500..bad62c87 100644 --- a/src/tower/tower_api_client/models/accept_invitation_params.py +++ b/src/tower/tower_api_client/models/accept_invitation_params.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="AcceptInvitationParams") -@attr.s(auto_attribs=True) +@_attrs_define class AcceptInvitationParams: """ Attributes: code (str): The invitation code to accept schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/AcceptInvitationParams.json. + https://api.tower.dev/v1/schemas/AcceptInvitationParams.json. """ code: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: code = self.code + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "code": code, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) code = d.pop("code") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/accept_invitation_response.py b/src/tower/tower_api_client/models/accept_invitation_response.py index 38995e60..71e7ac9b 100644 --- a/src/tower/tower_api_client/models/accept_invitation_response.py +++ b/src/tower/tower_api_client/models/accept_invitation_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="AcceptInvitationResponse") -@attr.s(auto_attribs=True) +@_attrs_define class AcceptInvitationResponse: """ Attributes: user (User): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/AcceptInvitationResponse.json. + https://api.tower.dev/v1/schemas/AcceptInvitationResponse.json. """ user: "User" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: user = self.user.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "user": user, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.user import User - d = src_dict.copy() + d = dict(src_dict) user = User.from_dict(d.pop("user")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/account.py b/src/tower/tower_api_client/models/account.py index c9d953cb..eee02418 100644 --- a/src/tower/tower_api_client/models/account.py +++ b/src/tower/tower_api_client/models/account.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="Account") -@attr.s(auto_attribs=True) +@_attrs_define class Account: """ Attributes: @@ -16,11 +17,12 @@ class Account: name: str slug: str - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: name = self.name + slug = self.slug - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "name": name, @@ -31,8 +33,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) name = d.pop("name") slug = d.pop("slug") diff --git a/src/tower/tower_api_client/models/api_key.py b/src/tower/tower_api_client/models/api_key.py index 473e04c1..7ca12ec3 100644 --- a/src/tower/tower_api_client/models/api_key.py +++ b/src/tower/tower_api_client/models/api_key.py @@ -1,67 +1,82 @@ import datetime -from typing import Any, Dict, Optional, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar, Union, cast -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse T = TypeVar("T", bound="APIKey") -@attr.s(auto_attribs=True) +@_attrs_define class APIKey: """ Attributes: created_at (datetime.datetime): identifier (str): + last_used_at (Union[None, datetime.datetime]): name (str): - last_used_at (Optional[datetime.datetime]): """ created_at: datetime.datetime identifier: str + last_used_at: Union[None, datetime.datetime] name: str - last_used_at: Optional[datetime.datetime] - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: created_at = self.created_at.isoformat() identifier = self.identifier + + last_used_at: Union[None, str] + if isinstance(self.last_used_at, datetime.datetime): + last_used_at = self.last_used_at.isoformat() + else: + last_used_at = self.last_used_at + name = self.name - last_used_at = self.last_used_at.isoformat() if self.last_used_at else None - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "created_at": created_at, "identifier": identifier, - "name": name, "last_used_at": last_used_at, + "name": name, } ) return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) created_at = isoparse(d.pop("created_at")) identifier = d.pop("identifier") - name = d.pop("name") + def _parse_last_used_at(data: object) -> Union[None, datetime.datetime]: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + last_used_at_type_0 = isoparse(data) - _last_used_at = d.pop("last_used_at") - last_used_at: Optional[datetime.datetime] - if _last_used_at is None: - last_used_at = None - else: - last_used_at = isoparse(_last_used_at) + return last_used_at_type_0 + except: # noqa: E722 + pass + return cast(Union[None, datetime.datetime], data) + + last_used_at = _parse_last_used_at(d.pop("last_used_at")) + + name = d.pop("name") api_key = cls( created_at=created_at, identifier=identifier, - name=name, last_used_at=last_used_at, + name=name, ) return api_key diff --git a/src/tower/tower_api_client/models/app.py b/src/tower/tower_api_client/models/app.py index 1264732a..194ec97a 100644 --- a/src/tower/tower_api_client/models/app.py +++ b/src/tower/tower_api_client/models/app.py @@ -1,9 +1,11 @@ import datetime -from typing import TYPE_CHECKING, Any, Dict, Optional, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union, cast -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse +from ..models.app_status import AppStatus from ..types import UNSET, Unset if TYPE_CHECKING: @@ -13,57 +15,75 @@ T = TypeVar("T", bound="App") -@attr.s(auto_attribs=True) +@_attrs_define class App: """ Attributes: created_at (datetime.datetime): The date and time this app was created. name (str): The name of the app. + next_run_at (Union[None, datetime.datetime]): The next time this app will run as part of it's schedule, null if + none. owner (str): The account slug that owns this app + schedule (Union[None, str]): The schedule associated with this app, null if none. short_description (str): A short description of the app. Can be empty. + slug (str): The unique slug of the app. + version (Union[None, str]): The current version of this app, null if none. last_run (Union[Unset, Run]): - next_run_at (Optional[datetime.datetime]): The next time this app will run as part of it's schedule, null if - none. - schedule (Optional[str]): The schedule associated with this app, null if none. - status (Union[Unset, str]): The status of the app - version (Optional[str]): The current version of this app, null if none. + status (Union[Unset, AppStatus]): The status of the app """ created_at: datetime.datetime name: str + next_run_at: Union[None, datetime.datetime] owner: str + schedule: Union[None, str] short_description: str - next_run_at: Optional[datetime.datetime] - schedule: Optional[str] - version: Optional[str] + slug: str + version: Union[None, str] last_run: Union[Unset, "Run"] = UNSET - status: Union[Unset, str] = UNSET + status: Union[Unset, AppStatus] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: created_at = self.created_at.isoformat() name = self.name + + next_run_at: Union[None, str] + if isinstance(self.next_run_at, datetime.datetime): + next_run_at = self.next_run_at.isoformat() + else: + next_run_at = self.next_run_at + owner = self.owner + + schedule: Union[None, str] + schedule = self.schedule + short_description = self.short_description - last_run: Union[Unset, Dict[str, Any]] = UNSET - if not isinstance(self.last_run, Unset): - last_run = self.last_run.to_dict() - next_run_at = self.next_run_at.isoformat() if self.next_run_at else None + slug = self.slug - schedule = self.schedule - status = self.status + version: Union[None, str] version = self.version - field_dict: Dict[str, Any] = {} + last_run: Union[Unset, dict[str, Any]] = UNSET + if not isinstance(self.last_run, Unset): + last_run = self.last_run.to_dict() + + status: Union[Unset, str] = UNSET + if not isinstance(self.status, Unset): + status = self.status.value + + field_dict: dict[str, Any] = {} field_dict.update( { "created_at": created_at, "name": name, - "owner": owner, - "short_description": short_description, "next_run_at": next_run_at, + "owner": owner, "schedule": schedule, + "short_description": short_description, + "slug": slug, "version": version, } ) @@ -75,18 +95,49 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.run import Run - d = src_dict.copy() + d = dict(src_dict) created_at = isoparse(d.pop("created_at")) name = d.pop("name") + def _parse_next_run_at(data: object) -> Union[None, datetime.datetime]: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + next_run_at_type_0 = isoparse(data) + + return next_run_at_type_0 + except: # noqa: E722 + pass + return cast(Union[None, datetime.datetime], data) + + next_run_at = _parse_next_run_at(d.pop("next_run_at")) + owner = d.pop("owner") + def _parse_schedule(data: object) -> Union[None, str]: + if data is None: + return data + return cast(Union[None, str], data) + + schedule = _parse_schedule(d.pop("schedule")) + short_description = d.pop("short_description") + slug = d.pop("slug") + + def _parse_version(data: object) -> Union[None, str]: + if data is None: + return data + return cast(Union[None, str], data) + + version = _parse_version(d.pop("version")) + _last_run = d.pop("last_run", UNSET) last_run: Union[Unset, Run] if isinstance(_last_run, Unset): @@ -94,29 +145,24 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: else: last_run = Run.from_dict(_last_run) - _next_run_at = d.pop("next_run_at") - next_run_at: Optional[datetime.datetime] - if _next_run_at is None: - next_run_at = None + _status = d.pop("status", UNSET) + status: Union[Unset, AppStatus] + if isinstance(_status, Unset): + status = UNSET else: - next_run_at = isoparse(_next_run_at) - - schedule = d.pop("schedule") - - status = d.pop("status", UNSET) - - version = d.pop("version") + status = AppStatus(_status) app = cls( created_at=created_at, name=name, + next_run_at=next_run_at, owner=owner, + schedule=schedule, short_description=short_description, + slug=slug, + version=version, last_run=last_run, - next_run_at=next_run_at, - schedule=schedule, status=status, - version=version, ) return app diff --git a/src/tower/tower_api_client/models/app_statistics.py b/src/tower/tower_api_client/models/app_statistics.py index c7766bce..bc087596 100644 --- a/src/tower/tower_api_client/models/app_statistics.py +++ b/src/tower/tower_api_client/models/app_statistics.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="AppStatistics") -@attr.s(auto_attribs=True) +@_attrs_define class AppStatistics: """ Attributes: @@ -22,14 +23,18 @@ class AppStatistics: failed_apps: int running_apps: int - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: all_apps = self.all_apps + disabled_apps = self.disabled_apps + exited_apps = self.exited_apps + failed_apps = self.failed_apps + running_apps = self.running_apps - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "all_apps": all_apps, @@ -43,8 +48,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) all_apps = d.pop("all_apps") disabled_apps = d.pop("disabled_apps") diff --git a/src/tower/tower_api_client/models/app_status.py b/src/tower/tower_api_client/models/app_status.py new file mode 100644 index 00000000..a1d0e65e --- /dev/null +++ b/src/tower/tower_api_client/models/app_status.py @@ -0,0 +1,11 @@ +from enum import Enum + + +class AppStatus(str, Enum): + ACTIVE = "active" + DISABLED = "disabled" + FAILED = "failed" + RUNNING = "running" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/app_summary.py b/src/tower/tower_api_client/models/app_summary.py index af176d2c..7da9d037 100644 --- a/src/tower/tower_api_client/models/app_summary.py +++ b/src/tower/tower_api_client/models/app_summary.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar -import attr +from attrs import define as _attrs_define if TYPE_CHECKING: from ..models.app import App @@ -11,22 +12,22 @@ T = TypeVar("T", bound="AppSummary") -@attr.s(auto_attribs=True) +@_attrs_define class AppSummary: """ Attributes: app (App): run_results (RunResults): - runs (List['Run']): + runs (list['Run']): total_runs (int): """ app: "App" run_results: "RunResults" - runs: List["Run"] + runs: list["Run"] total_runs: int - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: app = self.app.to_dict() run_results = self.run_results.to_dict() @@ -34,12 +35,11 @@ def to_dict(self) -> Dict[str, Any]: runs = [] for runs_item_data in self.runs: runs_item = runs_item_data.to_dict() - runs.append(runs_item) total_runs = self.total_runs - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "app": app, @@ -52,12 +52,12 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app import App from ..models.run import Run from ..models.run_results import RunResults - d = src_dict.copy() + d = dict(src_dict) app = App.from_dict(d.pop("app")) run_results = RunResults.from_dict(d.pop("run_results")) diff --git a/src/tower/tower_api_client/models/app_version.py b/src/tower/tower_api_client/models/app_version.py index a8262237..91239b5e 100644 --- a/src/tower/tower_api_client/models/app_version.py +++ b/src/tower/tower_api_client/models/app_version.py @@ -1,7 +1,8 @@ import datetime -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse if TYPE_CHECKING: @@ -11,35 +12,39 @@ T = TypeVar("T", bound="AppVersion") -@attr.s(auto_attribs=True) +@_attrs_define class AppVersion: """ Attributes: created_at (datetime.datetime): - parameters (List['Parameter']): + parameters (list['Parameter']): + towerfile (str): The Towerfile that this version was created from. version (str): """ created_at: datetime.datetime - parameters: List["Parameter"] + parameters: list["Parameter"] + towerfile: str version: str - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: created_at = self.created_at.isoformat() parameters = [] for parameters_item_data in self.parameters: parameters_item = parameters_item_data.to_dict() - parameters.append(parameters_item) + towerfile = self.towerfile + version = self.version - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "created_at": created_at, "parameters": parameters, + "towerfile": towerfile, "version": version, } ) @@ -47,10 +52,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.parameter import Parameter - d = src_dict.copy() + d = dict(src_dict) created_at = isoparse(d.pop("created_at")) parameters = [] @@ -60,11 +65,14 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: parameters.append(parameters_item) + towerfile = d.pop("towerfile") + version = d.pop("version") app_version = cls( created_at=created_at, parameters=parameters, + towerfile=towerfile, version=version, ) diff --git a/src/tower/tower_api_client/models/cancel_run_response.py b/src/tower/tower_api_client/models/cancel_run_response.py index fcf51e2b..2450d954 100644 --- a/src/tower/tower_api_client/models/cancel_run_response.py +++ b/src/tower/tower_api_client/models/cancel_run_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="CancelRunResponse") -@attr.s(auto_attribs=True) +@_attrs_define class CancelRunResponse: """ Attributes: run (Run): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CancelRunResponse.json. + https://api.tower.dev/v1/schemas/CancelRunResponse.json. """ run: "Run" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: run = self.run.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "run": run, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.run import Run - d = src_dict.copy() + d = dict(src_dict) run = Run.from_dict(d.pop("run")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/catalog.py b/src/tower/tower_api_client/models/catalog.py new file mode 100644 index 00000000..e75bdf13 --- /dev/null +++ b/src/tower/tower_api_client/models/catalog.py @@ -0,0 +1,95 @@ +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define +from dateutil.parser import isoparse + +if TYPE_CHECKING: + from ..models.catalog_property import CatalogProperty + + +T = TypeVar("T", bound="Catalog") + + +@_attrs_define +class Catalog: + """ + Attributes: + created_at (datetime.datetime): + environment (str): + name (str): + properties (list['CatalogProperty']): + slug (str): + type_ (str): + """ + + created_at: datetime.datetime + environment: str + name: str + properties: list["CatalogProperty"] + slug: str + type_: str + + def to_dict(self) -> dict[str, Any]: + created_at = self.created_at.isoformat() + + environment = self.environment + + name = self.name + + properties = [] + for properties_item_data in self.properties: + properties_item = properties_item_data.to_dict() + properties.append(properties_item) + + slug = self.slug + + type_ = self.type_ + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "CreatedAt": created_at, + "environment": environment, + "name": name, + "properties": properties, + "slug": slug, + "type": type_, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.catalog_property import CatalogProperty + + d = dict(src_dict) + created_at = isoparse(d.pop("CreatedAt")) + + environment = d.pop("environment") + + name = d.pop("name") + + properties = [] + _properties = d.pop("properties") + for properties_item_data in _properties: + properties_item = CatalogProperty.from_dict(properties_item_data) + + properties.append(properties_item) + + slug = d.pop("slug") + + type_ = d.pop("type") + + catalog = cls( + created_at=created_at, + environment=environment, + name=name, + properties=properties, + slug=slug, + type_=type_, + ) + + return catalog diff --git a/src/tower/tower_api_client/models/catalog_property.py b/src/tower/tower_api_client/models/catalog_property.py new file mode 100644 index 00000000..aac3df5d --- /dev/null +++ b/src/tower/tower_api_client/models/catalog_property.py @@ -0,0 +1,47 @@ +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define + +T = TypeVar("T", bound="CatalogProperty") + + +@_attrs_define +class CatalogProperty: + """ + Attributes: + name (str): + preview (str): + """ + + name: str + preview: str + + def to_dict(self) -> dict[str, Any]: + name = self.name + + preview = self.preview + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "name": name, + "preview": preview, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + name = d.pop("name") + + preview = d.pop("preview") + + catalog_property = cls( + name=name, + preview=preview, + ) + + return catalog_property diff --git a/src/tower/tower_api_client/models/claim_device_login_ticket_params.py b/src/tower/tower_api_client/models/claim_device_login_ticket_params.py index 4cc7b954..275c3bde 100644 --- a/src/tower/tower_api_client/models/claim_device_login_ticket_params.py +++ b/src/tower/tower_api_client/models/claim_device_login_ticket_params.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="ClaimDeviceLoginTicketParams") -@attr.s(auto_attribs=True) +@_attrs_define class ClaimDeviceLoginTicketParams: """ Attributes: user_code (str): The user code to claim. schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ClaimDeviceLoginTicketParams.json. + https://api.tower.dev/v1/schemas/ClaimDeviceLoginTicketParams.json. """ user_code: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: user_code = self.user_code + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "user_code": user_code, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) user_code = d.pop("user_code") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/claim_device_login_ticket_response.py b/src/tower/tower_api_client/models/claim_device_login_ticket_response.py index 6d4b71eb..2a6c9a62 100644 --- a/src/tower/tower_api_client/models/claim_device_login_ticket_response.py +++ b/src/tower/tower_api_client/models/claim_device_login_ticket_response.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="ClaimDeviceLoginTicketResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ClaimDeviceLoginTicketResponse: """ Attributes: claimed (bool): Whether the code was successfully claimed. schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ClaimDeviceLoginTicketResponse.json. + https://api.tower.dev/v1/schemas/ClaimDeviceLoginTicketResponse.json. """ claimed: bool schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: claimed = self.claimed + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "claimed": claimed, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) claimed = d.pop("claimed") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/create_account_params.py b/src/tower/tower_api_client/models/create_account_params.py index 6fe4eb60..67563add 100644 --- a/src/tower/tower_api_client/models/create_account_params.py +++ b/src/tower/tower_api_client/models/create_account_params.py @@ -1,13 +1,14 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="CreateAccountParams") -@attr.s(auto_attribs=True) +@_attrs_define class CreateAccountParams: """ Attributes: @@ -19,7 +20,7 @@ class CreateAccountParams: last_name (str): password (str): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateAccountParams.json. + https://api.tower.dev/v1/schemas/CreateAccountParams.json. """ company: str @@ -31,17 +32,24 @@ class CreateAccountParams: password: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: company = self.company + country = self.country + email = self.email + first_name = self.first_name + invite = self.invite + last_name = self.last_name + password = self.password + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "company": company, @@ -59,8 +67,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) company = d.pop("company") country = d.pop("country") diff --git a/src/tower/tower_api_client/models/create_account_params_flags_struct.py b/src/tower/tower_api_client/models/create_account_params_flags_struct.py index 38706f00..91b457b5 100644 --- a/src/tower/tower_api_client/models/create_account_params_flags_struct.py +++ b/src/tower/tower_api_client/models/create_account_params_flags_struct.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="CreateAccountParamsFlagsStruct") -@attr.s(auto_attribs=True) +@_attrs_define class CreateAccountParamsFlagsStruct: """ Attributes: @@ -14,10 +15,10 @@ class CreateAccountParamsFlagsStruct: is_test_account: bool - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: is_test_account = self.is_test_account - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "is_test_account": is_test_account, @@ -27,8 +28,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) is_test_account = d.pop("is_test_account") create_account_params_flags_struct = cls( diff --git a/src/tower/tower_api_client/models/create_account_response.py b/src/tower/tower_api_client/models/create_account_response.py index 0ceb6278..94d9ca68 100644 --- a/src/tower/tower_api_client/models/create_account_response.py +++ b/src/tower/tower_api_client/models/create_account_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="CreateAccountResponse") -@attr.s(auto_attribs=True) +@_attrs_define class CreateAccountResponse: """ Attributes: session (Session): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateAccountResponse.json. + https://api.tower.dev/v1/schemas/CreateAccountResponse.json. """ session: "Session" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: session = self.session.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "session": session, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.session import Session - d = src_dict.copy() + d = dict(src_dict) session = Session.from_dict(d.pop("session")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/create_api_key_params.py b/src/tower/tower_api_client/models/create_api_key_params.py index c162b2a6..35479bac 100644 --- a/src/tower/tower_api_client/models/create_api_key_params.py +++ b/src/tower/tower_api_client/models/create_api_key_params.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="CreateAPIKeyParams") -@attr.s(auto_attribs=True) +@_attrs_define class CreateAPIKeyParams: """ Attributes: name (str): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateAPIKeyParams.json. + https://api.tower.dev/v1/schemas/CreateAPIKeyParams.json. """ name: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: name = self.name + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "name": name, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) name = d.pop("name") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/create_api_key_response.py b/src/tower/tower_api_client/models/create_api_key_response.py index 79b3df37..8ac360cb 100644 --- a/src/tower/tower_api_client/models/create_api_key_response.py +++ b/src/tower/tower_api_client/models/create_api_key_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="CreateAPIKeyResponse") -@attr.s(auto_attribs=True) +@_attrs_define class CreateAPIKeyResponse: """ Attributes: api_key (APIKey): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateAPIKeyResponse.json. + https://api.tower.dev/v1/schemas/CreateAPIKeyResponse.json. """ api_key: "APIKey" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: api_key = self.api_key.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "api_key": api_key, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.api_key import APIKey - d = src_dict.copy() + d = dict(src_dict) api_key = APIKey.from_dict(d.pop("api_key")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/create_app_params.py b/src/tower/tower_api_client/models/create_app_params.py index 7f7faa44..c37e8fcd 100644 --- a/src/tower/tower_api_client/models/create_app_params.py +++ b/src/tower/tower_api_client/models/create_app_params.py @@ -1,32 +1,39 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="CreateAppParams") -@attr.s(auto_attribs=True) +@_attrs_define class CreateAppParams: """ Attributes: name (str): The name of the app. schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateAppParams.json. + https://api.tower.dev/v1/schemas/CreateAppParams.json. short_description (Union[Unset, str]): A description of the app. + slug (Union[Unset, str]): A slug for the app. """ name: str schema: Union[Unset, str] = UNSET short_description: Union[Unset, str] = UNSET + slug: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: name = self.name + schema = self.schema + short_description = self.short_description - field_dict: Dict[str, Any] = {} + slug = self.slug + + field_dict: dict[str, Any] = {} field_dict.update( { "name": name, @@ -36,22 +43,27 @@ def to_dict(self) -> Dict[str, Any]: field_dict["$schema"] = schema if short_description is not UNSET: field_dict["short_description"] = short_description + if slug is not UNSET: + field_dict["slug"] = slug return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) name = d.pop("name") schema = d.pop("$schema", UNSET) short_description = d.pop("short_description", UNSET) + slug = d.pop("slug", UNSET) + create_app_params = cls( name=name, schema=schema, short_description=short_description, + slug=slug, ) return create_app_params diff --git a/src/tower/tower_api_client/models/create_app_response.py b/src/tower/tower_api_client/models/create_app_response.py index 44106132..0a0090a2 100644 --- a/src/tower/tower_api_client/models/create_app_response.py +++ b/src/tower/tower_api_client/models/create_app_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="CreateAppResponse") -@attr.s(auto_attribs=True) +@_attrs_define class CreateAppResponse: """ Attributes: app (App): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateAppResponse.json. + https://api.tower.dev/v1/schemas/CreateAppResponse.json. """ app: "App" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: app = self.app.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "app": app, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app import App - d = src_dict.copy() + d = dict(src_dict) app = App.from_dict(d.pop("app")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/create_catalog_params.py b/src/tower/tower_api_client/models/create_catalog_params.py new file mode 100644 index 00000000..2df3e349 --- /dev/null +++ b/src/tower/tower_api_client/models/create_catalog_params.py @@ -0,0 +1,98 @@ +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..models.create_catalog_params_type import CreateCatalogParamsType +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.encrypted_catalog_property import EncryptedCatalogProperty + + +T = TypeVar("T", bound="CreateCatalogParams") + + +@_attrs_define +class CreateCatalogParams: + """ + Attributes: + environment (str): + name (str): + properties (list['EncryptedCatalogProperty']): + slug (str): + type_ (CreateCatalogParamsType): + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/CreateCatalogParams.json. + """ + + environment: str + name: str + properties: list["EncryptedCatalogProperty"] + slug: str + type_: CreateCatalogParamsType + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + environment = self.environment + + name = self.name + + properties = [] + for properties_item_data in self.properties: + properties_item = properties_item_data.to_dict() + properties.append(properties_item) + + slug = self.slug + + type_ = self.type_.value + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "environment": environment, + "name": name, + "properties": properties, + "slug": slug, + "type": type_, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.encrypted_catalog_property import EncryptedCatalogProperty + + d = dict(src_dict) + environment = d.pop("environment") + + name = d.pop("name") + + properties = [] + _properties = d.pop("properties") + for properties_item_data in _properties: + properties_item = EncryptedCatalogProperty.from_dict(properties_item_data) + + properties.append(properties_item) + + slug = d.pop("slug") + + type_ = CreateCatalogParamsType(d.pop("type")) + + schema = d.pop("$schema", UNSET) + + create_catalog_params = cls( + environment=environment, + name=name, + properties=properties, + slug=slug, + type_=type_, + schema=schema, + ) + + return create_catalog_params diff --git a/src/tower/tower_api_client/models/create_catalog_params_type.py b/src/tower/tower_api_client/models/create_catalog_params_type.py new file mode 100644 index 00000000..3b9be242 --- /dev/null +++ b/src/tower/tower_api_client/models/create_catalog_params_type.py @@ -0,0 +1,9 @@ +from enum import Enum + + +class CreateCatalogParamsType(str, Enum): + APACHE_POLARIS = "apache-polaris" + SNOWFLAKE_OPEN_CATALOG = "snowflake-open-catalog" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/create_catalog_response.py b/src/tower/tower_api_client/models/create_catalog_response.py new file mode 100644 index 00000000..a0812c81 --- /dev/null +++ b/src/tower/tower_api_client/models/create_catalog_response.py @@ -0,0 +1,57 @@ +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.catalog import Catalog + + +T = TypeVar("T", bound="CreateCatalogResponse") + + +@_attrs_define +class CreateCatalogResponse: + """ + Attributes: + catalog (Catalog): + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/CreateCatalogResponse.json. + """ + + catalog: "Catalog" + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + catalog = self.catalog.to_dict() + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "catalog": catalog, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.catalog import Catalog + + d = dict(src_dict) + catalog = Catalog.from_dict(d.pop("catalog")) + + schema = d.pop("$schema", UNSET) + + create_catalog_response = cls( + catalog=catalog, + schema=schema, + ) + + return create_catalog_response diff --git a/src/tower/tower_api_client/models/create_device_login_ticket_response.py b/src/tower/tower_api_client/models/create_device_login_ticket_response.py index 5b9f91f8..1239bdf2 100644 --- a/src/tower/tower_api_client/models/create_device_login_ticket_response.py +++ b/src/tower/tower_api_client/models/create_device_login_ticket_response.py @@ -1,7 +1,8 @@ import datetime -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse from ..types import UNSET, Unset @@ -9,7 +10,7 @@ T = TypeVar("T", bound="CreateDeviceLoginTicketResponse") -@attr.s(auto_attribs=True) +@_attrs_define class CreateDeviceLoginTicketResponse: """ Attributes: @@ -21,7 +22,7 @@ class CreateDeviceLoginTicketResponse: user_code (str): The code that the user needs to enter to authenticate. verification_url (str): The URL that the device should poll to check authentication status. schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateDeviceLoginTicketResponse.json. + https://api.tower.dev/v1/schemas/CreateDeviceLoginTicketResponse.json. """ device_code: str @@ -33,18 +34,24 @@ class CreateDeviceLoginTicketResponse: verification_url: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: device_code = self.device_code + expires_in = self.expires_in + generated_at = self.generated_at.isoformat() interval = self.interval + login_url = self.login_url + user_code = self.user_code + verification_url = self.verification_url + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "device_code": device_code, @@ -62,8 +69,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) device_code = d.pop("device_code") expires_in = d.pop("expires_in") diff --git a/src/tower/tower_api_client/models/create_secret_params.py b/src/tower/tower_api_client/models/create_secret_params.py index dd2442d9..1b7987b6 100644 --- a/src/tower/tower_api_client/models/create_secret_params.py +++ b/src/tower/tower_api_client/models/create_secret_params.py @@ -1,13 +1,14 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="CreateSecretParams") -@attr.s(auto_attribs=True) +@_attrs_define class CreateSecretParams: """ Attributes: @@ -16,7 +17,7 @@ class CreateSecretParams: name (str): preview (str): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateSecretParams.json. + https://api.tower.dev/v1/schemas/CreateSecretParams.json. """ encrypted_value: str @@ -25,14 +26,18 @@ class CreateSecretParams: preview: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: encrypted_value = self.encrypted_value + environment = self.environment + name = self.name + preview = self.preview + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "encrypted_value": encrypted_value, @@ -47,8 +52,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) encrypted_value = d.pop("encrypted_value") environment = d.pop("environment") diff --git a/src/tower/tower_api_client/models/create_secret_response.py b/src/tower/tower_api_client/models/create_secret_response.py index 056a2cc6..9a674c9a 100644 --- a/src/tower/tower_api_client/models/create_secret_response.py +++ b/src/tower/tower_api_client/models/create_secret_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="CreateSecretResponse") -@attr.s(auto_attribs=True) +@_attrs_define class CreateSecretResponse: """ Attributes: secret (Secret): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateSecretResponse.json. + https://api.tower.dev/v1/schemas/CreateSecretResponse.json. """ secret: "Secret" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: secret = self.secret.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "secret": secret, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.secret import Secret - d = src_dict.copy() + d = dict(src_dict) secret = Secret.from_dict(d.pop("secret")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/create_session_params.py b/src/tower/tower_api_client/models/create_session_params.py index 7c430e84..7e0609c7 100644 --- a/src/tower/tower_api_client/models/create_session_params.py +++ b/src/tower/tower_api_client/models/create_session_params.py @@ -1,32 +1,35 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="CreateSessionParams") -@attr.s(auto_attribs=True) +@_attrs_define class CreateSessionParams: """ Attributes: password (str): username (str): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateSessionParams.json. + https://api.tower.dev/v1/schemas/CreateSessionParams.json. """ password: str username: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: password = self.password + username = self.username + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "password": password, @@ -39,8 +42,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) password = d.pop("password") username = d.pop("username") diff --git a/src/tower/tower_api_client/models/create_session_response.py b/src/tower/tower_api_client/models/create_session_response.py index f1002536..4ad05118 100644 --- a/src/tower/tower_api_client/models/create_session_response.py +++ b/src/tower/tower_api_client/models/create_session_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="CreateSessionResponse") -@attr.s(auto_attribs=True) +@_attrs_define class CreateSessionResponse: """ Attributes: session (Session): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateSessionResponse.json. + https://api.tower.dev/v1/schemas/CreateSessionResponse.json. """ session: "Session" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: session = self.session.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "session": session, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.session import Session - d = src_dict.copy() + d = dict(src_dict) session = Session.from_dict(d.pop("session")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/create_team_params.py b/src/tower/tower_api_client/models/create_team_params.py index 877ce87b..90c1ca59 100644 --- a/src/tower/tower_api_client/models/create_team_params.py +++ b/src/tower/tower_api_client/models/create_team_params.py @@ -1,32 +1,35 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="CreateTeamParams") -@attr.s(auto_attribs=True) +@_attrs_define class CreateTeamParams: """ Attributes: name (str): The name of the team to create slug (str): The slug of the team to create schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateTeamParams.json. + https://api.tower.dev/v1/schemas/CreateTeamParams.json. """ name: str slug: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: name = self.name + slug = self.slug + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "name": name, @@ -39,8 +42,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) name = d.pop("name") slug = d.pop("slug") diff --git a/src/tower/tower_api_client/models/create_team_response.py b/src/tower/tower_api_client/models/create_team_response.py index a42b4467..34a37954 100644 --- a/src/tower/tower_api_client/models/create_team_response.py +++ b/src/tower/tower_api_client/models/create_team_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="CreateTeamResponse") -@attr.s(auto_attribs=True) +@_attrs_define class CreateTeamResponse: """ Attributes: team (Team): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/CreateTeamResponse.json. + https://api.tower.dev/v1/schemas/CreateTeamResponse.json. """ team: "Team" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team = self.team.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team": team, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team import Team - d = src_dict.copy() + d = dict(src_dict) team = Team.from_dict(d.pop("team")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/delete_api_key_params.py b/src/tower/tower_api_client/models/delete_api_key_params.py index 4c380902..c439720a 100644 --- a/src/tower/tower_api_client/models/delete_api_key_params.py +++ b/src/tower/tower_api_client/models/delete_api_key_params.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="DeleteAPIKeyParams") -@attr.s(auto_attribs=True) +@_attrs_define class DeleteAPIKeyParams: """ Attributes: identifier (str): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DeleteAPIKeyParams.json. + https://api.tower.dev/v1/schemas/DeleteAPIKeyParams.json. """ identifier: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: identifier = self.identifier + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "identifier": identifier, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) identifier = d.pop("identifier") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/delete_api_key_response.py b/src/tower/tower_api_client/models/delete_api_key_response.py index 77e1b576..14ce3951 100644 --- a/src/tower/tower_api_client/models/delete_api_key_response.py +++ b/src/tower/tower_api_client/models/delete_api_key_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="DeleteAPIKeyResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DeleteAPIKeyResponse: """ Attributes: api_key (APIKey): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DeleteAPIKeyResponse.json. + https://api.tower.dev/v1/schemas/DeleteAPIKeyResponse.json. """ api_key: "APIKey" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: api_key = self.api_key.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "api_key": api_key, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.api_key import APIKey - d = src_dict.copy() + d = dict(src_dict) api_key = APIKey.from_dict(d.pop("api_key")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/delete_app_response.py b/src/tower/tower_api_client/models/delete_app_response.py index b2ac7ad6..b2c1c244 100644 --- a/src/tower/tower_api_client/models/delete_app_response.py +++ b/src/tower/tower_api_client/models/delete_app_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="DeleteAppResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DeleteAppResponse: """ Attributes: app (App): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DeleteAppResponse.json. + https://api.tower.dev/v1/schemas/DeleteAppResponse.json. """ app: "App" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: app = self.app.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "app": app, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app import App - d = src_dict.copy() + d = dict(src_dict) app = App.from_dict(d.pop("app")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/delete_catalog_response.py b/src/tower/tower_api_client/models/delete_catalog_response.py new file mode 100644 index 00000000..d5c04c21 --- /dev/null +++ b/src/tower/tower_api_client/models/delete_catalog_response.py @@ -0,0 +1,57 @@ +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.catalog import Catalog + + +T = TypeVar("T", bound="DeleteCatalogResponse") + + +@_attrs_define +class DeleteCatalogResponse: + """ + Attributes: + catalog (Catalog): + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/DeleteCatalogResponse.json. + """ + + catalog: "Catalog" + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + catalog = self.catalog.to_dict() + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "catalog": catalog, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.catalog import Catalog + + d = dict(src_dict) + catalog = Catalog.from_dict(d.pop("catalog")) + + schema = d.pop("$schema", UNSET) + + delete_catalog_response = cls( + catalog=catalog, + schema=schema, + ) + + return delete_catalog_response diff --git a/src/tower/tower_api_client/models/delete_team_invitation_params.py b/src/tower/tower_api_client/models/delete_team_invitation_params.py index 95b942e5..98ddb9dd 100644 --- a/src/tower/tower_api_client/models/delete_team_invitation_params.py +++ b/src/tower/tower_api_client/models/delete_team_invitation_params.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="DeleteTeamInvitationParams") -@attr.s(auto_attribs=True) +@_attrs_define class DeleteTeamInvitationParams: """ Attributes: email (str): The email address of the team member to remove schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DeleteTeamInvitationParams.json. + https://api.tower.dev/v1/schemas/DeleteTeamInvitationParams.json. """ email: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: email = self.email + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "email": email, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) email = d.pop("email") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/delete_team_invitation_response.py b/src/tower/tower_api_client/models/delete_team_invitation_response.py index 88e9549e..1feb8f19 100644 --- a/src/tower/tower_api_client/models/delete_team_invitation_response.py +++ b/src/tower/tower_api_client/models/delete_team_invitation_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="DeleteTeamInvitationResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DeleteTeamInvitationResponse: """ Attributes: invitation (TeamInvitation): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DeleteTeamInvitationResponse.json. + https://api.tower.dev/v1/schemas/DeleteTeamInvitationResponse.json. """ invitation: "TeamInvitation" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: invitation = self.invitation.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "invitation": invitation, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team_invitation import TeamInvitation - d = src_dict.copy() + d = dict(src_dict) invitation = TeamInvitation.from_dict(d.pop("invitation")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/delete_team_params.py b/src/tower/tower_api_client/models/delete_team_params.py index aec61062..2af8bbb4 100644 --- a/src/tower/tower_api_client/models/delete_team_params.py +++ b/src/tower/tower_api_client/models/delete_team_params.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="DeleteTeamParams") -@attr.s(auto_attribs=True) +@_attrs_define class DeleteTeamParams: """ Attributes: slug (str): The slug of the team to delete schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DeleteTeamParams.json. + https://api.tower.dev/v1/schemas/DeleteTeamParams.json. """ slug: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: slug = self.slug + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "slug": slug, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) slug = d.pop("slug") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/delete_team_response.py b/src/tower/tower_api_client/models/delete_team_response.py index 9738b63d..d530b37e 100644 --- a/src/tower/tower_api_client/models/delete_team_response.py +++ b/src/tower/tower_api_client/models/delete_team_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="DeleteTeamResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DeleteTeamResponse: """ Attributes: team (Team): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DeleteTeamResponse.json. + https://api.tower.dev/v1/schemas/DeleteTeamResponse.json. """ team: "Team" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team = self.team.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team": team, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team import Team - d = src_dict.copy() + d = dict(src_dict) team = Team.from_dict(d.pop("team")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/deploy_app_response.py b/src/tower/tower_api_client/models/deploy_app_response.py index c6f5bd09..2ce1c74b 100644 --- a/src/tower/tower_api_client/models/deploy_app_response.py +++ b/src/tower/tower_api_client/models/deploy_app_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="DeployAppResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DeployAppResponse: """ Attributes: version (AppVersion): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DeployAppResponse.json. + https://api.tower.dev/v1/schemas/DeployAppResponse.json. """ version: "AppVersion" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: version = self.version.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "version": version, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app_version import AppVersion - d = src_dict.copy() + d = dict(src_dict) version = AppVersion.from_dict(d.pop("version")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/describe_app_response.py b/src/tower/tower_api_client/models/describe_app_response.py index 54f6137d..5ac79e33 100644 --- a/src/tower/tower_api_client/models/describe_app_response.py +++ b/src/tower/tower_api_client/models/describe_app_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -12,32 +13,31 @@ T = TypeVar("T", bound="DescribeAppResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DescribeAppResponse: """ Attributes: app (App): - runs (List['Run']): + runs (list['Run']): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DescribeAppResponse.json. + https://api.tower.dev/v1/schemas/DescribeAppResponse.json. """ app: "App" - runs: List["Run"] + runs: list["Run"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: app = self.app.to_dict() runs = [] for runs_item_data in self.runs: runs_item = runs_item_data.to_dict() - runs.append(runs_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "app": app, @@ -50,11 +50,11 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app import App from ..models.run import Run - d = src_dict.copy() + d = dict(src_dict) app = App.from_dict(d.pop("app")) runs = [] diff --git a/src/tower/tower_api_client/models/describe_app_version_response.py b/src/tower/tower_api_client/models/describe_app_version_response.py index e5bfe0ab..71e67608 100644 --- a/src/tower/tower_api_client/models/describe_app_version_response.py +++ b/src/tower/tower_api_client/models/describe_app_version_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="DescribeAppVersionResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DescribeAppVersionResponse: """ Attributes: version (AppVersion): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DescribeAppVersionResponse.json. + https://api.tower.dev/v1/schemas/DescribeAppVersionResponse.json. """ version: "AppVersion" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: version = self.version.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "version": version, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app_version import AppVersion - d = src_dict.copy() + d = dict(src_dict) version = AppVersion.from_dict(d.pop("version")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/describe_device_login_session_response.py b/src/tower/tower_api_client/models/describe_device_login_session_response.py index 938833cd..93e0e393 100644 --- a/src/tower/tower_api_client/models/describe_device_login_session_response.py +++ b/src/tower/tower_api_client/models/describe_device_login_session_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="DescribeDeviceLoginSessionResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DescribeDeviceLoginSessionResponse: """ Attributes: session (Session): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DescribeDeviceLoginSessionResponse.json. + https://api.tower.dev/v1/schemas/DescribeDeviceLoginSessionResponse.json. """ session: "Session" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: session = self.session.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "session": session, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.session import Session - d = src_dict.copy() + d = dict(src_dict) session = Session.from_dict(d.pop("session")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/get_run_logs_output_body.py b/src/tower/tower_api_client/models/describe_run_logs_response.py similarity index 53% rename from src/tower/tower_api_client/models/get_run_logs_output_body.py rename to src/tower/tower_api_client/models/describe_run_logs_response.py index f2f0481d..83a09d8f 100644 --- a/src/tower/tower_api_client/models/get_run_logs_output_body.py +++ b/src/tower/tower_api_client/models/describe_run_logs_response.py @@ -1,38 +1,38 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset if TYPE_CHECKING: - from ..models.get_run_log_line import GetRunLogLine + from ..models.run_log_line import RunLogLine -T = TypeVar("T", bound="GetRunLogsOutputBody") +T = TypeVar("T", bound="DescribeRunLogsResponse") -@attr.s(auto_attribs=True) -class GetRunLogsOutputBody: +@_attrs_define +class DescribeRunLogsResponse: """ Attributes: - log_lines (List['GetRunLogLine']): + log_lines (list['RunLogLine']): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/GetRunLogsOutputBody.json. + https://api.tower.dev/v1/schemas/DescribeRunLogsResponse.json. """ - log_lines: List["GetRunLogLine"] + log_lines: list["RunLogLine"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: log_lines = [] for log_lines_item_data in self.log_lines: log_lines_item = log_lines_item_data.to_dict() - log_lines.append(log_lines_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "log_lines": log_lines, @@ -44,22 +44,22 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - from ..models.get_run_log_line import GetRunLogLine + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.run_log_line import RunLogLine - d = src_dict.copy() + d = dict(src_dict) log_lines = [] _log_lines = d.pop("log_lines") for log_lines_item_data in _log_lines: - log_lines_item = GetRunLogLine.from_dict(log_lines_item_data) + log_lines_item = RunLogLine.from_dict(log_lines_item_data) log_lines.append(log_lines_item) schema = d.pop("$schema", UNSET) - get_run_logs_output_body = cls( + describe_run_logs_response = cls( log_lines=log_lines, schema=schema, ) - return get_run_logs_output_body + return describe_run_logs_response diff --git a/src/tower/tower_api_client/models/describe_run_response.py b/src/tower/tower_api_client/models/describe_run_response.py index 04e4db54..3ce6c9ae 100644 --- a/src/tower/tower_api_client/models/describe_run_response.py +++ b/src/tower/tower_api_client/models/describe_run_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="DescribeRunResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DescribeRunResponse: """ Attributes: run (Run): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DescribeRunResponse.json. + https://api.tower.dev/v1/schemas/DescribeRunResponse.json. """ run: "Run" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: run = self.run.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "run": run, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.run import Run - d = src_dict.copy() + d = dict(src_dict) run = Run.from_dict(d.pop("run")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/describe_secrets_key_response.py b/src/tower/tower_api_client/models/describe_secrets_key_response.py index ab4b271e..adb2c56e 100644 --- a/src/tower/tower_api_client/models/describe_secrets_key_response.py +++ b/src/tower/tower_api_client/models/describe_secrets_key_response.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="DescribeSecretsKeyResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DescribeSecretsKeyResponse: """ Attributes: public_key (str): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DescribeSecretsKeyResponse.json. + https://api.tower.dev/v1/schemas/DescribeSecretsKeyResponse.json. """ public_key: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: public_key = self.public_key + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "public_key": public_key, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) public_key = d.pop("public_key") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/describe_session_response.py b/src/tower/tower_api_client/models/describe_session_response.py index 189e8852..5c519fac 100644 --- a/src/tower/tower_api_client/models/describe_session_response.py +++ b/src/tower/tower_api_client/models/describe_session_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="DescribeSessionResponse") -@attr.s(auto_attribs=True) +@_attrs_define class DescribeSessionResponse: """ Attributes: session (Session): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/DescribeSessionResponse.json. + https://api.tower.dev/v1/schemas/DescribeSessionResponse.json. """ session: "Session" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: session = self.session.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "session": session, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.session import Session - d = src_dict.copy() + d = dict(src_dict) session = Session.from_dict(d.pop("session")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/encrypted_catalog_property.py b/src/tower/tower_api_client/models/encrypted_catalog_property.py new file mode 100644 index 00000000..a4ec7368 --- /dev/null +++ b/src/tower/tower_api_client/models/encrypted_catalog_property.py @@ -0,0 +1,55 @@ +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define + +T = TypeVar("T", bound="EncryptedCatalogProperty") + + +@_attrs_define +class EncryptedCatalogProperty: + """ + Attributes: + encrypted_value (str): + name (str): + preview (str): + """ + + encrypted_value: str + name: str + preview: str + + def to_dict(self) -> dict[str, Any]: + encrypted_value = self.encrypted_value + + name = self.name + + preview = self.preview + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "encrypted_value": encrypted_value, + "name": name, + "preview": preview, + } + ) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + encrypted_value = d.pop("encrypted_value") + + name = d.pop("name") + + preview = d.pop("preview") + + encrypted_catalog_property = cls( + encrypted_value=encrypted_value, + name=name, + preview=preview, + ) + + return encrypted_catalog_property diff --git a/src/tower/tower_api_client/models/error_detail.py b/src/tower/tower_api_client/models/error_detail.py index 46f7cf51..6b5c094d 100644 --- a/src/tower/tower_api_client/models/error_detail.py +++ b/src/tower/tower_api_client/models/error_detail.py @@ -1,13 +1,14 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="ErrorDetail") -@attr.s(auto_attribs=True) +@_attrs_define class ErrorDetail: """ Attributes: @@ -20,12 +21,14 @@ class ErrorDetail: message: Union[Unset, str] = UNSET value: Union[Unset, Any] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: location = self.location + message = self.message + value = self.value - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update({}) if location is not UNSET: field_dict["location"] = location @@ -37,8 +40,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) location = d.pop("location", UNSET) message = d.pop("message", UNSET) diff --git a/src/tower/tower_api_client/models/error_model.py b/src/tower/tower_api_client/models/error_model.py index a3c62294..686ce2c3 100644 --- a/src/tower/tower_api_client/models/error_model.py +++ b/src/tower/tower_api_client/models/error_model.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,49 +12,53 @@ T = TypeVar("T", bound="ErrorModel") -@attr.s(auto_attribs=True) +@_attrs_define class ErrorModel: """ Attributes: schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ErrorModel.json. + https://api.tower.dev/v1/schemas/ErrorModel.json. detail (Union[Unset, str]): A human-readable explanation specific to this occurrence of the problem. Example: Property foo is required but is missing.. - errors (Union[Unset, List['ErrorDetail']]): Optional list of individual error details + errors (Union[Unset, list['ErrorDetail']]): Optional list of individual error details instance (Union[Unset, str]): A URI reference that identifies the specific occurrence of the problem. Example: https://example.com/error-log/abc123. status (Union[Unset, int]): HTTP status code Example: 400. title (Union[Unset, str]): A short, human-readable summary of the problem type. This value should not change between occurrences of the error. Example: Bad Request. - type (Union[Unset, str]): A URI reference to human-readable documentation for the error. Default: 'about:blank'. - Example: https://example.com/errors/example. + type_ (Union[Unset, str]): A URI reference to human-readable documentation for the error. Default: + 'about:blank'. Example: https://example.com/errors/example. """ schema: Union[Unset, str] = UNSET detail: Union[Unset, str] = UNSET - errors: Union[Unset, List["ErrorDetail"]] = UNSET + errors: Union[Unset, list["ErrorDetail"]] = UNSET instance: Union[Unset, str] = UNSET status: Union[Unset, int] = UNSET title: Union[Unset, str] = UNSET - type: Union[Unset, str] = "about:blank" + type_: Union[Unset, str] = "about:blank" - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: schema = self.schema + detail = self.detail - errors: Union[Unset, List[Dict[str, Any]]] = UNSET + + errors: Union[Unset, list[dict[str, Any]]] = UNSET if not isinstance(self.errors, Unset): errors = [] for errors_item_data in self.errors: errors_item = errors_item_data.to_dict() - errors.append(errors_item) instance = self.instance + status = self.status + title = self.title - type = self.type - field_dict: Dict[str, Any] = {} + type_ = self.type_ + + field_dict: dict[str, Any] = {} field_dict.update({}) if schema is not UNSET: field_dict["$schema"] = schema @@ -67,16 +72,16 @@ def to_dict(self) -> Dict[str, Any]: field_dict["status"] = status if title is not UNSET: field_dict["title"] = title - if type is not UNSET: - field_dict["type"] = type + if type_ is not UNSET: + field_dict["type"] = type_ return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.error_detail import ErrorDetail - d = src_dict.copy() + d = dict(src_dict) schema = d.pop("$schema", UNSET) detail = d.pop("detail", UNSET) @@ -94,7 +99,7 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: title = d.pop("title", UNSET) - type = d.pop("type", UNSET) + type_ = d.pop("type", UNSET) error_model = cls( schema=schema, @@ -103,7 +108,7 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: instance=instance, status=status, title=title, - type=type, + type_=type_, ) return error_model diff --git a/src/tower/tower_api_client/models/export_secrets_response.py b/src/tower/tower_api_client/models/export_secrets_response.py index 3919e6c5..3663adaa 100644 --- a/src/tower/tower_api_client/models/export_secrets_response.py +++ b/src/tower/tower_api_client/models/export_secrets_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -12,32 +13,31 @@ T = TypeVar("T", bound="ExportSecretsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ExportSecretsResponse: """ Attributes: pages (Pagination): - secrets (List['ExportedSecret']): + secrets (list['ExportedSecret']): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ExportSecretsResponse.json. + https://api.tower.dev/v1/schemas/ExportSecretsResponse.json. """ pages: "Pagination" - secrets: List["ExportedSecret"] + secrets: list["ExportedSecret"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: pages = self.pages.to_dict() secrets = [] for secrets_item_data in self.secrets: secrets_item = secrets_item_data.to_dict() - secrets.append(secrets_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "pages": pages, @@ -50,11 +50,11 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.exported_secret import ExportedSecret from ..models.pagination import Pagination - d = src_dict.copy() + d = dict(src_dict) pages = Pagination.from_dict(d.pop("pages")) secrets = [] diff --git a/src/tower/tower_api_client/models/export_user_secrets_params.py b/src/tower/tower_api_client/models/export_user_secrets_params.py index 3fc52664..26fca1a5 100644 --- a/src/tower/tower_api_client/models/export_user_secrets_params.py +++ b/src/tower/tower_api_client/models/export_user_secrets_params.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="ExportUserSecretsParams") -@attr.s(auto_attribs=True) +@_attrs_define class ExportUserSecretsParams: """ Attributes: public_key (str): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ExportUserSecretsParams.json. + https://api.tower.dev/v1/schemas/ExportUserSecretsParams.json. """ public_key: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: public_key = self.public_key + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "public_key": public_key, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) public_key = d.pop("public_key") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/exported_secret.py b/src/tower/tower_api_client/models/exported_secret.py index c9baa90f..c46ba8a2 100644 --- a/src/tower/tower_api_client/models/exported_secret.py +++ b/src/tower/tower_api_client/models/exported_secret.py @@ -1,13 +1,14 @@ import datetime -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse T = TypeVar("T", bound="ExportedSecret") -@attr.s(auto_attribs=True) +@_attrs_define class ExportedSecret: """ Attributes: @@ -22,14 +23,16 @@ class ExportedSecret: environment: str name: str - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: created_at = self.created_at.isoformat() encrypted_value = self.encrypted_value + environment = self.environment + name = self.name - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "created_at": created_at, @@ -42,8 +45,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) created_at = isoparse(d.pop("created_at")) encrypted_value = d.pop("encrypted_value") diff --git a/src/tower/tower_api_client/models/generate_app_statistics_response.py b/src/tower/tower_api_client/models/generate_app_statistics_response.py index a7b3d792..4d99a62d 100644 --- a/src/tower/tower_api_client/models/generate_app_statistics_response.py +++ b/src/tower/tower_api_client/models/generate_app_statistics_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="GenerateAppStatisticsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class GenerateAppStatisticsResponse: """ Attributes: statistics (AppStatistics): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/GenerateAppStatisticsResponse.json. + https://api.tower.dev/v1/schemas/GenerateAppStatisticsResponse.json. """ statistics: "AppStatistics" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: statistics = self.statistics.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "statistics": statistics, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app_statistics import AppStatistics - d = src_dict.copy() + d = dict(src_dict) statistics = AppStatistics.from_dict(d.pop("statistics")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/generate_run_statistics_response.py b/src/tower/tower_api_client/models/generate_run_statistics_response.py index 23bd1497..a6a06950 100644 --- a/src/tower/tower_api_client/models/generate_run_statistics_response.py +++ b/src/tower/tower_api_client/models/generate_run_statistics_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -13,27 +14,26 @@ T = TypeVar("T", bound="GenerateRunStatisticsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class GenerateRunStatisticsResponse: """ Attributes: - series (List['SeriesPoint']): + series (list['SeriesPoint']): settings (StatisticsSettings): stats (RunStatistics): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/GenerateRunStatisticsResponse.json. + https://api.tower.dev/v1/schemas/GenerateRunStatisticsResponse.json. """ - series: List["SeriesPoint"] + series: list["SeriesPoint"] settings: "StatisticsSettings" stats: "RunStatistics" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: series = [] for series_item_data in self.series: series_item = series_item_data.to_dict() - series.append(series_item) settings = self.settings.to_dict() @@ -42,7 +42,7 @@ def to_dict(self) -> Dict[str, Any]: schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "series": series, @@ -56,12 +56,12 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.run_statistics import RunStatistics from ..models.series_point import SeriesPoint from ..models.statistics_settings import StatisticsSettings - d = src_dict.copy() + d = dict(src_dict) series = [] _series = d.pop("series") for series_item_data in _series: diff --git a/src/tower/tower_api_client/models/invite_team_member_params.py b/src/tower/tower_api_client/models/invite_team_member_params.py index d4ae3230..9bc20561 100644 --- a/src/tower/tower_api_client/models/invite_team_member_params.py +++ b/src/tower/tower_api_client/models/invite_team_member_params.py @@ -1,20 +1,21 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="InviteTeamMemberParams") -@attr.s(auto_attribs=True) +@_attrs_define class InviteTeamMemberParams: """ Attributes: emails (str): The email addresses of the people to invite. It can be a list in any format (comma separated, newline separated, etc.) and it will be parsed into individual addresses schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/InviteTeamMemberParams.json. + https://api.tower.dev/v1/schemas/InviteTeamMemberParams.json. message (Union[Unset, str]): Optional message to include in the invite email """ @@ -22,12 +23,14 @@ class InviteTeamMemberParams: schema: Union[Unset, str] = UNSET message: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: emails = self.emails + schema = self.schema + message = self.message - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "emails": emails, @@ -41,8 +44,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) emails = d.pop("emails") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/invite_team_member_response.py b/src/tower/tower_api_client/models/invite_team_member_response.py index 4e442efd..e166b164 100644 --- a/src/tower/tower_api_client/models/invite_team_member_response.py +++ b/src/tower/tower_api_client/models/invite_team_member_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,28 +12,27 @@ T = TypeVar("T", bound="InviteTeamMemberResponse") -@attr.s(auto_attribs=True) +@_attrs_define class InviteTeamMemberResponse: """ Attributes: - team_invitations (List['TeamInvitation']): The team invitation that you created + team_invitations (list['TeamInvitation']): The team invitation that you created schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/InviteTeamMemberResponse.json. + https://api.tower.dev/v1/schemas/InviteTeamMemberResponse.json. """ - team_invitations: List["TeamInvitation"] + team_invitations: list["TeamInvitation"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team_invitations = [] for team_invitations_item_data in self.team_invitations: team_invitations_item = team_invitations_item_data.to_dict() - team_invitations.append(team_invitations_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team_invitations": team_invitations, @@ -44,10 +44,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team_invitation import TeamInvitation - d = src_dict.copy() + d = dict(src_dict) team_invitations = [] _team_invitations = d.pop("team_invitations") for team_invitations_item_data in _team_invitations: diff --git a/src/tower/tower_api_client/models/leave_team_response.py b/src/tower/tower_api_client/models/leave_team_response.py index 96bab859..3c6dc07e 100644 --- a/src/tower/tower_api_client/models/leave_team_response.py +++ b/src/tower/tower_api_client/models/leave_team_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="LeaveTeamResponse") -@attr.s(auto_attribs=True) +@_attrs_define class LeaveTeamResponse: """ Attributes: team (Team): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/LeaveTeamResponse.json. + https://api.tower.dev/v1/schemas/LeaveTeamResponse.json. """ team: "Team" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team = self.team.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team": team, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team import Team - d = src_dict.copy() + d = dict(src_dict) team = Team.from_dict(d.pop("team")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/list_api_keys_response.py b/src/tower/tower_api_client/models/list_api_keys_response.py index 4e7561d1..7d532900 100644 --- a/src/tower/tower_api_client/models/list_api_keys_response.py +++ b/src/tower/tower_api_client/models/list_api_keys_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,28 +12,27 @@ T = TypeVar("T", bound="ListAPIKeysResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListAPIKeysResponse: """ Attributes: - api_keys (List['APIKey']): List of API keys + api_keys (list['APIKey']): List of API keys schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListAPIKeysResponse.json. + https://api.tower.dev/v1/schemas/ListAPIKeysResponse.json. """ - api_keys: List["APIKey"] + api_keys: list["APIKey"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: api_keys = [] for api_keys_item_data in self.api_keys: api_keys_item = api_keys_item_data.to_dict() - api_keys.append(api_keys_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "api_keys": api_keys, @@ -44,10 +44,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.api_key import APIKey - d = src_dict.copy() + d = dict(src_dict) api_keys = [] _api_keys = d.pop("api_keys") for api_keys_item_data in _api_keys: diff --git a/src/tower/tower_api_client/models/list_app_environments_response.py b/src/tower/tower_api_client/models/list_app_environments_response.py index a516ed77..e82672be 100644 --- a/src/tower/tower_api_client/models/list_app_environments_response.py +++ b/src/tower/tower_api_client/models/list_app_environments_response.py @@ -1,30 +1,31 @@ -from typing import Any, Dict, List, Type, TypeVar, Union, cast +from collections.abc import Mapping +from typing import Any, TypeVar, Union, cast -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="ListAppEnvironmentsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListAppEnvironmentsResponse: """ Attributes: - environments (List[str]): + environments (list[str]): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListAppEnvironmentsResponse.json. + https://api.tower.dev/v1/schemas/ListAppEnvironmentsResponse.json. """ - environments: List[str] + environments: list[str] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: environments = self.environments schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "environments": environments, @@ -36,9 +37,9 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() - environments = cast(List[str], d.pop("environments")) + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + environments = cast(list[str], d.pop("environments")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/list_app_versions_response.py b/src/tower/tower_api_client/models/list_app_versions_response.py index 35f65eef..db846de8 100644 --- a/src/tower/tower_api_client/models/list_app_versions_response.py +++ b/src/tower/tower_api_client/models/list_app_versions_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,28 +12,27 @@ T = TypeVar("T", bound="ListAppVersionsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListAppVersionsResponse: """ Attributes: - versions (List['AppVersion']): + versions (list['AppVersion']): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListAppVersionsResponse.json. + https://api.tower.dev/v1/schemas/ListAppVersionsResponse.json. """ - versions: List["AppVersion"] + versions: list["AppVersion"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: versions = [] for versions_item_data in self.versions: versions_item = versions_item_data.to_dict() - versions.append(versions_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "versions": versions, @@ -44,10 +44,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app_version import AppVersion - d = src_dict.copy() + d = dict(src_dict) versions = [] _versions = d.pop("versions") for versions_item_data in _versions: diff --git a/src/tower/tower_api_client/models/list_apps_response.py b/src/tower/tower_api_client/models/list_apps_response.py index f23d8b07..cb4b1854 100644 --- a/src/tower/tower_api_client/models/list_apps_response.py +++ b/src/tower/tower_api_client/models/list_apps_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -12,32 +13,31 @@ T = TypeVar("T", bound="ListAppsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListAppsResponse: """ Attributes: - apps (List['AppSummary']): + apps (list['AppSummary']): pages (Pagination): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListAppsResponse.json. + https://api.tower.dev/v1/schemas/ListAppsResponse.json. """ - apps: List["AppSummary"] + apps: list["AppSummary"] pages: "Pagination" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: apps = [] for apps_item_data in self.apps: apps_item = apps_item_data.to_dict() - apps.append(apps_item) pages = self.pages.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "apps": apps, @@ -50,11 +50,11 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app_summary import AppSummary from ..models.pagination import Pagination - d = src_dict.copy() + d = dict(src_dict) apps = [] _apps = d.pop("apps") for apps_item_data in _apps: diff --git a/src/tower/tower_api_client/models/list_apps_status_item.py b/src/tower/tower_api_client/models/list_apps_status_item.py index a28cb24b..e528c1b2 100644 --- a/src/tower/tower_api_client/models/list_apps_status_item.py +++ b/src/tower/tower_api_client/models/list_apps_status_item.py @@ -3,8 +3,8 @@ class ListAppsStatusItem(str, Enum): ACTIVE = "active" - FAILED = "failed" DISABLED = "disabled" + FAILED = "failed" RUNNING = "running" def __str__(self) -> str: diff --git a/src/tower/tower_api_client/models/list_catalogs_response.py b/src/tower/tower_api_client/models/list_catalogs_response.py new file mode 100644 index 00000000..3f235ae9 --- /dev/null +++ b/src/tower/tower_api_client/models/list_catalogs_response.py @@ -0,0 +1,75 @@ +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.catalog import Catalog + from ..models.pagination import Pagination + + +T = TypeVar("T", bound="ListCatalogsResponse") + + +@_attrs_define +class ListCatalogsResponse: + """ + Attributes: + catalogs (list['Catalog']): + pages (Pagination): + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/ListCatalogsResponse.json. + """ + + catalogs: list["Catalog"] + pages: "Pagination" + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + catalogs = [] + for catalogs_item_data in self.catalogs: + catalogs_item = catalogs_item_data.to_dict() + catalogs.append(catalogs_item) + + pages = self.pages.to_dict() + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "catalogs": catalogs, + "pages": pages, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.catalog import Catalog + from ..models.pagination import Pagination + + d = dict(src_dict) + catalogs = [] + _catalogs = d.pop("catalogs") + for catalogs_item_data in _catalogs: + catalogs_item = Catalog.from_dict(catalogs_item_data) + + catalogs.append(catalogs_item) + + pages = Pagination.from_dict(d.pop("pages")) + + schema = d.pop("$schema", UNSET) + + list_catalogs_response = cls( + catalogs=catalogs, + pages=pages, + schema=schema, + ) + + return list_catalogs_response diff --git a/src/tower/tower_api_client/models/list_my_team_invitations_response.py b/src/tower/tower_api_client/models/list_my_team_invitations_response.py index 555c1538..f2f44563 100644 --- a/src/tower/tower_api_client/models/list_my_team_invitations_response.py +++ b/src/tower/tower_api_client/models/list_my_team_invitations_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,28 +12,27 @@ T = TypeVar("T", bound="ListMyTeamInvitationsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListMyTeamInvitationsResponse: """ Attributes: - team_invitations (List['TeamInvitation']): All of team invitations + team_invitations (list['TeamInvitation']): All of team invitations schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListMyTeamInvitationsResponse.json. + https://api.tower.dev/v1/schemas/ListMyTeamInvitationsResponse.json. """ - team_invitations: List["TeamInvitation"] + team_invitations: list["TeamInvitation"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team_invitations = [] for team_invitations_item_data in self.team_invitations: team_invitations_item = team_invitations_item_data.to_dict() - team_invitations.append(team_invitations_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team_invitations": team_invitations, @@ -44,10 +44,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team_invitation import TeamInvitation - d = src_dict.copy() + d = dict(src_dict) team_invitations = [] _team_invitations = d.pop("team_invitations") for team_invitations_item_data in _team_invitations: diff --git a/src/tower/tower_api_client/models/list_runs_response.py b/src/tower/tower_api_client/models/list_runs_response.py index 50ad0551..b2ab237f 100644 --- a/src/tower/tower_api_client/models/list_runs_response.py +++ b/src/tower/tower_api_client/models/list_runs_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -12,32 +13,31 @@ T = TypeVar("T", bound="ListRunsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListRunsResponse: """ Attributes: pages (Pagination): - runs (List['Run']): + runs (list['Run']): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListRunsResponse.json. + https://api.tower.dev/v1/schemas/ListRunsResponse.json. """ pages: "Pagination" - runs: List["Run"] + runs: list["Run"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: pages = self.pages.to_dict() runs = [] for runs_item_data in self.runs: runs_item = runs_item_data.to_dict() - runs.append(runs_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "pages": pages, @@ -50,11 +50,11 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.pagination import Pagination from ..models.run import Run - d = src_dict.copy() + d = dict(src_dict) pages = Pagination.from_dict(d.pop("pages")) runs = [] diff --git a/src/tower/tower_api_client/models/list_runs_status_item.py b/src/tower/tower_api_client/models/list_runs_status_item.py new file mode 100644 index 00000000..4b0802b2 --- /dev/null +++ b/src/tower/tower_api_client/models/list_runs_status_item.py @@ -0,0 +1,14 @@ +from enum import Enum + + +class ListRunsStatusItem(str, Enum): + CANCELLED = "cancelled" + CRASHED = "crashed" + ERRORED = "errored" + EXITED = "exited" + PENDING = "pending" + RUNNING = "running" + SCHEDULED = "scheduled" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/list_secret_environments_response.py b/src/tower/tower_api_client/models/list_secret_environments_response.py index cfe7c8ff..a287f476 100644 --- a/src/tower/tower_api_client/models/list_secret_environments_response.py +++ b/src/tower/tower_api_client/models/list_secret_environments_response.py @@ -1,30 +1,31 @@ -from typing import Any, Dict, List, Type, TypeVar, Union, cast +from collections.abc import Mapping +from typing import Any, TypeVar, Union, cast -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="ListSecretEnvironmentsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListSecretEnvironmentsResponse: """ Attributes: - environments (List[str]): + environments (list[str]): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListSecretEnvironmentsResponse.json. + https://api.tower.dev/v1/schemas/ListSecretEnvironmentsResponse.json. """ - environments: List[str] + environments: list[str] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: environments = self.environments schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "environments": environments, @@ -36,9 +37,9 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() - environments = cast(List[str], d.pop("environments")) + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + environments = cast(list[str], d.pop("environments")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/list_secrets_response.py b/src/tower/tower_api_client/models/list_secrets_response.py index 4667a127..230dafa2 100644 --- a/src/tower/tower_api_client/models/list_secrets_response.py +++ b/src/tower/tower_api_client/models/list_secrets_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -12,32 +13,31 @@ T = TypeVar("T", bound="ListSecretsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListSecretsResponse: """ Attributes: pages (Pagination): - secrets (List['Secret']): + secrets (list['Secret']): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListSecretsResponse.json. + https://api.tower.dev/v1/schemas/ListSecretsResponse.json. """ pages: "Pagination" - secrets: List["Secret"] + secrets: list["Secret"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: pages = self.pages.to_dict() secrets = [] for secrets_item_data in self.secrets: secrets_item = secrets_item_data.to_dict() - secrets.append(secrets_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "pages": pages, @@ -50,11 +50,11 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.pagination import Pagination from ..models.secret import Secret - d = src_dict.copy() + d = dict(src_dict) pages = Pagination.from_dict(d.pop("pages")) secrets = [] diff --git a/src/tower/tower_api_client/models/list_team_invitations_response.py b/src/tower/tower_api_client/models/list_team_invitations_response.py index d84f43d4..f23d4cbc 100644 --- a/src/tower/tower_api_client/models/list_team_invitations_response.py +++ b/src/tower/tower_api_client/models/list_team_invitations_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,28 +12,27 @@ T = TypeVar("T", bound="ListTeamInvitationsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListTeamInvitationsResponse: """ Attributes: - team_invitations (List['TeamInvitation']): All of team invitations + team_invitations (list['TeamInvitation']): All of team invitations schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListTeamInvitationsResponse.json. + https://api.tower.dev/v1/schemas/ListTeamInvitationsResponse.json. """ - team_invitations: List["TeamInvitation"] + team_invitations: list["TeamInvitation"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team_invitations = [] for team_invitations_item_data in self.team_invitations: team_invitations_item = team_invitations_item_data.to_dict() - team_invitations.append(team_invitations_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team_invitations": team_invitations, @@ -44,10 +44,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team_invitation import TeamInvitation - d = src_dict.copy() + d = dict(src_dict) team_invitations = [] _team_invitations = d.pop("team_invitations") for team_invitations_item_data in _team_invitations: diff --git a/src/tower/tower_api_client/models/list_team_members_response.py b/src/tower/tower_api_client/models/list_team_members_response.py index 6417f13c..3f751382 100644 --- a/src/tower/tower_api_client/models/list_team_members_response.py +++ b/src/tower/tower_api_client/models/list_team_members_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,28 +12,27 @@ T = TypeVar("T", bound="ListTeamMembersResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListTeamMembersResponse: """ Attributes: - team_members (List['User']): All of the members of a team + team_members (list['User']): All of the members of a team schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListTeamMembersResponse.json. + https://api.tower.dev/v1/schemas/ListTeamMembersResponse.json. """ - team_members: List["User"] + team_members: list["User"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team_members = [] for team_members_item_data in self.team_members: team_members_item = team_members_item_data.to_dict() - team_members.append(team_members_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team_members": team_members, @@ -44,10 +44,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.user import User - d = src_dict.copy() + d = dict(src_dict) team_members = [] _team_members = d.pop("team_members") for team_members_item_data in _team_members: diff --git a/src/tower/tower_api_client/models/list_teams_response.py b/src/tower/tower_api_client/models/list_teams_response.py index 8b64c2a6..7adea820 100644 --- a/src/tower/tower_api_client/models/list_teams_response.py +++ b/src/tower/tower_api_client/models/list_teams_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,28 +12,27 @@ T = TypeVar("T", bound="ListTeamsResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ListTeamsResponse: """ Attributes: - teams (List['Team']): List of teams + teams (list['Team']): List of teams schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ListTeamsResponse.json. + https://api.tower.dev/v1/schemas/ListTeamsResponse.json. """ - teams: List["Team"] + teams: list["Team"] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: teams = [] for teams_item_data in self.teams: teams_item = teams_item_data.to_dict() - teams.append(teams_item) schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "teams": teams, @@ -44,10 +44,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team import Team - d = src_dict.copy() + d = dict(src_dict) teams = [] _teams = d.pop("teams") for teams_item_data in _teams: diff --git a/src/tower/tower_api_client/models/log_line.py b/src/tower/tower_api_client/models/log_line.py index 7f39359c..a59e58f1 100644 --- a/src/tower/tower_api_client/models/log_line.py +++ b/src/tower/tower_api_client/models/log_line.py @@ -1,37 +1,47 @@ import datetime -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse +from ..models.log_line_channel import LogLineChannel + T = TypeVar("T", bound="LogLine") -@attr.s(auto_attribs=True) +@_attrs_define class LogLine: """ Attributes: + channel (LogLineChannel): The channel (either Program or Setup) this log line belongs to. content (str): Contents of the log message. line_num (int): Line number. reported_at (datetime.datetime): Timestamp of the log line. run_id (str): The uuid of the Run. """ + channel: LogLineChannel content: str line_num: int reported_at: datetime.datetime run_id: str - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: + channel = self.channel.value + content = self.content + line_num = self.line_num + reported_at = self.reported_at.isoformat() run_id = self.run_id - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { + "channel": channel, "content": content, "line_num": line_num, "reported_at": reported_at, @@ -42,8 +52,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + channel = LogLineChannel(d.pop("channel")) + content = d.pop("content") line_num = d.pop("line_num") @@ -53,6 +65,7 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: run_id = d.pop("run_id") log_line = cls( + channel=channel, content=content, line_num=line_num, reported_at=reported_at, diff --git a/src/tower/tower_api_client/models/log_line_channel.py b/src/tower/tower_api_client/models/log_line_channel.py new file mode 100644 index 00000000..d69b8f83 --- /dev/null +++ b/src/tower/tower_api_client/models/log_line_channel.py @@ -0,0 +1,9 @@ +from enum import Enum + + +class LogLineChannel(str, Enum): + PROGRAM = "program" + SETUP = "setup" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/log_line_error.py b/src/tower/tower_api_client/models/log_line_error.py index 389805ae..261b5f71 100644 --- a/src/tower/tower_api_client/models/log_line_error.py +++ b/src/tower/tower_api_client/models/log_line_error.py @@ -1,13 +1,14 @@ import datetime -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse T = TypeVar("T", bound="LogLineError") -@attr.s(auto_attribs=True) +@_attrs_define class LogLineError: """ Attributes: @@ -18,11 +19,12 @@ class LogLineError: content: str reported_at: datetime.datetime - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: content = self.content + reported_at = self.reported_at.isoformat() - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "content": content, @@ -33,8 +35,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) content = d.pop("content") reported_at = isoparse(d.pop("reported_at")) diff --git a/src/tower/tower_api_client/models/pagination.py b/src/tower/tower_api_client/models/pagination.py index 6cb0d85f..257a6b63 100644 --- a/src/tower/tower_api_client/models/pagination.py +++ b/src/tower/tower_api_client/models/pagination.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="Pagination") -@attr.s(auto_attribs=True) +@_attrs_define class Pagination: """ Attributes: @@ -20,13 +21,16 @@ class Pagination: page_size: int total: int - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: num_pages = self.num_pages + page = self.page + page_size = self.page_size + total = self.total - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "num_pages": num_pages, @@ -39,8 +43,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) num_pages = d.pop("num_pages") page = d.pop("page") diff --git a/src/tower/tower_api_client/models/parameter.py b/src/tower/tower_api_client/models/parameter.py index e2b888ad..919f5daf 100644 --- a/src/tower/tower_api_client/models/parameter.py +++ b/src/tower/tower_api_client/models/parameter.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="Parameter") -@attr.s(auto_attribs=True) +@_attrs_define class Parameter: """ Attributes: @@ -18,12 +19,14 @@ class Parameter: description: str name: str - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: default = self.default + description = self.description + name = self.name - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "default": default, @@ -35,8 +38,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) default = d.pop("default") description = d.pop("description") diff --git a/src/tower/tower_api_client/models/refresh_session_params.py b/src/tower/tower_api_client/models/refresh_session_params.py new file mode 100644 index 00000000..d7a98391 --- /dev/null +++ b/src/tower/tower_api_client/models/refresh_session_params.py @@ -0,0 +1,40 @@ +from collections.abc import Mapping +from typing import Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="RefreshSessionParams") + + +@_attrs_define +class RefreshSessionParams: + """ + Attributes: + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/RefreshSessionParams.json. + """ + + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update({}) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + schema = d.pop("$schema", UNSET) + + refresh_session_params = cls( + schema=schema, + ) + + return refresh_session_params diff --git a/src/tower/tower_api_client/models/refresh_session_response.py b/src/tower/tower_api_client/models/refresh_session_response.py index 367689b9..c02f83e6 100644 --- a/src/tower/tower_api_client/models/refresh_session_response.py +++ b/src/tower/tower_api_client/models/refresh_session_response.py @@ -1,7 +1,8 @@ import datetime -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse from ..types import UNSET, Unset @@ -13,28 +14,28 @@ T = TypeVar("T", bound="RefreshSessionResponse") -@attr.s(auto_attribs=True) +@_attrs_define class RefreshSessionResponse: """ Attributes: refreshed_at (datetime.datetime): A timestamp that indicates the last time the session data was refreshed. session (Session): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/RefreshSessionResponse.json. + https://api.tower.dev/v1/schemas/RefreshSessionResponse.json. """ refreshed_at: datetime.datetime session: "Session" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: refreshed_at = self.refreshed_at.isoformat() session = self.session.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "refreshed_at": refreshed_at, @@ -47,10 +48,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.session import Session - d = src_dict.copy() + d = dict(src_dict) refreshed_at = isoparse(d.pop("refreshed_at")) session = Session.from_dict(d.pop("session")) diff --git a/src/tower/tower_api_client/models/remove_team_member_params.py b/src/tower/tower_api_client/models/remove_team_member_params.py index 673c898a..1084b7b7 100644 --- a/src/tower/tower_api_client/models/remove_team_member_params.py +++ b/src/tower/tower_api_client/models/remove_team_member_params.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="RemoveTeamMemberParams") -@attr.s(auto_attribs=True) +@_attrs_define class RemoveTeamMemberParams: """ Attributes: email (str): The email address of the team member to remove schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/RemoveTeamMemberParams.json. + https://api.tower.dev/v1/schemas/RemoveTeamMemberParams.json. """ email: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: email = self.email + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "email": email, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) email = d.pop("email") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/remove_team_member_response.py b/src/tower/tower_api_client/models/remove_team_member_response.py index 4e56711e..573b866c 100644 --- a/src/tower/tower_api_client/models/remove_team_member_response.py +++ b/src/tower/tower_api_client/models/remove_team_member_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="RemoveTeamMemberResponse") -@attr.s(auto_attribs=True) +@_attrs_define class RemoveTeamMemberResponse: """ Attributes: team_member (User): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/RemoveTeamMemberResponse.json. + https://api.tower.dev/v1/schemas/RemoveTeamMemberResponse.json. """ team_member: "User" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team_member = self.team_member.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team_member": team_member, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.user import User - d = src_dict.copy() + d = dict(src_dict) team_member = User.from_dict(d.pop("team_member")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/resend_team_invitation_params.py b/src/tower/tower_api_client/models/resend_team_invitation_params.py index 229aa214..dde057fa 100644 --- a/src/tower/tower_api_client/models/resend_team_invitation_params.py +++ b/src/tower/tower_api_client/models/resend_team_invitation_params.py @@ -1,19 +1,20 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="ResendTeamInvitationParams") -@attr.s(auto_attribs=True) +@_attrs_define class ResendTeamInvitationParams: """ Attributes: email (str): The email address of team invitation to resend schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ResendTeamInvitationParams.json. + https://api.tower.dev/v1/schemas/ResendTeamInvitationParams.json. message (Union[Unset, str]): Optional message to include in the invite email """ @@ -21,12 +22,14 @@ class ResendTeamInvitationParams: schema: Union[Unset, str] = UNSET message: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: email = self.email + schema = self.schema + message = self.message - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "email": email, @@ -40,8 +43,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) email = d.pop("email") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/resend_team_invitation_response.py b/src/tower/tower_api_client/models/resend_team_invitation_response.py index 64e56ea0..ecdd47c0 100644 --- a/src/tower/tower_api_client/models/resend_team_invitation_response.py +++ b/src/tower/tower_api_client/models/resend_team_invitation_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="ResendTeamInvitationResponse") -@attr.s(auto_attribs=True) +@_attrs_define class ResendTeamInvitationResponse: """ Attributes: team_invitation (TeamInvitation): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/ResendTeamInvitationResponse.json. + https://api.tower.dev/v1/schemas/ResendTeamInvitationResponse.json. """ team_invitation: "TeamInvitation" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team_invitation = self.team_invitation.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team_invitation": team_invitation, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team_invitation import TeamInvitation - d = src_dict.copy() + d = dict(src_dict) team_invitation = TeamInvitation.from_dict(d.pop("team_invitation")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/run.py b/src/tower/tower_api_client/models/run.py index a76d4fc4..d8457b6c 100644 --- a/src/tower/tower_api_client/models/run.py +++ b/src/tower/tower_api_client/models/run.py @@ -1,84 +1,143 @@ import datetime -from typing import Any, Dict, Optional, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar, Union, cast -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse +from ..models.run_status import RunStatus +from ..models.run_status_group import RunStatusGroup + T = TypeVar("T", bound="Run") -@attr.s(auto_attribs=True) +@_attrs_define class Run: """ Attributes: - app_name (str): + app_slug (str): + app_version (str): + cancelled_at (Union[None, datetime.datetime]): created_at (datetime.datetime): + ended_at (Union[None, datetime.datetime]): environment (str): number (int): run_id (str): scheduled_at (datetime.datetime): - status (str): - status_group (str): - cancelled_at (Optional[datetime.datetime]): - ended_at (Optional[datetime.datetime]): - started_at (Optional[datetime.datetime]): + started_at (Union[None, datetime.datetime]): + status (RunStatus): + status_group (RunStatusGroup): """ - app_name: str + app_slug: str + app_version: str + cancelled_at: Union[None, datetime.datetime] created_at: datetime.datetime + ended_at: Union[None, datetime.datetime] environment: str number: int run_id: str scheduled_at: datetime.datetime - status: str - status_group: str - cancelled_at: Optional[datetime.datetime] - ended_at: Optional[datetime.datetime] - started_at: Optional[datetime.datetime] - - def to_dict(self) -> Dict[str, Any]: - app_name = self.app_name + started_at: Union[None, datetime.datetime] + status: RunStatus + status_group: RunStatusGroup + + def to_dict(self) -> dict[str, Any]: + app_slug = self.app_slug + + app_version = self.app_version + + cancelled_at: Union[None, str] + if isinstance(self.cancelled_at, datetime.datetime): + cancelled_at = self.cancelled_at.isoformat() + else: + cancelled_at = self.cancelled_at + created_at = self.created_at.isoformat() + ended_at: Union[None, str] + if isinstance(self.ended_at, datetime.datetime): + ended_at = self.ended_at.isoformat() + else: + ended_at = self.ended_at + environment = self.environment + number = self.number + run_id = self.run_id + scheduled_at = self.scheduled_at.isoformat() - status = self.status - status_group = self.status_group - cancelled_at = self.cancelled_at.isoformat() if self.cancelled_at else None + started_at: Union[None, str] + if isinstance(self.started_at, datetime.datetime): + started_at = self.started_at.isoformat() + else: + started_at = self.started_at - ended_at = self.ended_at.isoformat() if self.ended_at else None + status = self.status.value - started_at = self.started_at.isoformat() if self.started_at else None + status_group = self.status_group.value - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { - "app_name": app_name, + "app_slug": app_slug, + "app_version": app_version, + "cancelled_at": cancelled_at, "created_at": created_at, + "ended_at": ended_at, "environment": environment, "number": number, "run_id": run_id, "scheduled_at": scheduled_at, + "started_at": started_at, "status": status, "status_group": status_group, - "cancelled_at": cancelled_at, - "ended_at": ended_at, - "started_at": started_at, } ) return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() - app_name = d.pop("app_name") + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + app_slug = d.pop("app_slug") + + app_version = d.pop("app_version") + + def _parse_cancelled_at(data: object) -> Union[None, datetime.datetime]: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + cancelled_at_type_0 = isoparse(data) + + return cancelled_at_type_0 + except: # noqa: E722 + pass + return cast(Union[None, datetime.datetime], data) + + cancelled_at = _parse_cancelled_at(d.pop("cancelled_at")) created_at = isoparse(d.pop("created_at")) + def _parse_ended_at(data: object) -> Union[None, datetime.datetime]: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + ended_at_type_0 = isoparse(data) + + return ended_at_type_0 + except: # noqa: E722 + pass + return cast(Union[None, datetime.datetime], data) + + ended_at = _parse_ended_at(d.pop("ended_at")) + environment = d.pop("environment") number = d.pop("number") @@ -87,43 +146,38 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: scheduled_at = isoparse(d.pop("scheduled_at")) - status = d.pop("status") + def _parse_started_at(data: object) -> Union[None, datetime.datetime]: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + started_at_type_0 = isoparse(data) - status_group = d.pop("status_group") + return started_at_type_0 + except: # noqa: E722 + pass + return cast(Union[None, datetime.datetime], data) - _cancelled_at = d.pop("cancelled_at") - cancelled_at: Optional[datetime.datetime] - if _cancelled_at is None: - cancelled_at = None - else: - cancelled_at = isoparse(_cancelled_at) + started_at = _parse_started_at(d.pop("started_at")) - _ended_at = d.pop("ended_at") - ended_at: Optional[datetime.datetime] - if _ended_at is None: - ended_at = None - else: - ended_at = isoparse(_ended_at) + status = RunStatus(d.pop("status")) - _started_at = d.pop("started_at") - started_at: Optional[datetime.datetime] - if _started_at is None: - started_at = None - else: - started_at = isoparse(_started_at) + status_group = RunStatusGroup(d.pop("status_group")) run = cls( - app_name=app_name, + app_slug=app_slug, + app_version=app_version, + cancelled_at=cancelled_at, created_at=created_at, + ended_at=ended_at, environment=environment, number=number, run_id=run_id, scheduled_at=scheduled_at, + started_at=started_at, status=status, status_group=status_group, - cancelled_at=cancelled_at, - ended_at=ended_at, - started_at=started_at, ) return run diff --git a/src/tower/tower_api_client/models/run_app_params.py b/src/tower/tower_api_client/models/run_app_params.py index 591767a9..e73c1339 100644 --- a/src/tower/tower_api_client/models/run_app_params.py +++ b/src/tower/tower_api_client/models/run_app_params.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union, cast -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,31 +12,37 @@ T = TypeVar("T", bound="RunAppParams") -@attr.s(auto_attribs=True) +@_attrs_define class RunAppParams: """ Attributes: environment (str): The environment to run this app in. parameters (RunAppParamsParameters): The parameters to pass into this app. schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/RunAppParams.json. - parent_run_id (Union[Unset, None, str]): The ID of the run that invoked this run, if relevant. Should be null, + https://api.tower.dev/v1/schemas/RunAppParams.json. + parent_run_id (Union[None, Unset, str]): The ID of the run that invoked this run, if relevant. Should be null, if none. """ environment: str parameters: "RunAppParamsParameters" schema: Union[Unset, str] = UNSET - parent_run_id: Union[Unset, None, str] = UNSET + parent_run_id: Union[None, Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: environment = self.environment + parameters = self.parameters.to_dict() schema = self.schema - parent_run_id = self.parent_run_id - field_dict: Dict[str, Any] = {} + parent_run_id: Union[None, Unset, str] + if isinstance(self.parent_run_id, Unset): + parent_run_id = UNSET + else: + parent_run_id = self.parent_run_id + + field_dict: dict[str, Any] = {} field_dict.update( { "environment": environment, @@ -50,17 +57,24 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.run_app_params_parameters import RunAppParamsParameters - d = src_dict.copy() + d = dict(src_dict) environment = d.pop("environment") parameters = RunAppParamsParameters.from_dict(d.pop("parameters")) schema = d.pop("$schema", UNSET) - parent_run_id = d.pop("parent_run_id", UNSET) + def _parse_parent_run_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) + + parent_run_id = _parse_parent_run_id(d.pop("parent_run_id", UNSET)) run_app_params = cls( environment=environment, diff --git a/src/tower/tower_api_client/models/run_app_params_parameters.py b/src/tower/tower_api_client/models/run_app_params_parameters.py index ad9ae002..c6522b9a 100644 --- a/src/tower/tower_api_client/models/run_app_params_parameters.py +++ b/src/tower/tower_api_client/models/run_app_params_parameters.py @@ -1,33 +1,34 @@ -from typing import Any, Dict, List, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define +from attrs import field as _attrs_field T = TypeVar("T", bound="RunAppParamsParameters") -@attr.s(auto_attribs=True) +@_attrs_define class RunAppParamsParameters: """The parameters to pass into this app.""" - additional_properties: Dict[str, str] = attr.ib(init=False, factory=dict) + additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) - def to_dict(self) -> Dict[str, Any]: - field_dict: Dict[str, Any] = {} + def to_dict(self) -> dict[str, Any]: + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update({}) return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) run_app_params_parameters = cls() run_app_params_parameters.additional_properties = d return run_app_params_parameters @property - def additional_keys(self) -> List[str]: + def additional_keys(self) -> list[str]: return list(self.additional_properties.keys()) def __getitem__(self, key: str) -> str: diff --git a/src/tower/tower_api_client/models/run_app_response.py b/src/tower/tower_api_client/models/run_app_response.py index 13728329..491a3a0b 100644 --- a/src/tower/tower_api_client/models/run_app_response.py +++ b/src/tower/tower_api_client/models/run_app_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="RunAppResponse") -@attr.s(auto_attribs=True) +@_attrs_define class RunAppResponse: """ Attributes: run (Run): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/RunAppResponse.json. + https://api.tower.dev/v1/schemas/RunAppResponse.json. """ run: "Run" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: run = self.run.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "run": run, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.run import Run - d = src_dict.copy() + d = dict(src_dict) run = Run.from_dict(d.pop("run")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/get_run_log_line.py b/src/tower/tower_api_client/models/run_log_line.py similarity index 51% rename from src/tower/tower_api_client/models/get_run_log_line.py rename to src/tower/tower_api_client/models/run_log_line.py index b4e60f73..36301968 100644 --- a/src/tower/tower_api_client/models/get_run_log_line.py +++ b/src/tower/tower_api_client/models/run_log_line.py @@ -1,30 +1,37 @@ import datetime -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse -T = TypeVar("T", bound="GetRunLogLine") +T = TypeVar("T", bound="RunLogLine") -@attr.s(auto_attribs=True) -class GetRunLogLine: +@_attrs_define +class RunLogLine: """ Attributes: + channel (str): message (str): timestamp (datetime.datetime): """ + channel: str message: str timestamp: datetime.datetime - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: + channel = self.channel + message = self.message + timestamp = self.timestamp.isoformat() - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { + "channel": channel, "message": message, "timestamp": timestamp, } @@ -33,15 +40,18 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + channel = d.pop("channel") + message = d.pop("message") timestamp = isoparse(d.pop("timestamp")) - get_run_log_line = cls( + run_log_line = cls( + channel=channel, message=message, timestamp=timestamp, ) - return get_run_log_line + return run_log_line diff --git a/src/tower/tower_api_client/models/run_results.py b/src/tower/tower_api_client/models/run_results.py index fcaa4154..e45f9de1 100644 --- a/src/tower/tower_api_client/models/run_results.py +++ b/src/tower/tower_api_client/models/run_results.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="RunResults") -@attr.s(auto_attribs=True) +@_attrs_define class RunResults: """ Attributes: @@ -24,15 +25,20 @@ class RunResults: pending: int running: int - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: cancelled = self.cancelled + crashed = self.crashed + errored = self.errored + exited = self.exited + pending = self.pending + running = self.running - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "cancelled": cancelled, @@ -47,8 +53,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) cancelled = d.pop("cancelled") crashed = d.pop("crashed") diff --git a/src/tower/tower_api_client/models/run_statistics.py b/src/tower/tower_api_client/models/run_statistics.py index 8d7fd7b4..1ffbed7e 100644 --- a/src/tower/tower_api_client/models/run_statistics.py +++ b/src/tower/tower_api_client/models/run_statistics.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="RunStatistics") -@attr.s(auto_attribs=True) +@_attrs_define class RunStatistics: """ Attributes: @@ -18,12 +19,14 @@ class RunStatistics: successful_runs: int total_runs: int - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: failed_runs = self.failed_runs + successful_runs = self.successful_runs + total_runs = self.total_runs - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "failed_runs": failed_runs, @@ -35,8 +38,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) failed_runs = d.pop("failed_runs") successful_runs = d.pop("successful_runs") diff --git a/src/tower/tower_api_client/models/run_status.py b/src/tower/tower_api_client/models/run_status.py new file mode 100644 index 00000000..c640e7e7 --- /dev/null +++ b/src/tower/tower_api_client/models/run_status.py @@ -0,0 +1,14 @@ +from enum import Enum + + +class RunStatus(str, Enum): + CANCELLED = "cancelled" + CRASHED = "crashed" + ERRORED = "errored" + EXITED = "exited" + PENDING = "pending" + RUNNING = "running" + SCHEDULED = "scheduled" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/run_status_group.py b/src/tower/tower_api_client/models/run_status_group.py new file mode 100644 index 00000000..942edb5f --- /dev/null +++ b/src/tower/tower_api_client/models/run_status_group.py @@ -0,0 +1,10 @@ +from enum import Enum + + +class RunStatusGroup(str, Enum): + FAILED = "failed" + SUCCESSFUL = "successful" + VALUE_2 = "" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/tower/tower_api_client/models/secret.py b/src/tower/tower_api_client/models/secret.py index 206671fc..a5eacd50 100644 --- a/src/tower/tower_api_client/models/secret.py +++ b/src/tower/tower_api_client/models/secret.py @@ -1,13 +1,14 @@ import datetime -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse T = TypeVar("T", bound="Secret") -@attr.s(auto_attribs=True) +@_attrs_define class Secret: """ Attributes: @@ -22,14 +23,16 @@ class Secret: name: str preview: str - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: created_at = self.created_at.isoformat() environment = self.environment + name = self.name + preview = self.preview - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "created_at": created_at, @@ -42,8 +45,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) created_at = isoparse(d.pop("created_at")) environment = d.pop("environment") diff --git a/src/tower/tower_api_client/models/series_point.py b/src/tower/tower_api_client/models/series_point.py index e636f528..323a104e 100644 --- a/src/tower/tower_api_client/models/series_point.py +++ b/src/tower/tower_api_client/models/series_point.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="SeriesPoint") -@attr.s(auto_attribs=True) +@_attrs_define class SeriesPoint: """ Attributes: @@ -18,12 +19,14 @@ class SeriesPoint: key: str successful: int - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: failed = self.failed + key = self.key + successful = self.successful - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "failed": failed, @@ -35,8 +38,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) failed = d.pop("failed") key = d.pop("key") diff --git a/src/tower/tower_api_client/models/session.py b/src/tower/tower_api_client/models/session.py index e6e9cecb..8d600b21 100644 --- a/src/tower/tower_api_client/models/session.py +++ b/src/tower/tower_api_client/models/session.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, List, Type, TypeVar +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar -import attr +from attrs import define as _attrs_define if TYPE_CHECKING: from ..models.team import Team @@ -11,31 +12,30 @@ T = TypeVar("T", bound="Session") -@attr.s(auto_attribs=True) +@_attrs_define class Session: """ Attributes: - teams (List['Team']): + teams (list['Team']): token (Token): user (User): """ - teams: List["Team"] + teams: list["Team"] token: "Token" user: "User" - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: teams = [] for teams_item_data in self.teams: teams_item = teams_item_data.to_dict() - teams.append(teams_item) token = self.token.to_dict() user = self.user.to_dict() - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "teams": teams, @@ -47,12 +47,12 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team import Team from ..models.token import Token from ..models.user import User - d = src_dict.copy() + d = dict(src_dict) teams = [] _teams = d.pop("teams") for teams_item_data in _teams: diff --git a/src/tower/tower_api_client/models/statistics_settings.py b/src/tower/tower_api_client/models/statistics_settings.py index 636bd7f3..841d574f 100644 --- a/src/tower/tower_api_client/models/statistics_settings.py +++ b/src/tower/tower_api_client/models/statistics_settings.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="StatisticsSettings") -@attr.s(auto_attribs=True) +@_attrs_define class StatisticsSettings: """ Attributes: @@ -14,10 +15,10 @@ class StatisticsSettings: period: str - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: period = self.period - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "period": period, @@ -27,8 +28,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) period = d.pop("period") statistics_settings = cls( diff --git a/src/tower/tower_api_client/models/team.py b/src/tower/tower_api_client/models/team.py index 39c15c81..b852cdcb 100644 --- a/src/tower/tower_api_client/models/team.py +++ b/src/tower/tower_api_client/models/team.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,35 +12,38 @@ T = TypeVar("T", bound="Team") -@attr.s(auto_attribs=True) +@_attrs_define class Team: """ Attributes: name (str): slug (str): - type (str): The type of team, either 'personal' or 'team'. + type_ (str): The type of team, either 'personal' or 'team'. token (Union[Unset, Token]): """ name: str slug: str - type: str + type_: str token: Union[Unset, "Token"] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: name = self.name + slug = self.slug - type = self.type - token: Union[Unset, Dict[str, Any]] = UNSET + + type_ = self.type_ + + token: Union[Unset, dict[str, Any]] = UNSET if not isinstance(self.token, Unset): token = self.token.to_dict() - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "name": name, "slug": slug, - "type": type, + "type": type_, } ) if token is not UNSET: @@ -48,15 +52,15 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.token import Token - d = src_dict.copy() + d = dict(src_dict) name = d.pop("name") slug = d.pop("slug") - type = d.pop("type") + type_ = d.pop("type") _token = d.pop("token", UNSET) token: Union[Unset, Token] @@ -68,7 +72,7 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: team = cls( name=name, slug=slug, - type=type, + type_=type_, token=token, ) diff --git a/src/tower/tower_api_client/models/team_invitation.py b/src/tower/tower_api_client/models/team_invitation.py index ad0e9728..49a1c45f 100644 --- a/src/tower/tower_api_client/models/team_invitation.py +++ b/src/tower/tower_api_client/models/team_invitation.py @@ -1,7 +1,8 @@ import datetime -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse if TYPE_CHECKING: @@ -11,7 +12,7 @@ T = TypeVar("T", bound="TeamInvitation") -@attr.s(auto_attribs=True) +@_attrs_define class TeamInvitation: """ Attributes: @@ -24,13 +25,14 @@ class TeamInvitation: invitation_sent_at: datetime.datetime team: "Team" - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: email = self.email + invitation_sent_at = self.invitation_sent_at.isoformat() team = self.team.to_dict() - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "email": email, @@ -42,10 +44,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team import Team - d = src_dict.copy() + d = dict(src_dict) email = d.pop("email") invitation_sent_at = isoparse(d.pop("invitation_sent_at")) diff --git a/src/tower/tower_api_client/models/token.py b/src/tower/tower_api_client/models/token.py index 3a6dcc82..9ab4987f 100644 --- a/src/tower/tower_api_client/models/token.py +++ b/src/tower/tower_api_client/models/token.py @@ -1,11 +1,12 @@ -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define T = TypeVar("T", bound="Token") -@attr.s(auto_attribs=True) +@_attrs_define class Token: """ Attributes: @@ -14,10 +15,10 @@ class Token: jwt: str - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: jwt = self.jwt - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "jwt": jwt, @@ -27,8 +28,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) jwt = d.pop("jwt") token = cls( diff --git a/src/tower/tower_api_client/models/update_account_slug_params.py b/src/tower/tower_api_client/models/update_account_slug_params.py index 6722f1c3..f47ba402 100644 --- a/src/tower/tower_api_client/models/update_account_slug_params.py +++ b/src/tower/tower_api_client/models/update_account_slug_params.py @@ -1,29 +1,31 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="UpdateAccountSlugParams") -@attr.s(auto_attribs=True) +@_attrs_define class UpdateAccountSlugParams: """ Attributes: new_slug (str): The new slug for the account schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/UpdateAccountSlugParams.json. + https://api.tower.dev/v1/schemas/UpdateAccountSlugParams.json. """ new_slug: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: new_slug = self.new_slug + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "new_slug": new_slug, @@ -35,8 +37,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) new_slug = d.pop("new_slug") schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/update_account_slug_response.py b/src/tower/tower_api_client/models/update_account_slug_response.py index 169f5b1a..36dfe83e 100644 --- a/src/tower/tower_api_client/models/update_account_slug_response.py +++ b/src/tower/tower_api_client/models/update_account_slug_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="UpdateAccountSlugResponse") -@attr.s(auto_attribs=True) +@_attrs_define class UpdateAccountSlugResponse: """ Attributes: account (Account): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/UpdateAccountSlugResponse.json. + https://api.tower.dev/v1/schemas/UpdateAccountSlugResponse.json. """ account: "Account" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: account = self.account.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "account": account, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.account import Account - d = src_dict.copy() + d = dict(src_dict) account = Account.from_dict(d.pop("account")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/update_app_params.py b/src/tower/tower_api_client/models/update_app_params.py new file mode 100644 index 00000000..defe8759 --- /dev/null +++ b/src/tower/tower_api_client/models/update_app_params.py @@ -0,0 +1,59 @@ +from collections.abc import Mapping +from typing import Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="UpdateAppParams") + + +@_attrs_define +class UpdateAppParams: + """ + Attributes: + description (str): New description for the App + status (str): New status for the App + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/UpdateAppParams.json. + """ + + description: str + status: str + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + description = self.description + + status = self.status + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "description": description, + "status": status, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + description = d.pop("description") + + status = d.pop("status") + + schema = d.pop("$schema", UNSET) + + update_app_params = cls( + description=description, + status=status, + schema=schema, + ) + + return update_app_params diff --git a/src/tower/tower_api_client/models/update_app_response.py b/src/tower/tower_api_client/models/update_app_response.py new file mode 100644 index 00000000..1ca4db2d --- /dev/null +++ b/src/tower/tower_api_client/models/update_app_response.py @@ -0,0 +1,57 @@ +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.app import App + + +T = TypeVar("T", bound="UpdateAppResponse") + + +@_attrs_define +class UpdateAppResponse: + """ + Attributes: + app (App): + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/UpdateAppResponse.json. + """ + + app: "App" + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + app = self.app.to_dict() + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "App": app, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.app import App + + d = dict(src_dict) + app = App.from_dict(d.pop("App")) + + schema = d.pop("$schema", UNSET) + + update_app_response = cls( + app=app, + schema=schema, + ) + + return update_app_response diff --git a/src/tower/tower_api_client/models/update_catalog_params.py b/src/tower/tower_api_client/models/update_catalog_params.py new file mode 100644 index 00000000..ede84c92 --- /dev/null +++ b/src/tower/tower_api_client/models/update_catalog_params.py @@ -0,0 +1,81 @@ +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.encrypted_catalog_property import EncryptedCatalogProperty + + +T = TypeVar("T", bound="UpdateCatalogParams") + + +@_attrs_define +class UpdateCatalogParams: + """ + Attributes: + environment (str): New environment for the catalog + name (str): New name for the catalog + properties (list['EncryptedCatalogProperty']): + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/UpdateCatalogParams.json. + """ + + environment: str + name: str + properties: list["EncryptedCatalogProperty"] + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + environment = self.environment + + name = self.name + + properties = [] + for properties_item_data in self.properties: + properties_item = properties_item_data.to_dict() + properties.append(properties_item) + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "environment": environment, + "name": name, + "properties": properties, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.encrypted_catalog_property import EncryptedCatalogProperty + + d = dict(src_dict) + environment = d.pop("environment") + + name = d.pop("name") + + properties = [] + _properties = d.pop("properties") + for properties_item_data in _properties: + properties_item = EncryptedCatalogProperty.from_dict(properties_item_data) + + properties.append(properties_item) + + schema = d.pop("$schema", UNSET) + + update_catalog_params = cls( + environment=environment, + name=name, + properties=properties, + schema=schema, + ) + + return update_catalog_params diff --git a/src/tower/tower_api_client/models/update_catalog_response.py b/src/tower/tower_api_client/models/update_catalog_response.py new file mode 100644 index 00000000..25de02ca --- /dev/null +++ b/src/tower/tower_api_client/models/update_catalog_response.py @@ -0,0 +1,57 @@ +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.catalog import Catalog + + +T = TypeVar("T", bound="UpdateCatalogResponse") + + +@_attrs_define +class UpdateCatalogResponse: + """ + Attributes: + catalog (Catalog): + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/UpdateCatalogResponse.json. + """ + + catalog: "Catalog" + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + catalog = self.catalog.to_dict() + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "catalog": catalog, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.catalog import Catalog + + d = dict(src_dict) + catalog = Catalog.from_dict(d.pop("catalog")) + + schema = d.pop("$schema", UNSET) + + update_catalog_response = cls( + catalog=catalog, + schema=schema, + ) + + return update_catalog_response diff --git a/src/tower/tower_api_client/models/update_my_team_invitation_params.py b/src/tower/tower_api_client/models/update_my_team_invitation_params.py index 744b8145..dd79f98f 100644 --- a/src/tower/tower_api_client/models/update_my_team_invitation_params.py +++ b/src/tower/tower_api_client/models/update_my_team_invitation_params.py @@ -1,32 +1,35 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="UpdateMyTeamInvitationParams") -@attr.s(auto_attribs=True) +@_attrs_define class UpdateMyTeamInvitationParams: """ Attributes: accepted (bool): Whether or not the invitation was accepted. If false, it's considered rejected. slug (str): The slug of the team invitation to update schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/UpdateMyTeamInvitationParams.json. + https://api.tower.dev/v1/schemas/UpdateMyTeamInvitationParams.json. """ accepted: bool slug: str schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: accepted = self.accepted + slug = self.slug + schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "accepted": accepted, @@ -39,8 +42,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) accepted = d.pop("accepted") slug = d.pop("slug") diff --git a/src/tower/tower_api_client/models/update_my_team_invitation_response.py b/src/tower/tower_api_client/models/update_my_team_invitation_response.py index 894c485a..6a86a55d 100644 --- a/src/tower/tower_api_client/models/update_my_team_invitation_response.py +++ b/src/tower/tower_api_client/models/update_my_team_invitation_response.py @@ -1,26 +1,27 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="UpdateMyTeamInvitationResponse") -@attr.s(auto_attribs=True) +@_attrs_define class UpdateMyTeamInvitationResponse: """ Attributes: schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/UpdateMyTeamInvitationResponse.json. + https://api.tower.dev/v1/schemas/UpdateMyTeamInvitationResponse.json. """ schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update({}) if schema is not UNSET: field_dict["$schema"] = schema @@ -28,8 +29,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) schema = d.pop("$schema", UNSET) update_my_team_invitation_response = cls( diff --git a/src/tower/tower_api_client/models/update_secret_params.py b/src/tower/tower_api_client/models/update_secret_params.py new file mode 100644 index 00000000..9fe02220 --- /dev/null +++ b/src/tower/tower_api_client/models/update_secret_params.py @@ -0,0 +1,67 @@ +from collections.abc import Mapping +from typing import Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="UpdateSecretParams") + + +@_attrs_define +class UpdateSecretParams: + """ + Attributes: + encrypted_value (str): + environment (str): + preview (str): + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/UpdateSecretParams.json. + """ + + encrypted_value: str + environment: str + preview: str + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + encrypted_value = self.encrypted_value + + environment = self.environment + + preview = self.preview + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "encrypted_value": encrypted_value, + "environment": environment, + "preview": preview, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + encrypted_value = d.pop("encrypted_value") + + environment = d.pop("environment") + + preview = d.pop("preview") + + schema = d.pop("$schema", UNSET) + + update_secret_params = cls( + encrypted_value=encrypted_value, + environment=environment, + preview=preview, + schema=schema, + ) + + return update_secret_params diff --git a/src/tower/tower_api_client/models/update_secret_response.py b/src/tower/tower_api_client/models/update_secret_response.py new file mode 100644 index 00000000..1784805f --- /dev/null +++ b/src/tower/tower_api_client/models/update_secret_response.py @@ -0,0 +1,57 @@ +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.secret import Secret + + +T = TypeVar("T", bound="UpdateSecretResponse") + + +@_attrs_define +class UpdateSecretResponse: + """ + Attributes: + secret (Secret): + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/UpdateSecretResponse.json. + """ + + secret: "Secret" + schema: Union[Unset, str] = UNSET + + def to_dict(self) -> dict[str, Any]: + secret = self.secret.to_dict() + + schema = self.schema + + field_dict: dict[str, Any] = {} + field_dict.update( + { + "secret": secret, + } + ) + if schema is not UNSET: + field_dict["$schema"] = schema + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.secret import Secret + + d = dict(src_dict) + secret = Secret.from_dict(d.pop("secret")) + + schema = d.pop("$schema", UNSET) + + update_secret_response = cls( + secret=secret, + schema=schema, + ) + + return update_secret_response diff --git a/src/tower/tower_api_client/models/update_team_params.py b/src/tower/tower_api_client/models/update_team_params.py index ab12bd96..d1931a2d 100644 --- a/src/tower/tower_api_client/models/update_team_params.py +++ b/src/tower/tower_api_client/models/update_team_params.py @@ -1,34 +1,39 @@ -from typing import Any, Dict, Optional, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union, cast -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="UpdateTeamParams") -@attr.s(auto_attribs=True) +@_attrs_define class UpdateTeamParams: """ Attributes: - schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/UpdateTeamParams.json. - name (Optional[str]): The name of the team to create. This is optional, if you supply null it will not update + name (Union[None, str]): The name of the team to create. This is optional, if you supply null it will not update the team name. - slug (Optional[str]): The new slug that you want the team to use. This is optional, if you supply null it will - not update the slug. + slug (Union[None, str]): The new slug that you want the team to use. This is optional, if you supply null it + will not update the slug. + schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: + https://api.tower.dev/v1/schemas/UpdateTeamParams.json. """ - name: Optional[str] - slug: Optional[str] + name: Union[None, str] + slug: Union[None, str] schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: - schema = self.schema + def to_dict(self) -> dict[str, Any]: + name: Union[None, str] name = self.name + + slug: Union[None, str] slug = self.slug - field_dict: Dict[str, Any] = {} + schema = self.schema + + field_dict: dict[str, Any] = {} field_dict.update( { "name": name, @@ -41,18 +46,29 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() - schema = d.pop("$schema", UNSET) + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) - name = d.pop("name") + def _parse_name(data: object) -> Union[None, str]: + if data is None: + return data + return cast(Union[None, str], data) - slug = d.pop("slug") + name = _parse_name(d.pop("name")) + + def _parse_slug(data: object) -> Union[None, str]: + if data is None: + return data + return cast(Union[None, str], data) + + slug = _parse_slug(d.pop("slug")) + + schema = d.pop("$schema", UNSET) update_team_params = cls( - schema=schema, name=name, slug=slug, + schema=schema, ) return update_team_params diff --git a/src/tower/tower_api_client/models/update_team_response.py b/src/tower/tower_api_client/models/update_team_response.py index da25dc7b..d461cbe5 100644 --- a/src/tower/tower_api_client/models/update_team_response.py +++ b/src/tower/tower_api_client/models/update_team_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="UpdateTeamResponse") -@attr.s(auto_attribs=True) +@_attrs_define class UpdateTeamResponse: """ Attributes: team (Team): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/UpdateTeamResponse.json. + https://api.tower.dev/v1/schemas/UpdateTeamResponse.json. """ team: "Team" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: team = self.team.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "team": team, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.team import Team - d = src_dict.copy() + d = dict(src_dict) team = Team.from_dict(d.pop("team")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/update_user_params.py b/src/tower/tower_api_client/models/update_user_params.py index 25724318..4549c47c 100644 --- a/src/tower/tower_api_client/models/update_user_params.py +++ b/src/tower/tower_api_client/models/update_user_params.py @@ -1,38 +1,67 @@ -from typing import Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import Any, TypeVar, Union, cast -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset T = TypeVar("T", bound="UpdateUserParams") -@attr.s(auto_attribs=True) +@_attrs_define class UpdateUserParams: """ Attributes: schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/UpdateUserParams.json. - company (Union[Unset, None, str]): - country (Union[Unset, None, str]): - first_name (Union[Unset, None, str]): - last_name (Union[Unset, None, str]): + https://api.tower.dev/v1/schemas/UpdateUserParams.json. + company (Union[None, Unset, str]): + country (Union[None, Unset, str]): + first_name (Union[None, Unset, str]): + is_alerts_enabled (Union[None, Unset, bool]): + last_name (Union[None, Unset, str]): """ schema: Union[Unset, str] = UNSET - company: Union[Unset, None, str] = UNSET - country: Union[Unset, None, str] = UNSET - first_name: Union[Unset, None, str] = UNSET - last_name: Union[Unset, None, str] = UNSET + company: Union[None, Unset, str] = UNSET + country: Union[None, Unset, str] = UNSET + first_name: Union[None, Unset, str] = UNSET + is_alerts_enabled: Union[None, Unset, bool] = UNSET + last_name: Union[None, Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: schema = self.schema - company = self.company - country = self.country - first_name = self.first_name - last_name = self.last_name - field_dict: Dict[str, Any] = {} + company: Union[None, Unset, str] + if isinstance(self.company, Unset): + company = UNSET + else: + company = self.company + + country: Union[None, Unset, str] + if isinstance(self.country, Unset): + country = UNSET + else: + country = self.country + + first_name: Union[None, Unset, str] + if isinstance(self.first_name, Unset): + first_name = UNSET + else: + first_name = self.first_name + + is_alerts_enabled: Union[None, Unset, bool] + if isinstance(self.is_alerts_enabled, Unset): + is_alerts_enabled = UNSET + else: + is_alerts_enabled = self.is_alerts_enabled + + last_name: Union[None, Unset, str] + if isinstance(self.last_name, Unset): + last_name = UNSET + else: + last_name = self.last_name + + field_dict: dict[str, Any] = {} field_dict.update({}) if schema is not UNSET: field_dict["$schema"] = schema @@ -42,29 +71,69 @@ def to_dict(self) -> Dict[str, Any]: field_dict["country"] = country if first_name is not UNSET: field_dict["first_name"] = first_name + if is_alerts_enabled is not UNSET: + field_dict["is_alerts_enabled"] = is_alerts_enabled if last_name is not UNSET: field_dict["last_name"] = last_name return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) schema = d.pop("$schema", UNSET) - company = d.pop("company", UNSET) + def _parse_company(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) - country = d.pop("country", UNSET) + company = _parse_company(d.pop("company", UNSET)) - first_name = d.pop("first_name", UNSET) + def _parse_country(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) - last_name = d.pop("last_name", UNSET) + country = _parse_country(d.pop("country", UNSET)) + + def _parse_first_name(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) + + first_name = _parse_first_name(d.pop("first_name", UNSET)) + + def _parse_is_alerts_enabled(data: object) -> Union[None, Unset, bool]: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(Union[None, Unset, bool], data) + + is_alerts_enabled = _parse_is_alerts_enabled(d.pop("is_alerts_enabled", UNSET)) + + def _parse_last_name(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) + + last_name = _parse_last_name(d.pop("last_name", UNSET)) update_user_params = cls( schema=schema, company=company, country=country, first_name=first_name, + is_alerts_enabled=is_alerts_enabled, last_name=last_name, ) diff --git a/src/tower/tower_api_client/models/update_user_response.py b/src/tower/tower_api_client/models/update_user_response.py index a7230932..81125405 100644 --- a/src/tower/tower_api_client/models/update_user_response.py +++ b/src/tower/tower_api_client/models/update_user_response.py @@ -1,6 +1,7 @@ -from typing import TYPE_CHECKING, Any, Dict, Type, TypeVar, Union +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, Union -import attr +from attrs import define as _attrs_define from ..types import UNSET, Unset @@ -11,24 +12,24 @@ T = TypeVar("T", bound="UpdateUserResponse") -@attr.s(auto_attribs=True) +@_attrs_define class UpdateUserResponse: """ Attributes: user (User): schema (Union[Unset, str]): A URL to the JSON Schema for this object. Example: - http://localhost:8081/v1/schemas/UpdateUserResponse.json. + https://api.tower.dev/v1/schemas/UpdateUserResponse.json. """ user: "User" schema: Union[Unset, str] = UNSET - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: user = self.user.to_dict() schema = self.schema - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "user": user, @@ -40,10 +41,10 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.user import User - d = src_dict.copy() + d = dict(src_dict) user = User.from_dict(d.pop("user")) schema = d.pop("$schema", UNSET) diff --git a/src/tower/tower_api_client/models/user.py b/src/tower/tower_api_client/models/user.py index ece53563..4eee905b 100644 --- a/src/tower/tower_api_client/models/user.py +++ b/src/tower/tower_api_client/models/user.py @@ -1,13 +1,14 @@ import datetime -from typing import Any, Dict, Type, TypeVar +from collections.abc import Mapping +from typing import Any, TypeVar -import attr +from attrs import define as _attrs_define from dateutil.parser import isoparse T = TypeVar("T", bound="User") -@attr.s(auto_attribs=True) +@_attrs_define class User: """ Attributes: @@ -16,6 +17,7 @@ class User: created_at (datetime.datetime): email (str): first_name (str): + is_alerts_enabled (bool): is_invitation_claimed (bool): last_name (str): profile_photo_url (str): @@ -26,22 +28,31 @@ class User: created_at: datetime.datetime email: str first_name: str + is_alerts_enabled: bool is_invitation_claimed: bool last_name: str profile_photo_url: str - def to_dict(self) -> Dict[str, Any]: + def to_dict(self) -> dict[str, Any]: company = self.company + country = self.country + created_at = self.created_at.isoformat() email = self.email + first_name = self.first_name + + is_alerts_enabled = self.is_alerts_enabled + is_invitation_claimed = self.is_invitation_claimed + last_name = self.last_name + profile_photo_url = self.profile_photo_url - field_dict: Dict[str, Any] = {} + field_dict: dict[str, Any] = {} field_dict.update( { "company": company, @@ -49,6 +60,7 @@ def to_dict(self) -> Dict[str, Any]: "created_at": created_at, "email": email, "first_name": first_name, + "is_alerts_enabled": is_alerts_enabled, "is_invitation_claimed": is_invitation_claimed, "last_name": last_name, "profile_photo_url": profile_photo_url, @@ -58,8 +70,8 @@ def to_dict(self) -> Dict[str, Any]: return field_dict @classmethod - def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: - d = src_dict.copy() + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) company = d.pop("company") country = d.pop("country") @@ -70,6 +82,8 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: first_name = d.pop("first_name") + is_alerts_enabled = d.pop("is_alerts_enabled") + is_invitation_claimed = d.pop("is_invitation_claimed") last_name = d.pop("last_name") @@ -82,6 +96,7 @@ def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: created_at=created_at, email=email, first_name=first_name, + is_alerts_enabled=is_alerts_enabled, is_invitation_claimed=is_invitation_claimed, last_name=last_name, profile_photo_url=profile_photo_url, diff --git a/src/tower/tower_api_client/types.py b/src/tower/tower_api_client/types.py index 230efea9..b9ed58b8 100644 --- a/src/tower/tower_api_client/types.py +++ b/src/tower/tower_api_client/types.py @@ -1,21 +1,23 @@ -""" Contains some shared types for properties """ +"""Contains some shared types for properties""" + +from collections.abc import MutableMapping from http import HTTPStatus -from typing import BinaryIO, Generic, MutableMapping, Optional, Tuple, TypeVar +from typing import BinaryIO, Generic, Literal, Optional, TypeVar -import attr +from attrs import define class Unset: - def __bool__(self) -> bool: + def __bool__(self) -> Literal[False]: return False UNSET: Unset = Unset() -FileJsonType = Tuple[Optional[str], BinaryIO, Optional[str]] +FileJsonType = tuple[Optional[str], BinaryIO, Optional[str]] -@attr.s(auto_attribs=True) +@define class File: """Contains information for file uploads""" @@ -31,7 +33,7 @@ def to_tuple(self) -> FileJsonType: T = TypeVar("T") -@attr.s(auto_attribs=True) +@define class Response(Generic[T]): """A response from an endpoint""" @@ -41,4 +43,4 @@ class Response(Generic[T]): parsed: Optional[T] -__all__ = ["File", "Response", "FileJsonType"] +__all__ = ["UNSET", "File", "FileJsonType", "Response", "Unset"] diff --git a/tests/test_client.py b/tests/test_client.py new file mode 100644 index 00000000..e65df9fd --- /dev/null +++ b/tests/test_client.py @@ -0,0 +1,117 @@ + +import os +import httpx +import pytest + +from tower.tower_api_client.models import ( + Run, +) + +def test_running_apps(httpx_mock): + # Mock the response from the API + httpx_mock.add_response( + method="POST", + url="https://api.example.com/v1/apps/my-app/runs", + json={ + "run": { + "app_slug": "my-app", + "app_version": "v6", + "cancelled_at": None, + "created_at": "2025-04-25T20:54:58.762547Z", + "ended_at": "2025-04-25T20:55:35.220295Z", + "environment": "default", + "number": 0, + "run_id": "50ac9bc1-c783-4359-9917-a706f20dc02c", + "scheduled_at": "2025-04-25T20:54:58.761867Z", + "started_at": "2025-04-25T20:54:59.366937Z", + "status": "pending", + "status_group": "" + } + }, + status_code=200, + ) + + # We tell the client to use the mock server. + os.environ["TOWER_URL"] = "https://api.example.com" + os.environ["TOWER_API_KEY"] = "abc123" + + # Call the function that makes the API request + import tower + run: Run = tower.run_app("my-app", environment="production") + + # Assert the response + assert run is not None + +def test_waiting_for_runs(httpx_mock): + # Mock the response from the API + httpx_mock.add_response( + method="GET", + url="https://api.example.com/v1/apps/my-app/runs/3", + json={ + "run": { + "app_slug": "my-app", + "app_version": "v6", + "cancelled_at": None, + "created_at": "2025-04-25T20:54:58.762547Z", + "ended_at": "2025-04-25T20:55:35.220295Z", + "environment": "default", + "number": 3, + "run_id": "50ac9bc1-c783-4359-9917-a706f20dc02c", + "scheduled_at": "2025-04-25T20:54:58.761867Z", + "started_at": "2025-04-25T20:54:59.366937Z", + "status": "pending", + "status_group": "" + } + }, + status_code=200, + ) + + # Second request, will indicate that it's done. + httpx_mock.add_response( + method="GET", + url="https://api.example.com/v1/apps/my-app/runs/3", + json={ + "run": { + "app_slug": "my-app", + "app_version": "v6", + "cancelled_at": None, + "created_at": "2025-04-25T20:54:58.762547Z", + "ended_at": "2025-04-25T20:55:35.220295Z", + "environment": "default", + "number": 3, + "run_id": "50ac9bc1-c783-4359-9917-a706f20dc02c", + "scheduled_at": "2025-04-25T20:54:58.761867Z", + "started_at": "2025-04-25T20:54:59.366937Z", + "status": "exited", + "status_group": "successful" + } + }, + status_code=200, + ) + + # We tell the client to use the mock server. + os.environ["TOWER_URL"] = "https://api.example.com" + os.environ["TOWER_API_KEY"] = "abc123" + + import tower + + run = Run( + app_slug="my-app", + app_version="v6", + cancelled_at=None, + created_at="2025-04-25T20:54:58.762547Z", + ended_at="2025-04-25T20:55:35.220295Z", + environment="default", + number=3, + run_id="50ac9bc1-c783-4359-9917-a706f20dc02c", + scheduled_at="2025-04-25T20:54:58.761867Z", + started_at="2025-04-25T20:54:59.366937Z", + status="crashed", + status_group="failed" + ) + + # Set WAIT_TIMEOUT to 0 so we don't have to...wait. + tower._client.WAIT_TIMEOUT = 0 + + # Now actually wait for the run. + tower.wait_for_run(run) diff --git a/uv.lock b/uv.lock index 11a490e2..f5e005fb 100644 --- a/uv.lock +++ b/uv.lock @@ -1,156 +1,130 @@ version = 1 -revision = 1 +revision = 2 requires-python = ">=3.9" [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, ] [[package]] name = "anyio" -version = "3.7.1" +version = "4.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/99/2dfd53fd55ce9838e6ff2d4dac20ce58263798bd1a0dbe18b3a9af3fcfce/anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780", size = 142927 } +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload_time = "2025-03-17T00:02:54.77Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/24/44299477fe7dcc9cb58d0a57d5a7588d6af2ff403fdd2d47a246c91a3246/anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5", size = 80896 }, + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload_time = "2025-03-17T00:02:52.713Z" }, ] [[package]] name = "attrs" -version = "24.2.0" +version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fc/0f/aafca9af9315aee06a89ffde799a10a582fe8de76c563ee80bbcdc08b3fb/attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346", size = 792678 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload_time = "2025-03-13T11:10:22.779Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2", size = 63001 }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload_time = "2025-03-13T11:10:21.14Z" }, ] [[package]] name = "cachetools" version = "5.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload_time = "2025-02-20T21:01:19.524Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 }, + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload_time = "2025-02-20T21:01:16.647Z" }, ] [[package]] name = "certifi" -version = "2024.12.14" +version = "2025.1.31" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/bd/1d41ee578ce09523c81a15426705dd20969f5abf006d1afe8aeff0dd776a/certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db", size = 166010 } +sdist = { url = "https://files.pythonhosted.org/packages/1c/ab/c9f1e32b7b1bf505bf26f0ef697775960db7932abeb7b516de930ba2705f/certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651", size = 167577, upload_time = "2025-01-31T02:16:47.166Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/32/8f6669fc4798494966bf446c8c4a162e0b5d893dff088afddf76414f70e1/certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56", size = 164927 }, + { url = "https://files.pythonhosted.org/packages/38/fc/bce832fd4fd99766c04d1ee0eead6b0ec6486fb100ae5e74c1d91292b982/certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe", size = 166393, upload_time = "2025-01-31T02:16:45.015Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188, upload_time = "2024-12-24T18:12:35.43Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013 }, - { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285 }, - { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449 }, - { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892 }, - { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123 }, - { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943 }, - { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063 }, - { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578 }, - { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629 }, - { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778 }, - { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453 }, - { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479 }, - { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790 }, - { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013 }, - { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285 }, - { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449 }, - { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892 }, - { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123 }, - { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943 }, - { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063 }, - { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578 }, - { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629 }, - { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778 }, - { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453 }, - { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479 }, - { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790 }, - { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, - { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, - { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, - { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 }, - { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 }, - { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 }, - { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 }, - { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 }, - { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 }, - { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 }, - { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 }, - { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 }, - { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 }, - { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, - { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, - { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, - { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, - { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, - { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, - { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, - { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, - { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, - { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, - { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, - { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, - { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, - { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, - { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, - { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, - { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, - { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, - { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, - { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, - { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, - { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, - { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, - { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, - { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, - { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, - { url = "https://files.pythonhosted.org/packages/7f/c0/b913f8f02836ed9ab32ea643c6fe4d3325c3d8627cf6e78098671cafff86/charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41", size = 197867 }, - { url = "https://files.pythonhosted.org/packages/0f/6c/2bee440303d705b6fb1e2ec789543edec83d32d258299b16eed28aad48e0/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f", size = 141385 }, - { url = "https://files.pythonhosted.org/packages/3d/04/cb42585f07f6f9fd3219ffb6f37d5a39b4fd2db2355b23683060029c35f7/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2", size = 151367 }, - { url = "https://files.pythonhosted.org/packages/54/54/2412a5b093acb17f0222de007cc129ec0e0df198b5ad2ce5699355269dfe/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770", size = 143928 }, - { url = "https://files.pythonhosted.org/packages/5a/6d/e2773862b043dcf8a221342954f375392bb2ce6487bcd9f2c1b34e1d6781/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4", size = 146203 }, - { url = "https://files.pythonhosted.org/packages/b9/f8/ca440ef60d8f8916022859885f231abb07ada3c347c03d63f283bec32ef5/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537", size = 148082 }, - { url = "https://files.pythonhosted.org/packages/04/d2/42fd330901aaa4b805a1097856c2edf5095e260a597f65def493f4b8c833/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496", size = 142053 }, - { url = "https://files.pythonhosted.org/packages/9e/af/3a97a4fa3c53586f1910dadfc916e9c4f35eeada36de4108f5096cb7215f/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78", size = 150625 }, - { url = "https://files.pythonhosted.org/packages/26/ae/23d6041322a3556e4da139663d02fb1b3c59a23ab2e2b56432bd2ad63ded/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7", size = 153549 }, - { url = "https://files.pythonhosted.org/packages/94/22/b8f2081c6a77cb20d97e57e0b385b481887aa08019d2459dc2858ed64871/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6", size = 150945 }, - { url = "https://files.pythonhosted.org/packages/c7/0b/c5ec5092747f801b8b093cdf5610e732b809d6cb11f4c51e35fc28d1d389/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294", size = 146595 }, - { url = "https://files.pythonhosted.org/packages/0c/5a/0b59704c38470df6768aa154cc87b1ac7c9bb687990a1559dc8765e8627e/charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5", size = 95453 }, - { url = "https://files.pythonhosted.org/packages/85/2d/a9790237cb4d01a6d57afadc8573c8b73c609ade20b80f4cda30802009ee/charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765", size = 102811 }, - { url = "https://files.pythonhosted.org/packages/7f/c0/b913f8f02836ed9ab32ea643c6fe4d3325c3d8627cf6e78098671cafff86/charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41", size = 197867 }, - { url = "https://files.pythonhosted.org/packages/0f/6c/2bee440303d705b6fb1e2ec789543edec83d32d258299b16eed28aad48e0/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f", size = 141385 }, - { url = "https://files.pythonhosted.org/packages/3d/04/cb42585f07f6f9fd3219ffb6f37d5a39b4fd2db2355b23683060029c35f7/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2", size = 151367 }, - { url = "https://files.pythonhosted.org/packages/54/54/2412a5b093acb17f0222de007cc129ec0e0df198b5ad2ce5699355269dfe/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770", size = 143928 }, - { url = "https://files.pythonhosted.org/packages/5a/6d/e2773862b043dcf8a221342954f375392bb2ce6487bcd9f2c1b34e1d6781/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4", size = 146203 }, - { url = "https://files.pythonhosted.org/packages/b9/f8/ca440ef60d8f8916022859885f231abb07ada3c347c03d63f283bec32ef5/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537", size = 148082 }, - { url = "https://files.pythonhosted.org/packages/04/d2/42fd330901aaa4b805a1097856c2edf5095e260a597f65def493f4b8c833/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496", size = 142053 }, - { url = "https://files.pythonhosted.org/packages/9e/af/3a97a4fa3c53586f1910dadfc916e9c4f35eeada36de4108f5096cb7215f/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78", size = 150625 }, - { url = "https://files.pythonhosted.org/packages/26/ae/23d6041322a3556e4da139663d02fb1b3c59a23ab2e2b56432bd2ad63ded/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7", size = 153549 }, - { url = "https://files.pythonhosted.org/packages/94/22/b8f2081c6a77cb20d97e57e0b385b481887aa08019d2459dc2858ed64871/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6", size = 150945 }, - { url = "https://files.pythonhosted.org/packages/c7/0b/c5ec5092747f801b8b093cdf5610e732b809d6cb11f4c51e35fc28d1d389/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294", size = 146595 }, - { url = "https://files.pythonhosted.org/packages/0c/5a/0b59704c38470df6768aa154cc87b1ac7c9bb687990a1559dc8765e8627e/charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5", size = 95453 }, - { url = "https://files.pythonhosted.org/packages/85/2d/a9790237cb4d01a6d57afadc8573c8b73c609ade20b80f4cda30802009ee/charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765", size = 102811 }, - { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, + { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013, upload_time = "2024-12-24T18:09:43.671Z" }, + { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285, upload_time = "2024-12-24T18:09:48.113Z" }, + { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449, upload_time = "2024-12-24T18:09:50.845Z" }, + { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892, upload_time = "2024-12-24T18:09:52.078Z" }, + { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123, upload_time = "2024-12-24T18:09:54.575Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943, upload_time = "2024-12-24T18:09:57.324Z" }, + { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063, upload_time = "2024-12-24T18:09:59.794Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578, upload_time = "2024-12-24T18:10:02.357Z" }, + { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629, upload_time = "2024-12-24T18:10:03.678Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778, upload_time = "2024-12-24T18:10:06.197Z" }, + { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453, upload_time = "2024-12-24T18:10:08.848Z" }, + { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479, upload_time = "2024-12-24T18:10:10.044Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790, upload_time = "2024-12-24T18:10:11.323Z" }, + { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995, upload_time = "2024-12-24T18:10:12.838Z" }, + { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471, upload_time = "2024-12-24T18:10:14.101Z" }, + { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831, upload_time = "2024-12-24T18:10:15.512Z" }, + { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335, upload_time = "2024-12-24T18:10:18.369Z" }, + { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862, upload_time = "2024-12-24T18:10:19.743Z" }, + { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673, upload_time = "2024-12-24T18:10:21.139Z" }, + { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211, upload_time = "2024-12-24T18:10:22.382Z" }, + { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039, upload_time = "2024-12-24T18:10:24.802Z" }, + { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939, upload_time = "2024-12-24T18:10:26.124Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075, upload_time = "2024-12-24T18:10:30.027Z" }, + { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340, upload_time = "2024-12-24T18:10:32.679Z" }, + { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205, upload_time = "2024-12-24T18:10:34.724Z" }, + { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441, upload_time = "2024-12-24T18:10:37.574Z" }, + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105, upload_time = "2024-12-24T18:10:38.83Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404, upload_time = "2024-12-24T18:10:44.272Z" }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423, upload_time = "2024-12-24T18:10:45.492Z" }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184, upload_time = "2024-12-24T18:10:47.898Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268, upload_time = "2024-12-24T18:10:50.589Z" }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601, upload_time = "2024-12-24T18:10:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098, upload_time = "2024-12-24T18:10:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520, upload_time = "2024-12-24T18:10:55.048Z" }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852, upload_time = "2024-12-24T18:10:57.647Z" }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488, upload_time = "2024-12-24T18:10:59.43Z" }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192, upload_time = "2024-12-24T18:11:00.676Z" }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550, upload_time = "2024-12-24T18:11:01.952Z" }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785, upload_time = "2024-12-24T18:11:03.142Z" }, + { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698, upload_time = "2024-12-24T18:11:05.834Z" }, + { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162, upload_time = "2024-12-24T18:11:07.064Z" }, + { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263, upload_time = "2024-12-24T18:11:08.374Z" }, + { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966, upload_time = "2024-12-24T18:11:09.831Z" }, + { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992, upload_time = "2024-12-24T18:11:12.03Z" }, + { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162, upload_time = "2024-12-24T18:11:13.372Z" }, + { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972, upload_time = "2024-12-24T18:11:14.628Z" }, + { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095, upload_time = "2024-12-24T18:11:17.672Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668, upload_time = "2024-12-24T18:11:18.989Z" }, + { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073, upload_time = "2024-12-24T18:11:21.507Z" }, + { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732, upload_time = "2024-12-24T18:11:22.774Z" }, + { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391, upload_time = "2024-12-24T18:11:24.139Z" }, + { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702, upload_time = "2024-12-24T18:11:26.535Z" }, + { url = "https://files.pythonhosted.org/packages/7f/c0/b913f8f02836ed9ab32ea643c6fe4d3325c3d8627cf6e78098671cafff86/charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41", size = 197867, upload_time = "2024-12-24T18:12:10.438Z" }, + { url = "https://files.pythonhosted.org/packages/0f/6c/2bee440303d705b6fb1e2ec789543edec83d32d258299b16eed28aad48e0/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f", size = 141385, upload_time = "2024-12-24T18:12:11.847Z" }, + { url = "https://files.pythonhosted.org/packages/3d/04/cb42585f07f6f9fd3219ffb6f37d5a39b4fd2db2355b23683060029c35f7/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2", size = 151367, upload_time = "2024-12-24T18:12:13.177Z" }, + { url = "https://files.pythonhosted.org/packages/54/54/2412a5b093acb17f0222de007cc129ec0e0df198b5ad2ce5699355269dfe/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770", size = 143928, upload_time = "2024-12-24T18:12:14.497Z" }, + { url = "https://files.pythonhosted.org/packages/5a/6d/e2773862b043dcf8a221342954f375392bb2ce6487bcd9f2c1b34e1d6781/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4", size = 146203, upload_time = "2024-12-24T18:12:15.731Z" }, + { url = "https://files.pythonhosted.org/packages/b9/f8/ca440ef60d8f8916022859885f231abb07ada3c347c03d63f283bec32ef5/charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537", size = 148082, upload_time = "2024-12-24T18:12:18.641Z" }, + { url = "https://files.pythonhosted.org/packages/04/d2/42fd330901aaa4b805a1097856c2edf5095e260a597f65def493f4b8c833/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496", size = 142053, upload_time = "2024-12-24T18:12:20.036Z" }, + { url = "https://files.pythonhosted.org/packages/9e/af/3a97a4fa3c53586f1910dadfc916e9c4f35eeada36de4108f5096cb7215f/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78", size = 150625, upload_time = "2024-12-24T18:12:22.804Z" }, + { url = "https://files.pythonhosted.org/packages/26/ae/23d6041322a3556e4da139663d02fb1b3c59a23ab2e2b56432bd2ad63ded/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7", size = 153549, upload_time = "2024-12-24T18:12:24.163Z" }, + { url = "https://files.pythonhosted.org/packages/94/22/b8f2081c6a77cb20d97e57e0b385b481887aa08019d2459dc2858ed64871/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6", size = 150945, upload_time = "2024-12-24T18:12:25.415Z" }, + { url = "https://files.pythonhosted.org/packages/c7/0b/c5ec5092747f801b8b093cdf5610e732b809d6cb11f4c51e35fc28d1d389/charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294", size = 146595, upload_time = "2024-12-24T18:12:28.03Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5a/0b59704c38470df6768aa154cc87b1ac7c9bb687990a1559dc8765e8627e/charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5", size = 95453, upload_time = "2024-12-24T18:12:29.569Z" }, + { url = "https://files.pythonhosted.org/packages/85/2d/a9790237cb4d01a6d57afadc8573c8b73c609ade20b80f4cda30802009ee/charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765", size = 102811, upload_time = "2024-12-24T18:12:30.83Z" }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767, upload_time = "2024-12-24T18:12:32.852Z" }, ] [[package]] @@ -160,76 +134,67 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload_time = "2024-12-21T18:38:44.339Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload_time = "2024-12-21T18:38:41.666Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, -] - -[[package]] -name = "exceptiongroup" -version = "1.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload_time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload_time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "exceptiongroup" version = "1.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883, upload_time = "2024-07-12T22:26:00.161Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453, upload_time = "2024-07-12T22:25:58.476Z" }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload_time = "2025-03-14T07:11:40.47Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload_time = "2025-03-14T07:11:39.145Z" }, ] [[package]] name = "fsspec" version = "2025.3.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/45/d8/8425e6ba5fcec61a1d16e41b1b71d2bf9344f1fe48012c2b48b9620feae5/fsspec-2025.3.2.tar.gz", hash = "sha256:e52c77ef398680bbd6a98c0e628fbc469491282981209907bbc8aea76a04fdc6", size = 299281 } +sdist = { url = "https://files.pythonhosted.org/packages/45/d8/8425e6ba5fcec61a1d16e41b1b71d2bf9344f1fe48012c2b48b9620feae5/fsspec-2025.3.2.tar.gz", hash = "sha256:e52c77ef398680bbd6a98c0e628fbc469491282981209907bbc8aea76a04fdc6", size = 299281, upload_time = "2025-03-31T15:27:08.524Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/4b/e0cfc1a6f17e990f3e64b7d941ddc4acdc7b19d6edd51abf495f32b1a9e4/fsspec-2025.3.2-py3-none-any.whl", hash = "sha256:2daf8dc3d1dfa65b6aa37748d112773a7a08416f6c70d96b264c96476ecaf711", size = 194435 }, + { url = "https://files.pythonhosted.org/packages/44/4b/e0cfc1a6f17e990f3e64b7d941ddc4acdc7b19d6edd51abf495f32b1a9e4/fsspec-2025.3.2-py3-none-any.whl", hash = "sha256:2daf8dc3d1dfa65b6aa37748d112773a7a08416f6c70d96b264c96476ecaf711", size = 194435, upload_time = "2025-03-31T15:27:07.028Z" }, ] [[package]] name = "h11" -version = "0.14.0" +version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f5/38/3af3d3633a34a3316095b39c8e8fb4853a28a536e55d347bd8d8e9a14b03/h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d", size = 100418 } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload_time = "2025-04-24T03:35:25.427Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/04/ff642e65ad6b90db43e668d70ffb6736436c7ce41fcc549f4e9472234127/h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761", size = 58259 }, + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload_time = "2025-04-24T03:35:24.344Z" }, ] [[package]] name = "httpcore" -version = "1.0.8" +version = "1.0.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/45/ad3e1b4d448f22c0cff4f5692f5ed0666658578e358b8d58a19846048059/httpcore-1.0.8.tar.gz", hash = "sha256:86e94505ed24ea06514883fd44d2bc02d90e77e7979c8eb71b90f41d364a1bad", size = 85385 } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload_time = "2025-04-24T22:06:22.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8d/f052b1e336bb2c1fc7ed1aaed898aa570c0b61a09707b108979d9fc6e308/httpcore-1.0.8-py3-none-any.whl", hash = "sha256:5254cf149bcb5f75e9d1b2b9f729ea4a4b883d1ad7379fc632b727cec23674be", size = 78732 }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload_time = "2025-04-24T22:06:20.566Z" }, ] [[package]] @@ -242,9 +207,9 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload_time = "2024-12-06T15:37:23.222Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload_time = "2024-12-06T15:37:21.509Z" }, ] [[package]] @@ -260,30 +225,39 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/22/8eb91736b1dcb83d879bd49050a09df29a57cc5cd9f38e48a4b1c45ee890/huggingface_hub-0.30.2.tar.gz", hash = "sha256:9a7897c5b6fd9dad3168a794a8998d6378210f5b9688d0dfc180b1a228dc2466", size = 400868 } +sdist = { url = "https://files.pythonhosted.org/packages/df/22/8eb91736b1dcb83d879bd49050a09df29a57cc5cd9f38e48a4b1c45ee890/huggingface_hub-0.30.2.tar.gz", hash = "sha256:9a7897c5b6fd9dad3168a794a8998d6378210f5b9688d0dfc180b1a228dc2466", size = 400868, upload_time = "2025-04-08T08:32:45.26Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/27/1fb384a841e9661faad1c31cbfa62864f59632e876df5d795234da51c395/huggingface_hub-0.30.2-py3-none-any.whl", hash = "sha256:68ff05969927058cfa41df4f2155d4bb48f5f54f719dd0390103eefa9b191e28", size = 481433 }, + { url = "https://files.pythonhosted.org/packages/93/27/1fb384a841e9661faad1c31cbfa62864f59632e876df5d795234da51c395/huggingface_hub-0.30.2-py3-none-any.whl", hash = "sha256:68ff05969927058cfa41df4f2155d4bb48f5f54f719dd0390103eefa9b191e28", size = 481433, upload_time = "2025-04-08T08:32:43.305Z" }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload_time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload_time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload_time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload_time = "2025-03-19T20:10:01.071Z" }, ] [[package]] name = "jinja2" -version = "3.1.5" +version = "3.1.6" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/af/92/b3130cbbf5591acf9ade8708c365f3238046ac7cb8ccba6e81abccb0ccff/jinja2-3.1.5.tar.gz", hash = "sha256:8fefff8dc3034e27bb80d67c671eb8a9bc424c0ef4c0826edbff304cceff43bb", size = 244674 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, ] [[package]] @@ -293,219 +267,187 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload_time = "2023-06-03T06:41:14.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload_time = "2023-06-03T06:41:11.019Z" }, ] [[package]] name = "markupsafe" -version = "2.1.5" +version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384 } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload_time = "2024-10-18T15:21:54.129Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/54/ad5eb37bf9d51800010a74e4665425831a9db4e7c4e0fde4352e391e808e/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", size = 18206 }, - { url = "https://files.pythonhosted.org/packages/6a/4a/a4d49415e600bacae038c67f9fecc1d5433b9d3c71a4de6f33537b89654c/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", size = 14079 }, - { url = "https://files.pythonhosted.org/packages/0a/7b/85681ae3c33c385b10ac0f8dd025c30af83c78cec1c37a6aa3b55e67f5ec/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", size = 26620 }, - { url = "https://files.pythonhosted.org/packages/7c/52/2b1b570f6b8b803cef5ac28fdf78c0da318916c7d2fe9402a84d591b394c/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", size = 25818 }, - { url = "https://files.pythonhosted.org/packages/29/fe/a36ba8c7ca55621620b2d7c585313efd10729e63ef81e4e61f52330da781/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", size = 25493 }, - { url = "https://files.pythonhosted.org/packages/60/ae/9c60231cdfda003434e8bd27282b1f4e197ad5a710c14bee8bea8a9ca4f0/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", size = 30630 }, - { url = "https://files.pythonhosted.org/packages/65/dc/1510be4d179869f5dafe071aecb3f1f41b45d37c02329dfba01ff59e5ac5/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", size = 29745 }, - { url = "https://files.pythonhosted.org/packages/30/39/8d845dd7d0b0613d86e0ef89549bfb5f61ed781f59af45fc96496e897f3a/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", size = 30021 }, - { url = "https://files.pythonhosted.org/packages/c7/5c/356a6f62e4f3c5fbf2602b4771376af22a3b16efa74eb8716fb4e328e01e/MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", size = 16659 }, - { url = "https://files.pythonhosted.org/packages/69/48/acbf292615c65f0604a0c6fc402ce6d8c991276e16c80c46a8f758fbd30c/MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", size = 17213 }, - { url = "https://files.pythonhosted.org/packages/e4/54/ad5eb37bf9d51800010a74e4665425831a9db4e7c4e0fde4352e391e808e/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc", size = 18206 }, - { url = "https://files.pythonhosted.org/packages/6a/4a/a4d49415e600bacae038c67f9fecc1d5433b9d3c71a4de6f33537b89654c/MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5", size = 14079 }, - { url = "https://files.pythonhosted.org/packages/0a/7b/85681ae3c33c385b10ac0f8dd025c30af83c78cec1c37a6aa3b55e67f5ec/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46", size = 26620 }, - { url = "https://files.pythonhosted.org/packages/7c/52/2b1b570f6b8b803cef5ac28fdf78c0da318916c7d2fe9402a84d591b394c/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f", size = 25818 }, - { url = "https://files.pythonhosted.org/packages/29/fe/a36ba8c7ca55621620b2d7c585313efd10729e63ef81e4e61f52330da781/MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900", size = 25493 }, - { url = "https://files.pythonhosted.org/packages/60/ae/9c60231cdfda003434e8bd27282b1f4e197ad5a710c14bee8bea8a9ca4f0/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff", size = 30630 }, - { url = "https://files.pythonhosted.org/packages/65/dc/1510be4d179869f5dafe071aecb3f1f41b45d37c02329dfba01ff59e5ac5/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad", size = 29745 }, - { url = "https://files.pythonhosted.org/packages/30/39/8d845dd7d0b0613d86e0ef89549bfb5f61ed781f59af45fc96496e897f3a/MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd", size = 30021 }, - { url = "https://files.pythonhosted.org/packages/c7/5c/356a6f62e4f3c5fbf2602b4771376af22a3b16efa74eb8716fb4e328e01e/MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4", size = 16659 }, - { url = "https://files.pythonhosted.org/packages/69/48/acbf292615c65f0604a0c6fc402ce6d8c991276e16c80c46a8f758fbd30c/MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5", size = 17213 }, - { url = "https://files.pythonhosted.org/packages/11/e7/291e55127bb2ae67c64d66cef01432b5933859dfb7d6949daa721b89d0b3/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f", size = 18219 }, - { url = "https://files.pythonhosted.org/packages/6b/cb/aed7a284c00dfa7c0682d14df85ad4955a350a21d2e3b06d8240497359bf/MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2", size = 14098 }, - { url = "https://files.pythonhosted.org/packages/1c/cf/35fe557e53709e93feb65575c93927942087e9b97213eabc3fe9d5b25a55/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced", size = 29014 }, - { url = "https://files.pythonhosted.org/packages/97/18/c30da5e7a0e7f4603abfc6780574131221d9148f323752c2755d48abad30/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5", size = 28220 }, - { url = "https://files.pythonhosted.org/packages/0c/40/2e73e7d532d030b1e41180807a80d564eda53babaf04d65e15c1cf897e40/MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c", size = 27756 }, - { url = "https://files.pythonhosted.org/packages/18/46/5dca760547e8c59c5311b332f70605d24c99d1303dd9a6e1fc3ed0d73561/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f", size = 33988 }, - { url = "https://files.pythonhosted.org/packages/6d/c5/27febe918ac36397919cd4a67d5579cbbfa8da027fa1238af6285bb368ea/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a", size = 32718 }, - { url = "https://files.pythonhosted.org/packages/f8/81/56e567126a2c2bc2684d6391332e357589a96a76cb9f8e5052d85cb0ead8/MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f", size = 33317 }, - { url = "https://files.pythonhosted.org/packages/00/0b/23f4b2470accb53285c613a3ab9ec19dc944eaf53592cb6d9e2af8aa24cc/MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906", size = 16670 }, - { url = "https://files.pythonhosted.org/packages/b7/a2/c78a06a9ec6d04b3445a949615c4c7ed86a0b2eb68e44e7541b9d57067cc/MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617", size = 17224 }, - { url = "https://files.pythonhosted.org/packages/53/bd/583bf3e4c8d6a321938c13f49d44024dbe5ed63e0a7ba127e454a66da974/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1", size = 18215 }, - { url = "https://files.pythonhosted.org/packages/48/d6/e7cd795fc710292c3af3a06d80868ce4b02bfbbf370b7cee11d282815a2a/MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4", size = 14069 }, - { url = "https://files.pythonhosted.org/packages/51/b5/5d8ec796e2a08fc814a2c7d2584b55f889a55cf17dd1a90f2beb70744e5c/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee", size = 29452 }, - { url = "https://files.pythonhosted.org/packages/0a/0d/2454f072fae3b5a137c119abf15465d1771319dfe9e4acbb31722a0fff91/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5", size = 28462 }, - { url = "https://files.pythonhosted.org/packages/2d/75/fd6cb2e68780f72d47e6671840ca517bda5ef663d30ada7616b0462ad1e3/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b", size = 27869 }, - { url = "https://files.pythonhosted.org/packages/b0/81/147c477391c2750e8fc7705829f7351cf1cd3be64406edcf900dc633feb2/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a", size = 33906 }, - { url = "https://files.pythonhosted.org/packages/8b/ff/9a52b71839d7a256b563e85d11050e307121000dcebc97df120176b3ad93/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f", size = 32296 }, - { url = "https://files.pythonhosted.org/packages/88/07/2dc76aa51b481eb96a4c3198894f38b480490e834479611a4053fbf08623/MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169", size = 33038 }, - { url = "https://files.pythonhosted.org/packages/96/0c/620c1fb3661858c0e37eb3cbffd8c6f732a67cd97296f725789679801b31/MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad", size = 16572 }, - { url = "https://files.pythonhosted.org/packages/3f/14/c3554d512d5f9100a95e737502f4a2323a1959f6d0d01e0d0997b35f7b10/MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb", size = 17127 }, - { url = "https://files.pythonhosted.org/packages/0f/31/780bb297db036ba7b7bbede5e1d7f1e14d704ad4beb3ce53fb495d22bc62/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf", size = 18193 }, - { url = "https://files.pythonhosted.org/packages/6c/77/d77701bbef72892affe060cdacb7a2ed7fd68dae3b477a8642f15ad3b132/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2", size = 14073 }, - { url = "https://files.pythonhosted.org/packages/d9/a7/1e558b4f78454c8a3a0199292d96159eb4d091f983bc35ef258314fe7269/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8", size = 26486 }, - { url = "https://files.pythonhosted.org/packages/5f/5a/360da85076688755ea0cceb92472923086993e86b5613bbae9fbc14136b0/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3", size = 25685 }, - { url = "https://files.pythonhosted.org/packages/6a/18/ae5a258e3401f9b8312f92b028c54d7026a97ec3ab20bfaddbdfa7d8cce8/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465", size = 25338 }, - { url = "https://files.pythonhosted.org/packages/0b/cc/48206bd61c5b9d0129f4d75243b156929b04c94c09041321456fd06a876d/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e", size = 30439 }, - { url = "https://files.pythonhosted.org/packages/d1/06/a41c112ab9ffdeeb5f77bc3e331fdadf97fa65e52e44ba31880f4e7f983c/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea", size = 29531 }, - { url = "https://files.pythonhosted.org/packages/02/8c/ab9a463301a50dab04d5472e998acbd4080597abc048166ded5c7aa768c8/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6", size = 29823 }, - { url = "https://files.pythonhosted.org/packages/bc/29/9bc18da763496b055d8e98ce476c8e718dcfd78157e17f555ce6dd7d0895/MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", size = 16658 }, - { url = "https://files.pythonhosted.org/packages/f6/f8/4da07de16f10551ca1f640c92b5f316f9394088b183c6a57183df6de5ae4/MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5", size = 17211 }, - { url = "https://files.pythonhosted.org/packages/0f/31/780bb297db036ba7b7bbede5e1d7f1e14d704ad4beb3ce53fb495d22bc62/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf", size = 18193 }, - { url = "https://files.pythonhosted.org/packages/6c/77/d77701bbef72892affe060cdacb7a2ed7fd68dae3b477a8642f15ad3b132/MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2", size = 14073 }, - { url = "https://files.pythonhosted.org/packages/d9/a7/1e558b4f78454c8a3a0199292d96159eb4d091f983bc35ef258314fe7269/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8", size = 26486 }, - { url = "https://files.pythonhosted.org/packages/5f/5a/360da85076688755ea0cceb92472923086993e86b5613bbae9fbc14136b0/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3", size = 25685 }, - { url = "https://files.pythonhosted.org/packages/6a/18/ae5a258e3401f9b8312f92b028c54d7026a97ec3ab20bfaddbdfa7d8cce8/MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465", size = 25338 }, - { url = "https://files.pythonhosted.org/packages/0b/cc/48206bd61c5b9d0129f4d75243b156929b04c94c09041321456fd06a876d/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e", size = 30439 }, - { url = "https://files.pythonhosted.org/packages/d1/06/a41c112ab9ffdeeb5f77bc3e331fdadf97fa65e52e44ba31880f4e7f983c/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea", size = 29531 }, - { url = "https://files.pythonhosted.org/packages/02/8c/ab9a463301a50dab04d5472e998acbd4080597abc048166ded5c7aa768c8/MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6", size = 29823 }, - { url = "https://files.pythonhosted.org/packages/bc/29/9bc18da763496b055d8e98ce476c8e718dcfd78157e17f555ce6dd7d0895/MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf", size = 16658 }, - { url = "https://files.pythonhosted.org/packages/f6/f8/4da07de16f10551ca1f640c92b5f316f9394088b183c6a57183df6de5ae4/MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5", size = 17211 }, + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload_time = "2024-10-18T15:20:51.44Z" }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393, upload_time = "2024-10-18T15:20:52.426Z" }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732, upload_time = "2024-10-18T15:20:53.578Z" }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866, upload_time = "2024-10-18T15:20:55.06Z" }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964, upload_time = "2024-10-18T15:20:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977, upload_time = "2024-10-18T15:20:57.189Z" }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366, upload_time = "2024-10-18T15:20:58.235Z" }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091, upload_time = "2024-10-18T15:20:59.235Z" }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065, upload_time = "2024-10-18T15:21:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514, upload_time = "2024-10-18T15:21:01.122Z" }, + { url = "https://files.pythonhosted.org/packages/6b/28/bbf83e3f76936960b850435576dd5e67034e200469571be53f69174a2dfd/MarkupSafe-3.0.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d", size = 14353, upload_time = "2024-10-18T15:21:02.187Z" }, + { url = "https://files.pythonhosted.org/packages/6c/30/316d194b093cde57d448a4c3209f22e3046c5bb2fb0820b118292b334be7/MarkupSafe-3.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93", size = 12392, upload_time = "2024-10-18T15:21:02.941Z" }, + { url = "https://files.pythonhosted.org/packages/f2/96/9cdafba8445d3a53cae530aaf83c38ec64c4d5427d975c974084af5bc5d2/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832", size = 23984, upload_time = "2024-10-18T15:21:03.953Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a4/aefb044a2cd8d7334c8a47d3fb2c9f328ac48cb349468cc31c20b539305f/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84", size = 23120, upload_time = "2024-10-18T15:21:06.495Z" }, + { url = "https://files.pythonhosted.org/packages/8d/21/5e4851379f88f3fad1de30361db501300d4f07bcad047d3cb0449fc51f8c/MarkupSafe-3.0.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca", size = 23032, upload_time = "2024-10-18T15:21:07.295Z" }, + { url = "https://files.pythonhosted.org/packages/00/7b/e92c64e079b2d0d7ddf69899c98842f3f9a60a1ae72657c89ce2655c999d/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798", size = 24057, upload_time = "2024-10-18T15:21:08.073Z" }, + { url = "https://files.pythonhosted.org/packages/f9/ac/46f960ca323037caa0a10662ef97d0a4728e890334fc156b9f9e52bcc4ca/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e", size = 23359, upload_time = "2024-10-18T15:21:09.318Z" }, + { url = "https://files.pythonhosted.org/packages/69/84/83439e16197337b8b14b6a5b9c2105fff81d42c2a7c5b58ac7b62ee2c3b1/MarkupSafe-3.0.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4", size = 23306, upload_time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload_time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload_time = "2024-10-18T15:21:12.911Z" }, + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload_time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload_time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload_time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload_time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload_time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload_time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload_time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload_time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload_time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload_time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload_time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload_time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload_time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload_time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload_time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload_time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload_time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload_time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload_time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload_time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload_time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload_time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload_time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload_time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload_time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload_time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload_time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload_time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload_time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload_time = "2024-10-18T15:21:42.784Z" }, + { url = "https://files.pythonhosted.org/packages/a7/ea/9b1530c3fdeeca613faeb0fb5cbcf2389d816072fab72a71b45749ef6062/MarkupSafe-3.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a", size = 14344, upload_time = "2024-10-18T15:21:43.721Z" }, + { url = "https://files.pythonhosted.org/packages/4b/c2/fbdbfe48848e7112ab05e627e718e854d20192b674952d9042ebd8c9e5de/MarkupSafe-3.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff", size = 12389, upload_time = "2024-10-18T15:21:44.666Z" }, + { url = "https://files.pythonhosted.org/packages/f0/25/7a7c6e4dbd4f867d95d94ca15449e91e52856f6ed1905d58ef1de5e211d0/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13", size = 21607, upload_time = "2024-10-18T15:21:45.452Z" }, + { url = "https://files.pythonhosted.org/packages/53/8f/f339c98a178f3c1e545622206b40986a4c3307fe39f70ccd3d9df9a9e425/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144", size = 20728, upload_time = "2024-10-18T15:21:46.295Z" }, + { url = "https://files.pythonhosted.org/packages/1a/03/8496a1a78308456dbd50b23a385c69b41f2e9661c67ea1329849a598a8f9/MarkupSafe-3.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29", size = 20826, upload_time = "2024-10-18T15:21:47.134Z" }, + { url = "https://files.pythonhosted.org/packages/e6/cf/0a490a4bd363048c3022f2f475c8c05582179bb179defcee4766fb3dcc18/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0", size = 21843, upload_time = "2024-10-18T15:21:48.334Z" }, + { url = "https://files.pythonhosted.org/packages/19/a3/34187a78613920dfd3cdf68ef6ce5e99c4f3417f035694074beb8848cd77/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0", size = 21219, upload_time = "2024-10-18T15:21:49.587Z" }, + { url = "https://files.pythonhosted.org/packages/17/d8/5811082f85bb88410ad7e452263af048d685669bbbfb7b595e8689152498/MarkupSafe-3.0.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178", size = 20946, upload_time = "2024-10-18T15:21:50.441Z" }, + { url = "https://files.pythonhosted.org/packages/7c/31/bd635fb5989440d9365c5e3c47556cfea121c7803f5034ac843e8f37c2f2/MarkupSafe-3.0.2-cp39-cp39-win32.whl", hash = "sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f", size = 15063, upload_time = "2024-10-18T15:21:51.385Z" }, + { url = "https://files.pythonhosted.org/packages/b3/73/085399401383ce949f727afec55ec3abd76648d04b9f22e1c0e99cb4bec3/MarkupSafe-3.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a", size = 15506, upload_time = "2024-10-18T15:21:52.974Z" }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, ] [[package]] name = "mmh3" version = "5.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728, upload_time = "2025-01-25T08:39:43.386Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/01/9d06468928661765c0fc248a29580c760a4a53a9c6c52cf72528bae3582e/mmh3-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eaf4ac5c6ee18ca9232238364d7f2a213278ae5ca97897cafaa123fcc7bb8bec", size = 56095 }, - { url = "https://files.pythonhosted.org/packages/e4/d7/7b39307fc9db867b2a9a20c58b0de33b778dd6c55e116af8ea031f1433ba/mmh3-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:48f9aa8ccb9ad1d577a16104834ac44ff640d8de8c0caed09a2300df7ce8460a", size = 40512 }, - { url = "https://files.pythonhosted.org/packages/4f/85/728ca68280d8ccc60c113ad119df70ff1748fbd44c89911fed0501faf0b8/mmh3-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4ba8cac21e1f2d4e436ce03a82a7f87cda80378691f760e9ea55045ec480a3d", size = 40110 }, - { url = "https://files.pythonhosted.org/packages/e4/96/beaf0e301472ffa00358bbbf771fe2d9c4d709a2fe30b1d929e569f8cbdf/mmh3-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69281c281cb01994f054d862a6bb02a2e7acfe64917795c58934b0872b9ece4", size = 100151 }, - { url = "https://files.pythonhosted.org/packages/c3/ee/9381f825c4e09ffafeffa213c3865c4bf7d39771640de33ab16f6faeb854/mmh3-5.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d05ed3962312fbda2a1589b97359d2467f677166952f6bd410d8c916a55febf", size = 106312 }, - { url = "https://files.pythonhosted.org/packages/67/dc/350a54bea5cf397d357534198ab8119cfd0d8e8bad623b520f9c290af985/mmh3-5.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78ae6a03f4cff4aa92ddd690611168856f8c33a141bd3e5a1e0a85521dc21ea0", size = 104232 }, - { url = "https://files.pythonhosted.org/packages/b2/5d/2c6eb4a4ec2f7293b98a9c07cb8c64668330b46ff2b6511244339e69a7af/mmh3-5.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95f983535b39795d9fb7336438faae117424c6798f763d67c6624f6caf2c4c01", size = 91663 }, - { url = "https://files.pythonhosted.org/packages/f1/ac/17030d24196f73ecbab8b5033591e5e0e2beca103181a843a135c78f4fee/mmh3-5.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d46fdd80d4c7ecadd9faa6181e92ccc6fe91c50991c9af0e371fdf8b8a7a6150", size = 99166 }, - { url = "https://files.pythonhosted.org/packages/b9/ed/54ddc56603561a10b33da9b12e95a48a271d126f4a4951841bbd13145ebf/mmh3-5.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0f16e976af7365ea3b5c425124b2a7f0147eed97fdbb36d99857f173c8d8e096", size = 101555 }, - { url = "https://files.pythonhosted.org/packages/1c/c3/33fb3a940c9b70908a5cc9fcc26534aff8698180f9f63ab6b7cc74da8bcd/mmh3-5.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6fa97f7d1e1f74ad1565127229d510f3fd65d931fdedd707c1e15100bc9e5ebb", size = 94813 }, - { url = "https://files.pythonhosted.org/packages/61/88/c9ff76a23abe34db8eee1a6fa4e449462a16c7eb547546fc5594b0860a72/mmh3-5.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4052fa4a8561bd62648e9eb993c8f3af3bdedadf3d9687aa4770d10e3709a80c", size = 109611 }, - { url = "https://files.pythonhosted.org/packages/0b/8e/27d04f40e95554ebe782cac7bddda2d158cf3862387298c9c7b254fa7beb/mmh3-5.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3f0e8ae9f961037f812afe3cce7da57abf734285961fffbeff9a4c011b737732", size = 100515 }, - { url = "https://files.pythonhosted.org/packages/7b/00/504ca8f462f01048f3c87cd93f2e1f60b93dac2f930cd4ed73532a9337f5/mmh3-5.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99297f207db967814f1f02135bb7fe7628b9eacb046134a34e1015b26b06edce", size = 100177 }, - { url = "https://files.pythonhosted.org/packages/6f/1d/2efc3525fe6fdf8865972fcbb884bd1f4b0f923c19b80891cecf7e239fa5/mmh3-5.1.0-cp310-cp310-win32.whl", hash = "sha256:2e6c8dc3631a5e22007fbdb55e993b2dbce7985c14b25b572dd78403c2e79182", size = 40815 }, - { url = "https://files.pythonhosted.org/packages/38/b5/c8fbe707cb0fea77a6d2d58d497bc9b67aff80deb84d20feb34d8fdd8671/mmh3-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:e4e8c7ad5a4dddcfde35fd28ef96744c1ee0f9d9570108aa5f7e77cf9cfdf0bf", size = 41479 }, - { url = "https://files.pythonhosted.org/packages/a1/f1/663e16134f913fccfbcea5b300fb7dc1860d8f63dc71867b013eebc10aec/mmh3-5.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:45da549269883208912868a07d0364e1418d8292c4259ca11699ba1b2475bd26", size = 38883 }, - { url = "https://files.pythonhosted.org/packages/a1/01/9d06468928661765c0fc248a29580c760a4a53a9c6c52cf72528bae3582e/mmh3-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eaf4ac5c6ee18ca9232238364d7f2a213278ae5ca97897cafaa123fcc7bb8bec", size = 56095 }, - { url = "https://files.pythonhosted.org/packages/e4/d7/7b39307fc9db867b2a9a20c58b0de33b778dd6c55e116af8ea031f1433ba/mmh3-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:48f9aa8ccb9ad1d577a16104834ac44ff640d8de8c0caed09a2300df7ce8460a", size = 40512 }, - { url = "https://files.pythonhosted.org/packages/4f/85/728ca68280d8ccc60c113ad119df70ff1748fbd44c89911fed0501faf0b8/mmh3-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4ba8cac21e1f2d4e436ce03a82a7f87cda80378691f760e9ea55045ec480a3d", size = 40110 }, - { url = "https://files.pythonhosted.org/packages/e4/96/beaf0e301472ffa00358bbbf771fe2d9c4d709a2fe30b1d929e569f8cbdf/mmh3-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69281c281cb01994f054d862a6bb02a2e7acfe64917795c58934b0872b9ece4", size = 100151 }, - { url = "https://files.pythonhosted.org/packages/c3/ee/9381f825c4e09ffafeffa213c3865c4bf7d39771640de33ab16f6faeb854/mmh3-5.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d05ed3962312fbda2a1589b97359d2467f677166952f6bd410d8c916a55febf", size = 106312 }, - { url = "https://files.pythonhosted.org/packages/67/dc/350a54bea5cf397d357534198ab8119cfd0d8e8bad623b520f9c290af985/mmh3-5.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78ae6a03f4cff4aa92ddd690611168856f8c33a141bd3e5a1e0a85521dc21ea0", size = 104232 }, - { url = "https://files.pythonhosted.org/packages/b2/5d/2c6eb4a4ec2f7293b98a9c07cb8c64668330b46ff2b6511244339e69a7af/mmh3-5.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95f983535b39795d9fb7336438faae117424c6798f763d67c6624f6caf2c4c01", size = 91663 }, - { url = "https://files.pythonhosted.org/packages/f1/ac/17030d24196f73ecbab8b5033591e5e0e2beca103181a843a135c78f4fee/mmh3-5.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d46fdd80d4c7ecadd9faa6181e92ccc6fe91c50991c9af0e371fdf8b8a7a6150", size = 99166 }, - { url = "https://files.pythonhosted.org/packages/b9/ed/54ddc56603561a10b33da9b12e95a48a271d126f4a4951841bbd13145ebf/mmh3-5.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0f16e976af7365ea3b5c425124b2a7f0147eed97fdbb36d99857f173c8d8e096", size = 101555 }, - { url = "https://files.pythonhosted.org/packages/1c/c3/33fb3a940c9b70908a5cc9fcc26534aff8698180f9f63ab6b7cc74da8bcd/mmh3-5.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6fa97f7d1e1f74ad1565127229d510f3fd65d931fdedd707c1e15100bc9e5ebb", size = 94813 }, - { url = "https://files.pythonhosted.org/packages/61/88/c9ff76a23abe34db8eee1a6fa4e449462a16c7eb547546fc5594b0860a72/mmh3-5.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4052fa4a8561bd62648e9eb993c8f3af3bdedadf3d9687aa4770d10e3709a80c", size = 109611 }, - { url = "https://files.pythonhosted.org/packages/0b/8e/27d04f40e95554ebe782cac7bddda2d158cf3862387298c9c7b254fa7beb/mmh3-5.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3f0e8ae9f961037f812afe3cce7da57abf734285961fffbeff9a4c011b737732", size = 100515 }, - { url = "https://files.pythonhosted.org/packages/7b/00/504ca8f462f01048f3c87cd93f2e1f60b93dac2f930cd4ed73532a9337f5/mmh3-5.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99297f207db967814f1f02135bb7fe7628b9eacb046134a34e1015b26b06edce", size = 100177 }, - { url = "https://files.pythonhosted.org/packages/6f/1d/2efc3525fe6fdf8865972fcbb884bd1f4b0f923c19b80891cecf7e239fa5/mmh3-5.1.0-cp310-cp310-win32.whl", hash = "sha256:2e6c8dc3631a5e22007fbdb55e993b2dbce7985c14b25b572dd78403c2e79182", size = 40815 }, - { url = "https://files.pythonhosted.org/packages/38/b5/c8fbe707cb0fea77a6d2d58d497bc9b67aff80deb84d20feb34d8fdd8671/mmh3-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:e4e8c7ad5a4dddcfde35fd28ef96744c1ee0f9d9570108aa5f7e77cf9cfdf0bf", size = 41479 }, - { url = "https://files.pythonhosted.org/packages/a1/f1/663e16134f913fccfbcea5b300fb7dc1860d8f63dc71867b013eebc10aec/mmh3-5.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:45da549269883208912868a07d0364e1418d8292c4259ca11699ba1b2475bd26", size = 38883 }, - { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, - { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, - { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, - { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632 }, - { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884 }, - { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835 }, - { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688 }, - { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569 }, - { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483 }, - { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496 }, - { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109 }, - { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231 }, - { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548 }, - { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810 }, - { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476 }, - { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880 }, - { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, - { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, - { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, - { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, - { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, - { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, - { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, - { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, - { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, - { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, - { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, - { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, - { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, - { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, - { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, - { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, - { url = "https://files.pythonhosted.org/packages/05/06/a098a42870db16c0a54a82c56a5bdc873de3165218cd5b3ca59dbc0d31a7/mmh3-5.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a523899ca29cfb8a5239618474a435f3d892b22004b91779fcb83504c0d5b8c", size = 56165 }, - { url = "https://files.pythonhosted.org/packages/5a/65/eaada79a67fde1f43e1156d9630e2fb70655e1d3f4e8f33d7ffa31eeacfd/mmh3-5.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:17cef2c3a6ca2391ca7171a35ed574b5dab8398163129a3e3a4c05ab85a4ff40", size = 40569 }, - { url = "https://files.pythonhosted.org/packages/36/7e/2b6c43ed48be583acd68e34d16f19209a9f210e4669421b0321e326d8554/mmh3-5.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:52e12895b30110f3d89dae59a888683cc886ed0472dd2eca77497edef6161997", size = 40104 }, - { url = "https://files.pythonhosted.org/packages/11/2b/1f9e962fdde8e41b0f43d22c8ba719588de8952f9376df7d73a434827590/mmh3-5.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0d6719045cda75c3f40397fc24ab67b18e0cb8f69d3429ab4c39763c4c608dd", size = 102497 }, - { url = "https://files.pythonhosted.org/packages/46/94/d6c5c3465387ba077cccdc028ab3eec0d86eed1eebe60dcf4d15294056be/mmh3-5.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d19fa07d303a91f8858982c37e6939834cb11893cb3ff20e6ee6fa2a7563826a", size = 108834 }, - { url = "https://files.pythonhosted.org/packages/34/1e/92c212bb81796b69dddfd50a8a8f4b26ab0d38fdaf1d3e8628a67850543b/mmh3-5.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31b47a620d622fbde8ca1ca0435c5d25de0ac57ab507209245e918128e38e676", size = 106936 }, - { url = "https://files.pythonhosted.org/packages/f4/41/f2f494bbff3aad5ffd2085506255049de76cde51ddac84058e32768acc79/mmh3-5.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00f810647c22c179b6821079f7aa306d51953ac893587ee09cf1afb35adf87cb", size = 93709 }, - { url = "https://files.pythonhosted.org/packages/9e/a9/a2cc4a756d73d9edf4fb85c76e16fd56b0300f8120fd760c76b28f457730/mmh3-5.1.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6128b610b577eed1e89ac7177ab0c33d06ade2aba93f5c89306032306b5f1c6", size = 101623 }, - { url = "https://files.pythonhosted.org/packages/5e/6f/b9d735533b6a56b2d56333ff89be6a55ac08ba7ff33465feb131992e33eb/mmh3-5.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1e550a45d2ff87a1c11b42015107f1778c93f4c6f8e731bf1b8fa770321b8cc4", size = 98521 }, - { url = "https://files.pythonhosted.org/packages/99/47/dff2b54fac0d421c1e6ecbd2d9c85b2d0e6f6ee0d10b115d9364116a511e/mmh3-5.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:785ae09276342f79fd8092633e2d52c0f7c44d56e8cfda8274ccc9b76612dba2", size = 96696 }, - { url = "https://files.pythonhosted.org/packages/be/43/9e205310f47c43ddf1575bb3a1769c36688f30f1ac105e0f0c878a29d2cd/mmh3-5.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0f4be3703a867ef976434afd3661a33884abe73ceb4ee436cac49d3b4c2aaa7b", size = 105234 }, - { url = "https://files.pythonhosted.org/packages/6b/44/90b11fd2b67dcb513f5bfe9b476eb6ca2d5a221c79b49884dc859100905e/mmh3-5.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e513983830c4ff1f205ab97152a0050cf7164f1b4783d702256d39c637b9d107", size = 98449 }, - { url = "https://files.pythonhosted.org/packages/f0/d0/25c4b0c7b8e49836541059b28e034a4cccd0936202800d43a1cc48495ecb/mmh3-5.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9135c300535c828c0bae311b659f33a31c941572eae278568d1a953c4a57b59", size = 97796 }, - { url = "https://files.pythonhosted.org/packages/23/fa/cbbb7fcd0e287a715f1cd28a10de94c0535bd94164e38b852abc18da28c6/mmh3-5.1.0-cp313-cp313-win32.whl", hash = "sha256:c65dbd12885a5598b70140d24de5839551af5a99b29f9804bb2484b29ef07692", size = 40828 }, - { url = "https://files.pythonhosted.org/packages/09/33/9fb90ef822f7b734955a63851907cf72f8a3f9d8eb3c5706bfa6772a2a77/mmh3-5.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:10db7765201fc65003fa998faa067417ef6283eb5f9bba8f323c48fd9c33e91f", size = 41504 }, - { url = "https://files.pythonhosted.org/packages/16/71/4ad9a42f2772793a03cb698f0fc42499f04e6e8d2560ba2f7da0fb059a8e/mmh3-5.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:b22fe2e54be81f6c07dcb36b96fa250fb72effe08aa52fbb83eade6e1e2d5fd7", size = 38890 }, - { url = "https://files.pythonhosted.org/packages/44/e8/65dae27ee37a8b00bb580cebe62e79e0901f7e06210fd5cf900da1751a50/mmh3-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:166b67749a1d8c93b06f5e90576f1ba838a65c8e79f28ffd9dfafba7c7d0a084", size = 56106 }, - { url = "https://files.pythonhosted.org/packages/73/03/f6c27e317c52f8f12faa2f9fd237f27f50fc7bcd9b862d3d7101932319a5/mmh3-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:adba83c7ba5cc8ea201ee1e235f8413a68e7f7b8a657d582cc6c6c9d73f2830e", size = 40515 }, - { url = "https://files.pythonhosted.org/packages/4c/4d/83927efc3ff223c564d6b2686880ef5087b6215bbfc1b73fcb7a1e0d12ed/mmh3-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a61f434736106804eb0b1612d503c4e6eb22ba31b16e6a2f987473de4226fa55", size = 40108 }, - { url = "https://files.pythonhosted.org/packages/47/c6/f0e33468cc00729cb4019176288ed1506632dce12ee7a842f1c78d1f2c93/mmh3-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba9ce59816b30866093f048b3312c2204ff59806d3a02adee71ff7bd22b87554", size = 99892 }, - { url = "https://files.pythonhosted.org/packages/22/16/73e25fc16b17acc0de604a28c716407728777c4d52dae72a0e505e32d281/mmh3-5.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd51597bef1e503363b05cb579db09269e6e6c39d419486626b255048daf545b", size = 106054 }, - { url = "https://files.pythonhosted.org/packages/4f/f3/f9c5e4051e8ab54fd92717906f998f7161bfd3440bcea1b6f84e956e168a/mmh3-5.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d51a1ed642d3fb37b8f4cab966811c52eb246c3e1740985f701ef5ad4cdd2145", size = 104004 }, - { url = "https://files.pythonhosted.org/packages/e1/18/6452be7e21f792f69e83854bc71fa4443816a6f8e909374a547f2eccdd44/mmh3-5.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:709bfe81c53bf8a3609efcbd65c72305ade60944f66138f697eefc1a86b6e356", size = 91420 }, - { url = "https://files.pythonhosted.org/packages/66/59/7e16f10ee38f56bb0890d4da2c5bf1bfd77b15ea8e91244eeebdcfc84077/mmh3-5.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e01a9b0092b6f82e861137c8e9bb9899375125b24012eb5219e61708be320032", size = 98910 }, - { url = "https://files.pythonhosted.org/packages/cb/78/f247daea100fb9f4a7aad3fb01aa6e258de12fc594f37415c8dc22d8bd71/mmh3-5.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:27e46a2c13c9a805e03c9ec7de0ca8e096794688ab2125bdce4229daf60c4a56", size = 101325 }, - { url = "https://files.pythonhosted.org/packages/6e/d6/07ac481d91dc4659c9c556a326e4349d08331b5713a1ac11bf7b063c6bdc/mmh3-5.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5766299c1d26f6bfd0a638e070bd17dbd98d4ccb067d64db3745bf178e700ef0", size = 94625 }, - { url = "https://files.pythonhosted.org/packages/ff/3a/118c058b05f2396e3c4077183ad8f5d0e0a508c28eaae57b08d6c49a0754/mmh3-5.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:7785205e3e4443fdcbb73766798c7647f94c2f538b90f666688f3e757546069e", size = 109398 }, - { url = "https://files.pythonhosted.org/packages/8d/d5/accc9372f70e15db8e8e203940b25ac409e061460cd6f96aab6066bb66a6/mmh3-5.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:8e574fbd39afb433b3ab95683b1b4bf18313dc46456fc9daaddc2693c19ca565", size = 100319 }, - { url = "https://files.pythonhosted.org/packages/bb/98/e157770077a19322483a1ab661fce14b6489bca8da49bd6fece98918c845/mmh3-5.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1b6727a5a20e32cbf605743749f3862abe5f5e097cbf2afc7be5aafd32a549ae", size = 99946 }, - { url = "https://files.pythonhosted.org/packages/6d/65/9b5b506e8a88386316d9cff0c4b155262200d1ec95cad6d4287ec240a7fd/mmh3-5.1.0-cp39-cp39-win32.whl", hash = "sha256:d6eaa711d4b9220fe5252032a44bf68e5dcfb7b21745a96efc9e769b0dd57ec2", size = 40823 }, - { url = "https://files.pythonhosted.org/packages/bd/67/c4468b21d9d219e0d64708c07936666968c88d92e3542cfb6c47ce06768b/mmh3-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:49d444913f6c02980e5241a53fe9af2338f2043d6ce5b6f5ea7d302c52c604ac", size = 41481 }, - { url = "https://files.pythonhosted.org/packages/20/bb/cb97418e487632eb1f6fb0f2fa86adbeec102cbf6bfa4ebfc10a8889da2c/mmh3-5.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:0daaeaedd78773b70378f2413c7d6b10239a75d955d30d54f460fb25d599942d", size = 38870 }, - { url = "https://files.pythonhosted.org/packages/44/e8/65dae27ee37a8b00bb580cebe62e79e0901f7e06210fd5cf900da1751a50/mmh3-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:166b67749a1d8c93b06f5e90576f1ba838a65c8e79f28ffd9dfafba7c7d0a084", size = 56106 }, - { url = "https://files.pythonhosted.org/packages/73/03/f6c27e317c52f8f12faa2f9fd237f27f50fc7bcd9b862d3d7101932319a5/mmh3-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:adba83c7ba5cc8ea201ee1e235f8413a68e7f7b8a657d582cc6c6c9d73f2830e", size = 40515 }, - { url = "https://files.pythonhosted.org/packages/4c/4d/83927efc3ff223c564d6b2686880ef5087b6215bbfc1b73fcb7a1e0d12ed/mmh3-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a61f434736106804eb0b1612d503c4e6eb22ba31b16e6a2f987473de4226fa55", size = 40108 }, - { url = "https://files.pythonhosted.org/packages/47/c6/f0e33468cc00729cb4019176288ed1506632dce12ee7a842f1c78d1f2c93/mmh3-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba9ce59816b30866093f048b3312c2204ff59806d3a02adee71ff7bd22b87554", size = 99892 }, - { url = "https://files.pythonhosted.org/packages/22/16/73e25fc16b17acc0de604a28c716407728777c4d52dae72a0e505e32d281/mmh3-5.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd51597bef1e503363b05cb579db09269e6e6c39d419486626b255048daf545b", size = 106054 }, - { url = "https://files.pythonhosted.org/packages/4f/f3/f9c5e4051e8ab54fd92717906f998f7161bfd3440bcea1b6f84e956e168a/mmh3-5.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d51a1ed642d3fb37b8f4cab966811c52eb246c3e1740985f701ef5ad4cdd2145", size = 104004 }, - { url = "https://files.pythonhosted.org/packages/e1/18/6452be7e21f792f69e83854bc71fa4443816a6f8e909374a547f2eccdd44/mmh3-5.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:709bfe81c53bf8a3609efcbd65c72305ade60944f66138f697eefc1a86b6e356", size = 91420 }, - { url = "https://files.pythonhosted.org/packages/66/59/7e16f10ee38f56bb0890d4da2c5bf1bfd77b15ea8e91244eeebdcfc84077/mmh3-5.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e01a9b0092b6f82e861137c8e9bb9899375125b24012eb5219e61708be320032", size = 98910 }, - { url = "https://files.pythonhosted.org/packages/cb/78/f247daea100fb9f4a7aad3fb01aa6e258de12fc594f37415c8dc22d8bd71/mmh3-5.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:27e46a2c13c9a805e03c9ec7de0ca8e096794688ab2125bdce4229daf60c4a56", size = 101325 }, - { url = "https://files.pythonhosted.org/packages/6e/d6/07ac481d91dc4659c9c556a326e4349d08331b5713a1ac11bf7b063c6bdc/mmh3-5.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5766299c1d26f6bfd0a638e070bd17dbd98d4ccb067d64db3745bf178e700ef0", size = 94625 }, - { url = "https://files.pythonhosted.org/packages/ff/3a/118c058b05f2396e3c4077183ad8f5d0e0a508c28eaae57b08d6c49a0754/mmh3-5.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:7785205e3e4443fdcbb73766798c7647f94c2f538b90f666688f3e757546069e", size = 109398 }, - { url = "https://files.pythonhosted.org/packages/8d/d5/accc9372f70e15db8e8e203940b25ac409e061460cd6f96aab6066bb66a6/mmh3-5.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:8e574fbd39afb433b3ab95683b1b4bf18313dc46456fc9daaddc2693c19ca565", size = 100319 }, - { url = "https://files.pythonhosted.org/packages/bb/98/e157770077a19322483a1ab661fce14b6489bca8da49bd6fece98918c845/mmh3-5.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1b6727a5a20e32cbf605743749f3862abe5f5e097cbf2afc7be5aafd32a549ae", size = 99946 }, - { url = "https://files.pythonhosted.org/packages/6d/65/9b5b506e8a88386316d9cff0c4b155262200d1ec95cad6d4287ec240a7fd/mmh3-5.1.0-cp39-cp39-win32.whl", hash = "sha256:d6eaa711d4b9220fe5252032a44bf68e5dcfb7b21745a96efc9e769b0dd57ec2", size = 40823 }, - { url = "https://files.pythonhosted.org/packages/bd/67/c4468b21d9d219e0d64708c07936666968c88d92e3542cfb6c47ce06768b/mmh3-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:49d444913f6c02980e5241a53fe9af2338f2043d6ce5b6f5ea7d302c52c604ac", size = 41481 }, - { url = "https://files.pythonhosted.org/packages/20/bb/cb97418e487632eb1f6fb0f2fa86adbeec102cbf6bfa4ebfc10a8889da2c/mmh3-5.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:0daaeaedd78773b70378f2413c7d6b10239a75d955d30d54f460fb25d599942d", size = 38870 }, + { url = "https://files.pythonhosted.org/packages/a1/01/9d06468928661765c0fc248a29580c760a4a53a9c6c52cf72528bae3582e/mmh3-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eaf4ac5c6ee18ca9232238364d7f2a213278ae5ca97897cafaa123fcc7bb8bec", size = 56095, upload_time = "2025-01-25T08:37:53.621Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/7b39307fc9db867b2a9a20c58b0de33b778dd6c55e116af8ea031f1433ba/mmh3-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:48f9aa8ccb9ad1d577a16104834ac44ff640d8de8c0caed09a2300df7ce8460a", size = 40512, upload_time = "2025-01-25T08:37:54.972Z" }, + { url = "https://files.pythonhosted.org/packages/4f/85/728ca68280d8ccc60c113ad119df70ff1748fbd44c89911fed0501faf0b8/mmh3-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4ba8cac21e1f2d4e436ce03a82a7f87cda80378691f760e9ea55045ec480a3d", size = 40110, upload_time = "2025-01-25T08:37:57.86Z" }, + { url = "https://files.pythonhosted.org/packages/e4/96/beaf0e301472ffa00358bbbf771fe2d9c4d709a2fe30b1d929e569f8cbdf/mmh3-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69281c281cb01994f054d862a6bb02a2e7acfe64917795c58934b0872b9ece4", size = 100151, upload_time = "2025-01-25T08:37:59.609Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ee/9381f825c4e09ffafeffa213c3865c4bf7d39771640de33ab16f6faeb854/mmh3-5.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d05ed3962312fbda2a1589b97359d2467f677166952f6bd410d8c916a55febf", size = 106312, upload_time = "2025-01-25T08:38:02.102Z" }, + { url = "https://files.pythonhosted.org/packages/67/dc/350a54bea5cf397d357534198ab8119cfd0d8e8bad623b520f9c290af985/mmh3-5.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78ae6a03f4cff4aa92ddd690611168856f8c33a141bd3e5a1e0a85521dc21ea0", size = 104232, upload_time = "2025-01-25T08:38:03.852Z" }, + { url = "https://files.pythonhosted.org/packages/b2/5d/2c6eb4a4ec2f7293b98a9c07cb8c64668330b46ff2b6511244339e69a7af/mmh3-5.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95f983535b39795d9fb7336438faae117424c6798f763d67c6624f6caf2c4c01", size = 91663, upload_time = "2025-01-25T08:38:06.24Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ac/17030d24196f73ecbab8b5033591e5e0e2beca103181a843a135c78f4fee/mmh3-5.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d46fdd80d4c7ecadd9faa6181e92ccc6fe91c50991c9af0e371fdf8b8a7a6150", size = 99166, upload_time = "2025-01-25T08:38:07.988Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ed/54ddc56603561a10b33da9b12e95a48a271d126f4a4951841bbd13145ebf/mmh3-5.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0f16e976af7365ea3b5c425124b2a7f0147eed97fdbb36d99857f173c8d8e096", size = 101555, upload_time = "2025-01-25T08:38:09.821Z" }, + { url = "https://files.pythonhosted.org/packages/1c/c3/33fb3a940c9b70908a5cc9fcc26534aff8698180f9f63ab6b7cc74da8bcd/mmh3-5.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6fa97f7d1e1f74ad1565127229d510f3fd65d931fdedd707c1e15100bc9e5ebb", size = 94813, upload_time = "2025-01-25T08:38:11.682Z" }, + { url = "https://files.pythonhosted.org/packages/61/88/c9ff76a23abe34db8eee1a6fa4e449462a16c7eb547546fc5594b0860a72/mmh3-5.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4052fa4a8561bd62648e9eb993c8f3af3bdedadf3d9687aa4770d10e3709a80c", size = 109611, upload_time = "2025-01-25T08:38:12.602Z" }, + { url = "https://files.pythonhosted.org/packages/0b/8e/27d04f40e95554ebe782cac7bddda2d158cf3862387298c9c7b254fa7beb/mmh3-5.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3f0e8ae9f961037f812afe3cce7da57abf734285961fffbeff9a4c011b737732", size = 100515, upload_time = "2025-01-25T08:38:16.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/00/504ca8f462f01048f3c87cd93f2e1f60b93dac2f930cd4ed73532a9337f5/mmh3-5.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99297f207db967814f1f02135bb7fe7628b9eacb046134a34e1015b26b06edce", size = 100177, upload_time = "2025-01-25T08:38:18.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/1d/2efc3525fe6fdf8865972fcbb884bd1f4b0f923c19b80891cecf7e239fa5/mmh3-5.1.0-cp310-cp310-win32.whl", hash = "sha256:2e6c8dc3631a5e22007fbdb55e993b2dbce7985c14b25b572dd78403c2e79182", size = 40815, upload_time = "2025-01-25T08:38:19.176Z" }, + { url = "https://files.pythonhosted.org/packages/38/b5/c8fbe707cb0fea77a6d2d58d497bc9b67aff80deb84d20feb34d8fdd8671/mmh3-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:e4e8c7ad5a4dddcfde35fd28ef96744c1ee0f9d9570108aa5f7e77cf9cfdf0bf", size = 41479, upload_time = "2025-01-25T08:38:21.098Z" }, + { url = "https://files.pythonhosted.org/packages/a1/f1/663e16134f913fccfbcea5b300fb7dc1860d8f63dc71867b013eebc10aec/mmh3-5.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:45da549269883208912868a07d0364e1418d8292c4259ca11699ba1b2475bd26", size = 38883, upload_time = "2025-01-25T08:38:22.013Z" }, + { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098, upload_time = "2025-01-25T08:38:22.917Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513, upload_time = "2025-01-25T08:38:25.079Z" }, + { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112, upload_time = "2025-01-25T08:38:25.947Z" }, + { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632, upload_time = "2025-01-25T08:38:26.939Z" }, + { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884, upload_time = "2025-01-25T08:38:29.159Z" }, + { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835, upload_time = "2025-01-25T08:38:33.04Z" }, + { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688, upload_time = "2025-01-25T08:38:34.987Z" }, + { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569, upload_time = "2025-01-25T08:38:35.983Z" }, + { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483, upload_time = "2025-01-25T08:38:38.198Z" }, + { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496, upload_time = "2025-01-25T08:38:39.257Z" }, + { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109, upload_time = "2025-01-25T08:38:40.395Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231, upload_time = "2025-01-25T08:38:42.141Z" }, + { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548, upload_time = "2025-01-25T08:38:43.402Z" }, + { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810, upload_time = "2025-01-25T08:38:45.143Z" }, + { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476, upload_time = "2025-01-25T08:38:46.029Z" }, + { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880, upload_time = "2025-01-25T08:38:47.035Z" }, + { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152, upload_time = "2025-01-25T08:38:47.902Z" }, + { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564, upload_time = "2025-01-25T08:38:48.839Z" }, + { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104, upload_time = "2025-01-25T08:38:49.773Z" }, + { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634, upload_time = "2025-01-25T08:38:51.5Z" }, + { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888, upload_time = "2025-01-25T08:38:52.542Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968, upload_time = "2025-01-25T08:38:54.286Z" }, + { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771, upload_time = "2025-01-25T08:38:55.576Z" }, + { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726, upload_time = "2025-01-25T08:38:56.654Z" }, + { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523, upload_time = "2025-01-25T08:38:57.662Z" }, + { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628, upload_time = "2025-01-25T08:38:59.505Z" }, + { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190, upload_time = "2025-01-25T08:39:00.483Z" }, + { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439, upload_time = "2025-01-25T08:39:01.484Z" }, + { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780, upload_time = "2025-01-25T08:39:02.444Z" }, + { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835, upload_time = "2025-01-25T08:39:03.369Z" }, + { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509, upload_time = "2025-01-25T08:39:04.284Z" }, + { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888, upload_time = "2025-01-25T08:39:05.174Z" }, + { url = "https://files.pythonhosted.org/packages/05/06/a098a42870db16c0a54a82c56a5bdc873de3165218cd5b3ca59dbc0d31a7/mmh3-5.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a523899ca29cfb8a5239618474a435f3d892b22004b91779fcb83504c0d5b8c", size = 56165, upload_time = "2025-01-25T08:39:06.887Z" }, + { url = "https://files.pythonhosted.org/packages/5a/65/eaada79a67fde1f43e1156d9630e2fb70655e1d3f4e8f33d7ffa31eeacfd/mmh3-5.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:17cef2c3a6ca2391ca7171a35ed574b5dab8398163129a3e3a4c05ab85a4ff40", size = 40569, upload_time = "2025-01-25T08:39:07.945Z" }, + { url = "https://files.pythonhosted.org/packages/36/7e/2b6c43ed48be583acd68e34d16f19209a9f210e4669421b0321e326d8554/mmh3-5.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:52e12895b30110f3d89dae59a888683cc886ed0472dd2eca77497edef6161997", size = 40104, upload_time = "2025-01-25T08:39:09.598Z" }, + { url = "https://files.pythonhosted.org/packages/11/2b/1f9e962fdde8e41b0f43d22c8ba719588de8952f9376df7d73a434827590/mmh3-5.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0d6719045cda75c3f40397fc24ab67b18e0cb8f69d3429ab4c39763c4c608dd", size = 102497, upload_time = "2025-01-25T08:39:10.512Z" }, + { url = "https://files.pythonhosted.org/packages/46/94/d6c5c3465387ba077cccdc028ab3eec0d86eed1eebe60dcf4d15294056be/mmh3-5.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d19fa07d303a91f8858982c37e6939834cb11893cb3ff20e6ee6fa2a7563826a", size = 108834, upload_time = "2025-01-25T08:39:11.568Z" }, + { url = "https://files.pythonhosted.org/packages/34/1e/92c212bb81796b69dddfd50a8a8f4b26ab0d38fdaf1d3e8628a67850543b/mmh3-5.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31b47a620d622fbde8ca1ca0435c5d25de0ac57ab507209245e918128e38e676", size = 106936, upload_time = "2025-01-25T08:39:12.638Z" }, + { url = "https://files.pythonhosted.org/packages/f4/41/f2f494bbff3aad5ffd2085506255049de76cde51ddac84058e32768acc79/mmh3-5.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00f810647c22c179b6821079f7aa306d51953ac893587ee09cf1afb35adf87cb", size = 93709, upload_time = "2025-01-25T08:39:14.071Z" }, + { url = "https://files.pythonhosted.org/packages/9e/a9/a2cc4a756d73d9edf4fb85c76e16fd56b0300f8120fd760c76b28f457730/mmh3-5.1.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6128b610b577eed1e89ac7177ab0c33d06ade2aba93f5c89306032306b5f1c6", size = 101623, upload_time = "2025-01-25T08:39:15.507Z" }, + { url = "https://files.pythonhosted.org/packages/5e/6f/b9d735533b6a56b2d56333ff89be6a55ac08ba7ff33465feb131992e33eb/mmh3-5.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1e550a45d2ff87a1c11b42015107f1778c93f4c6f8e731bf1b8fa770321b8cc4", size = 98521, upload_time = "2025-01-25T08:39:16.77Z" }, + { url = "https://files.pythonhosted.org/packages/99/47/dff2b54fac0d421c1e6ecbd2d9c85b2d0e6f6ee0d10b115d9364116a511e/mmh3-5.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:785ae09276342f79fd8092633e2d52c0f7c44d56e8cfda8274ccc9b76612dba2", size = 96696, upload_time = "2025-01-25T08:39:17.805Z" }, + { url = "https://files.pythonhosted.org/packages/be/43/9e205310f47c43ddf1575bb3a1769c36688f30f1ac105e0f0c878a29d2cd/mmh3-5.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0f4be3703a867ef976434afd3661a33884abe73ceb4ee436cac49d3b4c2aaa7b", size = 105234, upload_time = "2025-01-25T08:39:18.908Z" }, + { url = "https://files.pythonhosted.org/packages/6b/44/90b11fd2b67dcb513f5bfe9b476eb6ca2d5a221c79b49884dc859100905e/mmh3-5.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e513983830c4ff1f205ab97152a0050cf7164f1b4783d702256d39c637b9d107", size = 98449, upload_time = "2025-01-25T08:39:20.719Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d0/25c4b0c7b8e49836541059b28e034a4cccd0936202800d43a1cc48495ecb/mmh3-5.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9135c300535c828c0bae311b659f33a31c941572eae278568d1a953c4a57b59", size = 97796, upload_time = "2025-01-25T08:39:22.453Z" }, + { url = "https://files.pythonhosted.org/packages/23/fa/cbbb7fcd0e287a715f1cd28a10de94c0535bd94164e38b852abc18da28c6/mmh3-5.1.0-cp313-cp313-win32.whl", hash = "sha256:c65dbd12885a5598b70140d24de5839551af5a99b29f9804bb2484b29ef07692", size = 40828, upload_time = "2025-01-25T08:39:23.372Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/9fb90ef822f7b734955a63851907cf72f8a3f9d8eb3c5706bfa6772a2a77/mmh3-5.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:10db7765201fc65003fa998faa067417ef6283eb5f9bba8f323c48fd9c33e91f", size = 41504, upload_time = "2025-01-25T08:39:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/16/71/4ad9a42f2772793a03cb698f0fc42499f04e6e8d2560ba2f7da0fb059a8e/mmh3-5.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:b22fe2e54be81f6c07dcb36b96fa250fb72effe08aa52fbb83eade6e1e2d5fd7", size = 38890, upload_time = "2025-01-25T08:39:25.28Z" }, + { url = "https://files.pythonhosted.org/packages/44/e8/65dae27ee37a8b00bb580cebe62e79e0901f7e06210fd5cf900da1751a50/mmh3-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:166b67749a1d8c93b06f5e90576f1ba838a65c8e79f28ffd9dfafba7c7d0a084", size = 56106, upload_time = "2025-01-25T08:39:26.287Z" }, + { url = "https://files.pythonhosted.org/packages/73/03/f6c27e317c52f8f12faa2f9fd237f27f50fc7bcd9b862d3d7101932319a5/mmh3-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:adba83c7ba5cc8ea201ee1e235f8413a68e7f7b8a657d582cc6c6c9d73f2830e", size = 40515, upload_time = "2025-01-25T08:39:27.212Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4d/83927efc3ff223c564d6b2686880ef5087b6215bbfc1b73fcb7a1e0d12ed/mmh3-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a61f434736106804eb0b1612d503c4e6eb22ba31b16e6a2f987473de4226fa55", size = 40108, upload_time = "2025-01-25T08:39:28.093Z" }, + { url = "https://files.pythonhosted.org/packages/47/c6/f0e33468cc00729cb4019176288ed1506632dce12ee7a842f1c78d1f2c93/mmh3-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba9ce59816b30866093f048b3312c2204ff59806d3a02adee71ff7bd22b87554", size = 99892, upload_time = "2025-01-25T08:39:28.957Z" }, + { url = "https://files.pythonhosted.org/packages/22/16/73e25fc16b17acc0de604a28c716407728777c4d52dae72a0e505e32d281/mmh3-5.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd51597bef1e503363b05cb579db09269e6e6c39d419486626b255048daf545b", size = 106054, upload_time = "2025-01-25T08:39:29.994Z" }, + { url = "https://files.pythonhosted.org/packages/4f/f3/f9c5e4051e8ab54fd92717906f998f7161bfd3440bcea1b6f84e956e168a/mmh3-5.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d51a1ed642d3fb37b8f4cab966811c52eb246c3e1740985f701ef5ad4cdd2145", size = 104004, upload_time = "2025-01-25T08:39:31.788Z" }, + { url = "https://files.pythonhosted.org/packages/e1/18/6452be7e21f792f69e83854bc71fa4443816a6f8e909374a547f2eccdd44/mmh3-5.1.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:709bfe81c53bf8a3609efcbd65c72305ade60944f66138f697eefc1a86b6e356", size = 91420, upload_time = "2025-01-25T08:39:32.804Z" }, + { url = "https://files.pythonhosted.org/packages/66/59/7e16f10ee38f56bb0890d4da2c5bf1bfd77b15ea8e91244eeebdcfc84077/mmh3-5.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e01a9b0092b6f82e861137c8e9bb9899375125b24012eb5219e61708be320032", size = 98910, upload_time = "2025-01-25T08:39:33.818Z" }, + { url = "https://files.pythonhosted.org/packages/cb/78/f247daea100fb9f4a7aad3fb01aa6e258de12fc594f37415c8dc22d8bd71/mmh3-5.1.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:27e46a2c13c9a805e03c9ec7de0ca8e096794688ab2125bdce4229daf60c4a56", size = 101325, upload_time = "2025-01-25T08:39:34.898Z" }, + { url = "https://files.pythonhosted.org/packages/6e/d6/07ac481d91dc4659c9c556a326e4349d08331b5713a1ac11bf7b063c6bdc/mmh3-5.1.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:5766299c1d26f6bfd0a638e070bd17dbd98d4ccb067d64db3745bf178e700ef0", size = 94625, upload_time = "2025-01-25T08:39:35.952Z" }, + { url = "https://files.pythonhosted.org/packages/ff/3a/118c058b05f2396e3c4077183ad8f5d0e0a508c28eaae57b08d6c49a0754/mmh3-5.1.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:7785205e3e4443fdcbb73766798c7647f94c2f538b90f666688f3e757546069e", size = 109398, upload_time = "2025-01-25T08:39:36.893Z" }, + { url = "https://files.pythonhosted.org/packages/8d/d5/accc9372f70e15db8e8e203940b25ac409e061460cd6f96aab6066bb66a6/mmh3-5.1.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:8e574fbd39afb433b3ab95683b1b4bf18313dc46456fc9daaddc2693c19ca565", size = 100319, upload_time = "2025-01-25T08:39:37.954Z" }, + { url = "https://files.pythonhosted.org/packages/bb/98/e157770077a19322483a1ab661fce14b6489bca8da49bd6fece98918c845/mmh3-5.1.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:1b6727a5a20e32cbf605743749f3862abe5f5e097cbf2afc7be5aafd32a549ae", size = 99946, upload_time = "2025-01-25T08:39:38.922Z" }, + { url = "https://files.pythonhosted.org/packages/6d/65/9b5b506e8a88386316d9cff0c4b155262200d1ec95cad6d4287ec240a7fd/mmh3-5.1.0-cp39-cp39-win32.whl", hash = "sha256:d6eaa711d4b9220fe5252032a44bf68e5dcfb7b21745a96efc9e769b0dd57ec2", size = 40823, upload_time = "2025-01-25T08:39:40.13Z" }, + { url = "https://files.pythonhosted.org/packages/bd/67/c4468b21d9d219e0d64708c07936666968c88d92e3542cfb6c47ce06768b/mmh3-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:49d444913f6c02980e5241a53fe9af2338f2043d6ce5b6f5ea7d302c52c604ac", size = 41481, upload_time = "2025-01-25T08:39:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/20/bb/cb97418e487632eb1f6fb0f2fa86adbeec102cbf6bfa4ebfc10a8889da2c/mmh3-5.1.0-cp39-cp39-win_arm64.whl", hash = "sha256:0daaeaedd78773b70378f2413c7d6b10239a75d955d30d54f460fb25d599942d", size = 38870, upload_time = "2025-01-25T08:39:41.986Z" }, ] [[package]] name = "ollama" -version = "0.4.7" +version = "0.4.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "httpx" }, { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b0/6d/dc77539c735bbed5d0c873fb029fb86aa9f0163df169b34152914331c369/ollama-0.4.7.tar.gz", hash = "sha256:891dcbe54f55397d82d289c459de0ea897e103b86a3f1fad0fdb1895922a75ff", size = 12843 } +sdist = { url = "https://files.pythonhosted.org/packages/e2/64/709dc99030f8f46ec552f0a7da73bbdcc2da58666abfec4742ccdb2e800e/ollama-0.4.8.tar.gz", hash = "sha256:1121439d49b96fa8339842965d0616eba5deb9f8c790786cdf4c0b3df4833802", size = 12972, upload_time = "2025-04-16T21:55:14.101Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/83/c3ffac86906c10184c88c2e916460806b072a2cfe34cdcaf3a0c0e836d39/ollama-0.4.7-py3-none-any.whl", hash = "sha256:85505663cca67a83707be5fb3aeff0ea72e67846cea5985529d8eca4366564a1", size = 13210 }, + { url = "https://files.pythonhosted.org/packages/33/3f/164de150e983b3a16e8bf3d4355625e51a357e7b3b1deebe9cc1f7cb9af8/ollama-0.4.8-py3-none-any.whl", hash = "sha256:04312af2c5e72449aaebac4a2776f52ef010877c554103419d3f36066fe8af4c", size = 13325, upload_time = "2025-04-16T21:55:12.779Z" }, ] [[package]] @@ -525,95 +467,90 @@ dependencies = [ { name = "typer" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/93/1b/1eabe23bf58bdd1a8c67c490202230999403172e99ccdd75adb39931e103/openapi_python_client-0.24.3.tar.gz", hash = "sha256:472d6f4a55dea35e471b08879fc72c4823c1b693cb11ea09eaae742aa1ec170d", size = 124384 } +sdist = { url = "https://files.pythonhosted.org/packages/93/1b/1eabe23bf58bdd1a8c67c490202230999403172e99ccdd75adb39931e103/openapi_python_client-0.24.3.tar.gz", hash = "sha256:472d6f4a55dea35e471b08879fc72c4823c1b693cb11ea09eaae742aa1ec170d", size = 124384, upload_time = "2025-03-31T22:44:28.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/9a/943e90d88cbb303a1ceadffd058cec40dfbee75aa3bbf8e7fe982ec8575b/openapi_python_client-0.24.3-py3-none-any.whl", hash = "sha256:1a5580c05a3cb4e0e58101b4d05ce1680f9c51d41a68ce220611e848b80c2ba9", size = 180947 }, + { url = "https://files.pythonhosted.org/packages/c2/9a/943e90d88cbb303a1ceadffd058cec40dfbee75aa3bbf8e7fe982ec8575b/openapi_python_client-0.24.3-py3-none-any.whl", hash = "sha256:1a5580c05a3cb4e0e58101b4d05ce1680f9c51d41a68ce220611e848b80c2ba9", size = 180947, upload_time = "2025-03-31T22:44:26.359Z" }, ] [[package]] name = "packaging" -version = "24.2" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload_time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload_time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/63/68dbb6eb2de9cb10ee4c9c14a0148804425e13c4fb20d61cce69f53106da/packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f", size = 163950 } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload_time = "2024-04-20T21:34:42.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/ef/eb23f262cca3c0c4eb7ab1933c3b1f03d021f2c48f54763065b6f0e321be/packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759", size = 65451 }, + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload_time = "2024-04-20T21:34:40.434Z" }, ] [[package]] name = "polars" version = "1.27.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e1/96/56ab877d3d690bd8e67f5c6aabfd3aa8bc7c33ee901767905f564a6ade36/polars-1.27.1.tar.gz", hash = "sha256:94fcb0216b56cd0594aa777db1760a41ad0dfffed90d2ca446cf9294d2e97f02", size = 4555382 } +sdist = { url = "https://files.pythonhosted.org/packages/e1/96/56ab877d3d690bd8e67f5c6aabfd3aa8bc7c33ee901767905f564a6ade36/polars-1.27.1.tar.gz", hash = "sha256:94fcb0216b56cd0594aa777db1760a41ad0dfffed90d2ca446cf9294d2e97f02", size = 4555382, upload_time = "2025-04-11T10:26:24.708Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/f4/be965ca4e1372805d0d2313bb4ed8eae88804fc3bfeb6cb0a07c53191bdb/polars-1.27.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:ba7ad4f8046d00dd97c1369e46a4b7e00ffcff5d38c0f847ee4b9b1bb182fb18", size = 34756840 }, - { url = "https://files.pythonhosted.org/packages/c0/1a/ae019d323e83c6e8a9b4323f3fea94e047715847dfa4c4cbaf20a6f8444e/polars-1.27.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:339e3948748ad6fa7a42e613c3fb165b497ed797e93fce1aa2cddf00fbc16cac", size = 31616000 }, - { url = "https://files.pythonhosted.org/packages/20/c1/c65924c0ca186f481c02b531f1ec66c34f9bbecc11d70246562bb4949876/polars-1.27.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f801e0d9da198eb97cfb4e8af4242b8396878ff67b655c71570b7e333102b72b", size = 35388976 }, - { url = "https://files.pythonhosted.org/packages/88/c2/37720b8794935f1e77bde439564fa421a41f5fed8111aeb7b9ca0ebafb2d/polars-1.27.1-cp39-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:4d18a29c65222451818b63cd397b2e95c20412ea0065d735a20a4a79a7b26e8a", size = 32586083 }, - { url = "https://files.pythonhosted.org/packages/41/3d/1bb108eb278c1eafb303f78c515fb71c9828944eba3fb5c0ac432b9fad28/polars-1.27.1-cp39-abi3-win_amd64.whl", hash = "sha256:a4f832cf478b282d97f8bf86eeae2df66fa1384de1c49bc61f7224a10cc6a5df", size = 35602500 }, - { url = "https://files.pythonhosted.org/packages/0f/5c/cc23daf0a228d6fadbbfc8a8c5165be33157abe5b9d72af3e127e0542857/polars-1.27.1-cp39-abi3-win_arm64.whl", hash = "sha256:4f238ee2e3c5660345cb62c0f731bbd6768362db96c058098359ecffa42c3c6c", size = 31891470 }, + { url = "https://files.pythonhosted.org/packages/a0/f4/be965ca4e1372805d0d2313bb4ed8eae88804fc3bfeb6cb0a07c53191bdb/polars-1.27.1-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:ba7ad4f8046d00dd97c1369e46a4b7e00ffcff5d38c0f847ee4b9b1bb182fb18", size = 34756840, upload_time = "2025-04-11T10:25:19.734Z" }, + { url = "https://files.pythonhosted.org/packages/c0/1a/ae019d323e83c6e8a9b4323f3fea94e047715847dfa4c4cbaf20a6f8444e/polars-1.27.1-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:339e3948748ad6fa7a42e613c3fb165b497ed797e93fce1aa2cddf00fbc16cac", size = 31616000, upload_time = "2025-04-11T10:25:24.867Z" }, + { url = "https://files.pythonhosted.org/packages/20/c1/c65924c0ca186f481c02b531f1ec66c34f9bbecc11d70246562bb4949876/polars-1.27.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f801e0d9da198eb97cfb4e8af4242b8396878ff67b655c71570b7e333102b72b", size = 35388976, upload_time = "2025-04-11T10:25:28.426Z" }, + { url = "https://files.pythonhosted.org/packages/88/c2/37720b8794935f1e77bde439564fa421a41f5fed8111aeb7b9ca0ebafb2d/polars-1.27.1-cp39-abi3-manylinux_2_24_aarch64.whl", hash = "sha256:4d18a29c65222451818b63cd397b2e95c20412ea0065d735a20a4a79a7b26e8a", size = 32586083, upload_time = "2025-04-11T10:25:32.424Z" }, + { url = "https://files.pythonhosted.org/packages/41/3d/1bb108eb278c1eafb303f78c515fb71c9828944eba3fb5c0ac432b9fad28/polars-1.27.1-cp39-abi3-win_amd64.whl", hash = "sha256:a4f832cf478b282d97f8bf86eeae2df66fa1384de1c49bc61f7224a10cc6a5df", size = 35602500, upload_time = "2025-04-11T10:25:35.701Z" }, + { url = "https://files.pythonhosted.org/packages/0f/5c/cc23daf0a228d6fadbbfc8a8c5165be33157abe5b9d72af3e127e0542857/polars-1.27.1-cp39-abi3-win_arm64.whl", hash = "sha256:4f238ee2e3c5660345cb62c0f731bbd6768362db96c058098359ecffa42c3c6c", size = 31891470, upload_time = "2025-04-11T10:25:38.74Z" }, ] [[package]] name = "pyarrow" version = "19.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7f/09/a9046344212690f0632b9c709f9bf18506522feb333c894d0de81d62341a/pyarrow-19.0.1.tar.gz", hash = "sha256:3bf266b485df66a400f282ac0b6d1b500b9d2ae73314a153dbe97d6d5cc8a99e", size = 1129437 } +sdist = { url = "https://files.pythonhosted.org/packages/7f/09/a9046344212690f0632b9c709f9bf18506522feb333c894d0de81d62341a/pyarrow-19.0.1.tar.gz", hash = "sha256:3bf266b485df66a400f282ac0b6d1b500b9d2ae73314a153dbe97d6d5cc8a99e", size = 1129437, upload_time = "2025-02-18T18:55:57.027Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/36/01/b23b514d86b839956238d3f8ef206fd2728eee87ff1b8ce150a5678d9721/pyarrow-19.0.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc28912a2dc924dddc2087679cc8b7263accc71b9ff025a1362b004711661a69", size = 30688914 }, - { url = "https://files.pythonhosted.org/packages/c6/68/218ff7cf4a0652a933e5f2ed11274f724dd43b9813cb18dd72c0a35226a2/pyarrow-19.0.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fca15aabbe9b8355800d923cc2e82c8ef514af321e18b437c3d782aa884eaeec", size = 32102866 }, - { url = "https://files.pythonhosted.org/packages/98/01/c295050d183014f4a2eb796d7d2bbfa04b6cccde7258bb68aacf6f18779b/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76aef7f5f7e4a757fddcdcf010a8290958f09e3470ea458c80d26f4316ae89", size = 41147682 }, - { url = "https://files.pythonhosted.org/packages/40/17/a6c3db0b5f3678f33bbb552d2acbc16def67f89a72955b67b0109af23eb0/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d03c9d6f2a3dffbd62671ca070f13fc527bb1867b4ec2b98c7eeed381d4f389a", size = 42179192 }, - { url = "https://files.pythonhosted.org/packages/cf/75/c7c8e599300d8cebb6cb339014800e1c720c9db2a3fcb66aa64ec84bac72/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:65cf9feebab489b19cdfcfe4aa82f62147218558d8d3f0fc1e9dea0ab8e7905a", size = 40517272 }, - { url = "https://files.pythonhosted.org/packages/ef/c9/68ab123ee1528699c4d5055f645ecd1dd68ff93e4699527249d02f55afeb/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:41f9706fbe505e0abc10e84bf3a906a1338905cbbcf1177b71486b03e6ea6608", size = 42069036 }, - { url = "https://files.pythonhosted.org/packages/54/e3/d5cfd7654084e6c0d9c3ce949e5d9e0ccad569ae1e2d5a68a3ec03b2be89/pyarrow-19.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6cb2335a411b713fdf1e82a752162f72d4a7b5dbc588e32aa18383318b05866", size = 25277951 }, - { url = "https://files.pythonhosted.org/packages/36/01/b23b514d86b839956238d3f8ef206fd2728eee87ff1b8ce150a5678d9721/pyarrow-19.0.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc28912a2dc924dddc2087679cc8b7263accc71b9ff025a1362b004711661a69", size = 30688914 }, - { url = "https://files.pythonhosted.org/packages/c6/68/218ff7cf4a0652a933e5f2ed11274f724dd43b9813cb18dd72c0a35226a2/pyarrow-19.0.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fca15aabbe9b8355800d923cc2e82c8ef514af321e18b437c3d782aa884eaeec", size = 32102866 }, - { url = "https://files.pythonhosted.org/packages/98/01/c295050d183014f4a2eb796d7d2bbfa04b6cccde7258bb68aacf6f18779b/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76aef7f5f7e4a757fddcdcf010a8290958f09e3470ea458c80d26f4316ae89", size = 41147682 }, - { url = "https://files.pythonhosted.org/packages/40/17/a6c3db0b5f3678f33bbb552d2acbc16def67f89a72955b67b0109af23eb0/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d03c9d6f2a3dffbd62671ca070f13fc527bb1867b4ec2b98c7eeed381d4f389a", size = 42179192 }, - { url = "https://files.pythonhosted.org/packages/cf/75/c7c8e599300d8cebb6cb339014800e1c720c9db2a3fcb66aa64ec84bac72/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:65cf9feebab489b19cdfcfe4aa82f62147218558d8d3f0fc1e9dea0ab8e7905a", size = 40517272 }, - { url = "https://files.pythonhosted.org/packages/ef/c9/68ab123ee1528699c4d5055f645ecd1dd68ff93e4699527249d02f55afeb/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:41f9706fbe505e0abc10e84bf3a906a1338905cbbcf1177b71486b03e6ea6608", size = 42069036 }, - { url = "https://files.pythonhosted.org/packages/54/e3/d5cfd7654084e6c0d9c3ce949e5d9e0ccad569ae1e2d5a68a3ec03b2be89/pyarrow-19.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6cb2335a411b713fdf1e82a752162f72d4a7b5dbc588e32aa18383318b05866", size = 25277951 }, - { url = "https://files.pythonhosted.org/packages/a0/55/f1a8d838ec07fe3ca53edbe76f782df7b9aafd4417080eebf0b42aab0c52/pyarrow-19.0.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:cc55d71898ea30dc95900297d191377caba257612f384207fe9f8293b5850f90", size = 30713987 }, - { url = "https://files.pythonhosted.org/packages/13/12/428861540bb54c98a140ae858a11f71d041ef9e501e6b7eb965ca7909505/pyarrow-19.0.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:7a544ec12de66769612b2d6988c36adc96fb9767ecc8ee0a4d270b10b1c51e00", size = 32135613 }, - { url = "https://files.pythonhosted.org/packages/2f/8a/23d7cc5ae2066c6c736bce1db8ea7bc9ac3ef97ac7e1c1667706c764d2d9/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0148bb4fc158bfbc3d6dfe5001d93ebeed253793fff4435167f6ce1dc4bddeae", size = 41149147 }, - { url = "https://files.pythonhosted.org/packages/a2/7a/845d151bb81a892dfb368bf11db584cf8b216963ccce40a5cf50a2492a18/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f24faab6ed18f216a37870d8c5623f9c044566d75ec586ef884e13a02a9d62c5", size = 42178045 }, - { url = "https://files.pythonhosted.org/packages/a7/31/e7282d79a70816132cf6cae7e378adfccce9ae10352d21c2fecf9d9756dd/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:4982f8e2b7afd6dae8608d70ba5bd91699077323f812a0448d8b7abdff6cb5d3", size = 40532998 }, - { url = "https://files.pythonhosted.org/packages/b8/82/20f3c290d6e705e2ee9c1fa1d5a0869365ee477e1788073d8b548da8b64c/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:49a3aecb62c1be1d822f8bf629226d4a96418228a42f5b40835c1f10d42e4db6", size = 42084055 }, - { url = "https://files.pythonhosted.org/packages/ff/77/e62aebd343238863f2c9f080ad2ef6ace25c919c6ab383436b5b81cbeef7/pyarrow-19.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:008a4009efdb4ea3d2e18f05cd31f9d43c388aad29c636112c2966605ba33466", size = 25283133 }, - { url = "https://files.pythonhosted.org/packages/78/b4/94e828704b050e723f67d67c3535cf7076c7432cd4cf046e4bb3b96a9c9d/pyarrow-19.0.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:80b2ad2b193e7d19e81008a96e313fbd53157945c7be9ac65f44f8937a55427b", size = 30670749 }, - { url = "https://files.pythonhosted.org/packages/7e/3b/4692965e04bb1df55e2c314c4296f1eb12b4f3052d4cf43d29e076aedf66/pyarrow-19.0.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:ee8dec072569f43835932a3b10c55973593abc00936c202707a4ad06af7cb294", size = 32128007 }, - { url = "https://files.pythonhosted.org/packages/22/f7/2239af706252c6582a5635c35caa17cb4d401cd74a87821ef702e3888957/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d5d1ec7ec5324b98887bdc006f4d2ce534e10e60f7ad995e7875ffa0ff9cb14", size = 41144566 }, - { url = "https://files.pythonhosted.org/packages/fb/e3/c9661b2b2849cfefddd9fd65b64e093594b231b472de08ff658f76c732b2/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ad4c0eb4e2a9aeb990af6c09e6fa0b195c8c0e7b272ecc8d4d2b6574809d34", size = 42202991 }, - { url = "https://files.pythonhosted.org/packages/fe/4f/a2c0ed309167ef436674782dfee4a124570ba64299c551e38d3fdaf0a17b/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d383591f3dcbe545f6cc62daaef9c7cdfe0dff0fb9e1c8121101cabe9098cfa6", size = 40507986 }, - { url = "https://files.pythonhosted.org/packages/27/2e/29bb28a7102a6f71026a9d70d1d61df926887e36ec797f2e6acfd2dd3867/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b4c4156a625f1e35d6c0b2132635a237708944eb41df5fbe7d50f20d20c17832", size = 42087026 }, - { url = "https://files.pythonhosted.org/packages/16/33/2a67c0f783251106aeeee516f4806161e7b481f7d744d0d643d2f30230a5/pyarrow-19.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bd1618ae5e5476b7654c7b55a6364ae87686d4724538c24185bbb2952679960", size = 25250108 }, - { url = "https://files.pythonhosted.org/packages/2b/8d/275c58d4b00781bd36579501a259eacc5c6dfb369be4ddeb672ceb551d2d/pyarrow-19.0.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e45274b20e524ae5c39d7fc1ca2aa923aab494776d2d4b316b49ec7572ca324c", size = 30653552 }, - { url = "https://files.pythonhosted.org/packages/a0/9e/e6aca5cc4ef0c7aec5f8db93feb0bde08dbad8c56b9014216205d271101b/pyarrow-19.0.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d9dedeaf19097a143ed6da37f04f4051aba353c95ef507764d344229b2b740ae", size = 32103413 }, - { url = "https://files.pythonhosted.org/packages/6a/fa/a7033f66e5d4f1308c7eb0dfcd2ccd70f881724eb6fd1776657fdf65458f/pyarrow-19.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ebfb5171bb5f4a52319344ebbbecc731af3f021e49318c74f33d520d31ae0c4", size = 41134869 }, - { url = "https://files.pythonhosted.org/packages/2d/92/34d2569be8e7abdc9d145c98dc410db0071ac579b92ebc30da35f500d630/pyarrow-19.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a21d39fbdb948857f67eacb5bbaaf36802de044ec36fbef7a1c8f0dd3a4ab2", size = 42192626 }, - { url = "https://files.pythonhosted.org/packages/0a/1f/80c617b1084fc833804dc3309aa9d8daacd46f9ec8d736df733f15aebe2c/pyarrow-19.0.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:99bc1bec6d234359743b01e70d4310d0ab240c3d6b0da7e2a93663b0158616f6", size = 40496708 }, - { url = "https://files.pythonhosted.org/packages/e6/90/83698fcecf939a611c8d9a78e38e7fed7792dcc4317e29e72cf8135526fb/pyarrow-19.0.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1b93ef2c93e77c442c979b0d596af45e4665d8b96da598db145b0fec014b9136", size = 42075728 }, - { url = "https://files.pythonhosted.org/packages/40/49/2325f5c9e7a1c125c01ba0c509d400b152c972a47958768e4e35e04d13d8/pyarrow-19.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:d9d46e06846a41ba906ab25302cf0fd522f81aa2a85a71021826f34639ad31ef", size = 25242568 }, - { url = "https://files.pythonhosted.org/packages/3f/72/135088d995a759d4d916ec4824cb19e066585b4909ebad4ab196177aa825/pyarrow-19.0.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:c0fe3dbbf054a00d1f162fda94ce236a899ca01123a798c561ba307ca38af5f0", size = 30702371 }, - { url = "https://files.pythonhosted.org/packages/2e/01/00beeebd33d6bac701f20816a29d2018eba463616bbc07397fdf99ac4ce3/pyarrow-19.0.1-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:96606c3ba57944d128e8a8399da4812f56c7f61de8c647e3470b417f795d0ef9", size = 32116046 }, - { url = "https://files.pythonhosted.org/packages/1f/c9/23b1ea718dfe967cbd986d16cf2a31fe59d015874258baae16d7ea0ccabc/pyarrow-19.0.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f04d49a6b64cf24719c080b3c2029a3a5b16417fd5fd7c4041f94233af732f3", size = 41091183 }, - { url = "https://files.pythonhosted.org/packages/3a/d4/b4a3aa781a2c715520aa8ab4fe2e7fa49d33a1d4e71c8fc6ab7b5de7a3f8/pyarrow-19.0.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a9137cf7e1640dce4c190551ee69d478f7121b5c6f323553b319cac936395f6", size = 42171896 }, - { url = "https://files.pythonhosted.org/packages/23/1b/716d4cd5a3cbc387c6e6745d2704c4b46654ba2668260d25c402626c5ddb/pyarrow-19.0.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:7c1bca1897c28013db5e4c83944a2ab53231f541b9e0c3f4791206d0c0de389a", size = 40464851 }, - { url = "https://files.pythonhosted.org/packages/ed/bd/54907846383dcc7ee28772d7e646f6c34276a17da740002a5cefe90f04f7/pyarrow-19.0.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:58d9397b2e273ef76264b45531e9d552d8ec8a6688b7390b5be44c02a37aade8", size = 42085744 }, - { url = "https://files.pythonhosted.org/packages/16/26/0ec396ebe98adefaffc0fff8e0dc14c8912e61093226284cf4b76faffd22/pyarrow-19.0.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:b9766a47a9cb56fefe95cb27f535038b5a195707a08bf61b180e642324963b46", size = 30701112 }, - { url = "https://files.pythonhosted.org/packages/ba/10/c35d96686bf7f13e55bb87f06fe06e7d95533c271ef7f9a5a76e26b16fc2/pyarrow-19.0.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:6c5941c1aac89a6c2f2b16cd64fe76bcdb94b2b1e99ca6459de4e6f07638d755", size = 32117180 }, - { url = "https://files.pythonhosted.org/packages/8c/0d/81881a55302b6847ea2ea187517faa039c219d80b55050904e354c2eddde/pyarrow-19.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd44d66093a239358d07c42a91eebf5015aa54fccba959db899f932218ac9cc8", size = 41161334 }, - { url = "https://files.pythonhosted.org/packages/af/17/ea60a07ec6f6bb0740f11715e0d22ab8fdfcc94bc729832321f498370d75/pyarrow-19.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:335d170e050bcc7da867a1ed8ffb8b44c57aaa6e0843b156a501298657b1e972", size = 42190375 }, - { url = "https://files.pythonhosted.org/packages/f2/87/4ef05a088b18082cde4950bdfca752dd31effb3ec201b8026e4816d0f3fa/pyarrow-19.0.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:1c7556165bd38cf0cd992df2636f8bcdd2d4b26916c6b7e646101aff3c16f76f", size = 40530649 }, - { url = "https://files.pythonhosted.org/packages/59/1e/9fb9a66a64eae4ff332a8f149d803d8c6c556714803d20d54ed2e9524a3b/pyarrow-19.0.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:699799f9c80bebcf1da0983ba86d7f289c5a2a5c04b945e2f2bcf7e874a91911", size = 42081576 }, - { url = "https://files.pythonhosted.org/packages/1b/ee/c110d8da8bdde8e832ccf1ff90be747cb684874e2dc8acf26840058b0c32/pyarrow-19.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:8464c9fbe6d94a7fe1599e7e8965f350fd233532868232ab2596a71586c5a429", size = 25465593 }, - { url = "https://files.pythonhosted.org/packages/16/26/0ec396ebe98adefaffc0fff8e0dc14c8912e61093226284cf4b76faffd22/pyarrow-19.0.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:b9766a47a9cb56fefe95cb27f535038b5a195707a08bf61b180e642324963b46", size = 30701112 }, - { url = "https://files.pythonhosted.org/packages/ba/10/c35d96686bf7f13e55bb87f06fe06e7d95533c271ef7f9a5a76e26b16fc2/pyarrow-19.0.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:6c5941c1aac89a6c2f2b16cd64fe76bcdb94b2b1e99ca6459de4e6f07638d755", size = 32117180 }, - { url = "https://files.pythonhosted.org/packages/8c/0d/81881a55302b6847ea2ea187517faa039c219d80b55050904e354c2eddde/pyarrow-19.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd44d66093a239358d07c42a91eebf5015aa54fccba959db899f932218ac9cc8", size = 41161334 }, - { url = "https://files.pythonhosted.org/packages/af/17/ea60a07ec6f6bb0740f11715e0d22ab8fdfcc94bc729832321f498370d75/pyarrow-19.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:335d170e050bcc7da867a1ed8ffb8b44c57aaa6e0843b156a501298657b1e972", size = 42190375 }, - { url = "https://files.pythonhosted.org/packages/f2/87/4ef05a088b18082cde4950bdfca752dd31effb3ec201b8026e4816d0f3fa/pyarrow-19.0.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:1c7556165bd38cf0cd992df2636f8bcdd2d4b26916c6b7e646101aff3c16f76f", size = 40530649 }, - { url = "https://files.pythonhosted.org/packages/59/1e/9fb9a66a64eae4ff332a8f149d803d8c6c556714803d20d54ed2e9524a3b/pyarrow-19.0.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:699799f9c80bebcf1da0983ba86d7f289c5a2a5c04b945e2f2bcf7e874a91911", size = 42081576 }, - { url = "https://files.pythonhosted.org/packages/1b/ee/c110d8da8bdde8e832ccf1ff90be747cb684874e2dc8acf26840058b0c32/pyarrow-19.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:8464c9fbe6d94a7fe1599e7e8965f350fd233532868232ab2596a71586c5a429", size = 25465593 }, + { url = "https://files.pythonhosted.org/packages/36/01/b23b514d86b839956238d3f8ef206fd2728eee87ff1b8ce150a5678d9721/pyarrow-19.0.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc28912a2dc924dddc2087679cc8b7263accc71b9ff025a1362b004711661a69", size = 30688914, upload_time = "2025-02-18T18:51:37.575Z" }, + { url = "https://files.pythonhosted.org/packages/c6/68/218ff7cf4a0652a933e5f2ed11274f724dd43b9813cb18dd72c0a35226a2/pyarrow-19.0.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fca15aabbe9b8355800d923cc2e82c8ef514af321e18b437c3d782aa884eaeec", size = 32102866, upload_time = "2025-02-18T18:51:44.358Z" }, + { url = "https://files.pythonhosted.org/packages/98/01/c295050d183014f4a2eb796d7d2bbfa04b6cccde7258bb68aacf6f18779b/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76aef7f5f7e4a757fddcdcf010a8290958f09e3470ea458c80d26f4316ae89", size = 41147682, upload_time = "2025-02-18T18:51:49.481Z" }, + { url = "https://files.pythonhosted.org/packages/40/17/a6c3db0b5f3678f33bbb552d2acbc16def67f89a72955b67b0109af23eb0/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d03c9d6f2a3dffbd62671ca070f13fc527bb1867b4ec2b98c7eeed381d4f389a", size = 42179192, upload_time = "2025-02-18T18:51:56.265Z" }, + { url = "https://files.pythonhosted.org/packages/cf/75/c7c8e599300d8cebb6cb339014800e1c720c9db2a3fcb66aa64ec84bac72/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:65cf9feebab489b19cdfcfe4aa82f62147218558d8d3f0fc1e9dea0ab8e7905a", size = 40517272, upload_time = "2025-02-18T18:52:02.969Z" }, + { url = "https://files.pythonhosted.org/packages/ef/c9/68ab123ee1528699c4d5055f645ecd1dd68ff93e4699527249d02f55afeb/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:41f9706fbe505e0abc10e84bf3a906a1338905cbbcf1177b71486b03e6ea6608", size = 42069036, upload_time = "2025-02-18T18:52:10.173Z" }, + { url = "https://files.pythonhosted.org/packages/54/e3/d5cfd7654084e6c0d9c3ce949e5d9e0ccad569ae1e2d5a68a3ec03b2be89/pyarrow-19.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6cb2335a411b713fdf1e82a752162f72d4a7b5dbc588e32aa18383318b05866", size = 25277951, upload_time = "2025-02-18T18:52:15.459Z" }, + { url = "https://files.pythonhosted.org/packages/a0/55/f1a8d838ec07fe3ca53edbe76f782df7b9aafd4417080eebf0b42aab0c52/pyarrow-19.0.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:cc55d71898ea30dc95900297d191377caba257612f384207fe9f8293b5850f90", size = 30713987, upload_time = "2025-02-18T18:52:20.463Z" }, + { url = "https://files.pythonhosted.org/packages/13/12/428861540bb54c98a140ae858a11f71d041ef9e501e6b7eb965ca7909505/pyarrow-19.0.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:7a544ec12de66769612b2d6988c36adc96fb9767ecc8ee0a4d270b10b1c51e00", size = 32135613, upload_time = "2025-02-18T18:52:25.29Z" }, + { url = "https://files.pythonhosted.org/packages/2f/8a/23d7cc5ae2066c6c736bce1db8ea7bc9ac3ef97ac7e1c1667706c764d2d9/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0148bb4fc158bfbc3d6dfe5001d93ebeed253793fff4435167f6ce1dc4bddeae", size = 41149147, upload_time = "2025-02-18T18:52:30.975Z" }, + { url = "https://files.pythonhosted.org/packages/a2/7a/845d151bb81a892dfb368bf11db584cf8b216963ccce40a5cf50a2492a18/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f24faab6ed18f216a37870d8c5623f9c044566d75ec586ef884e13a02a9d62c5", size = 42178045, upload_time = "2025-02-18T18:52:36.859Z" }, + { url = "https://files.pythonhosted.org/packages/a7/31/e7282d79a70816132cf6cae7e378adfccce9ae10352d21c2fecf9d9756dd/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:4982f8e2b7afd6dae8608d70ba5bd91699077323f812a0448d8b7abdff6cb5d3", size = 40532998, upload_time = "2025-02-18T18:52:42.578Z" }, + { url = "https://files.pythonhosted.org/packages/b8/82/20f3c290d6e705e2ee9c1fa1d5a0869365ee477e1788073d8b548da8b64c/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:49a3aecb62c1be1d822f8bf629226d4a96418228a42f5b40835c1f10d42e4db6", size = 42084055, upload_time = "2025-02-18T18:52:48.749Z" }, + { url = "https://files.pythonhosted.org/packages/ff/77/e62aebd343238863f2c9f080ad2ef6ace25c919c6ab383436b5b81cbeef7/pyarrow-19.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:008a4009efdb4ea3d2e18f05cd31f9d43c388aad29c636112c2966605ba33466", size = 25283133, upload_time = "2025-02-18T18:52:54.549Z" }, + { url = "https://files.pythonhosted.org/packages/78/b4/94e828704b050e723f67d67c3535cf7076c7432cd4cf046e4bb3b96a9c9d/pyarrow-19.0.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:80b2ad2b193e7d19e81008a96e313fbd53157945c7be9ac65f44f8937a55427b", size = 30670749, upload_time = "2025-02-18T18:53:00.062Z" }, + { url = "https://files.pythonhosted.org/packages/7e/3b/4692965e04bb1df55e2c314c4296f1eb12b4f3052d4cf43d29e076aedf66/pyarrow-19.0.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:ee8dec072569f43835932a3b10c55973593abc00936c202707a4ad06af7cb294", size = 32128007, upload_time = "2025-02-18T18:53:06.581Z" }, + { url = "https://files.pythonhosted.org/packages/22/f7/2239af706252c6582a5635c35caa17cb4d401cd74a87821ef702e3888957/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d5d1ec7ec5324b98887bdc006f4d2ce534e10e60f7ad995e7875ffa0ff9cb14", size = 41144566, upload_time = "2025-02-18T18:53:11.958Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e3/c9661b2b2849cfefddd9fd65b64e093594b231b472de08ff658f76c732b2/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ad4c0eb4e2a9aeb990af6c09e6fa0b195c8c0e7b272ecc8d4d2b6574809d34", size = 42202991, upload_time = "2025-02-18T18:53:17.678Z" }, + { url = "https://files.pythonhosted.org/packages/fe/4f/a2c0ed309167ef436674782dfee4a124570ba64299c551e38d3fdaf0a17b/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d383591f3dcbe545f6cc62daaef9c7cdfe0dff0fb9e1c8121101cabe9098cfa6", size = 40507986, upload_time = "2025-02-18T18:53:26.263Z" }, + { url = "https://files.pythonhosted.org/packages/27/2e/29bb28a7102a6f71026a9d70d1d61df926887e36ec797f2e6acfd2dd3867/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b4c4156a625f1e35d6c0b2132635a237708944eb41df5fbe7d50f20d20c17832", size = 42087026, upload_time = "2025-02-18T18:53:33.063Z" }, + { url = "https://files.pythonhosted.org/packages/16/33/2a67c0f783251106aeeee516f4806161e7b481f7d744d0d643d2f30230a5/pyarrow-19.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bd1618ae5e5476b7654c7b55a6364ae87686d4724538c24185bbb2952679960", size = 25250108, upload_time = "2025-02-18T18:53:38.462Z" }, + { url = "https://files.pythonhosted.org/packages/2b/8d/275c58d4b00781bd36579501a259eacc5c6dfb369be4ddeb672ceb551d2d/pyarrow-19.0.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e45274b20e524ae5c39d7fc1ca2aa923aab494776d2d4b316b49ec7572ca324c", size = 30653552, upload_time = "2025-02-18T18:53:44.357Z" }, + { url = "https://files.pythonhosted.org/packages/a0/9e/e6aca5cc4ef0c7aec5f8db93feb0bde08dbad8c56b9014216205d271101b/pyarrow-19.0.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d9dedeaf19097a143ed6da37f04f4051aba353c95ef507764d344229b2b740ae", size = 32103413, upload_time = "2025-02-18T18:53:52.971Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fa/a7033f66e5d4f1308c7eb0dfcd2ccd70f881724eb6fd1776657fdf65458f/pyarrow-19.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ebfb5171bb5f4a52319344ebbbecc731af3f021e49318c74f33d520d31ae0c4", size = 41134869, upload_time = "2025-02-18T18:53:59.471Z" }, + { url = "https://files.pythonhosted.org/packages/2d/92/34d2569be8e7abdc9d145c98dc410db0071ac579b92ebc30da35f500d630/pyarrow-19.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a21d39fbdb948857f67eacb5bbaaf36802de044ec36fbef7a1c8f0dd3a4ab2", size = 42192626, upload_time = "2025-02-18T18:54:06.062Z" }, + { url = "https://files.pythonhosted.org/packages/0a/1f/80c617b1084fc833804dc3309aa9d8daacd46f9ec8d736df733f15aebe2c/pyarrow-19.0.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:99bc1bec6d234359743b01e70d4310d0ab240c3d6b0da7e2a93663b0158616f6", size = 40496708, upload_time = "2025-02-18T18:54:12.347Z" }, + { url = "https://files.pythonhosted.org/packages/e6/90/83698fcecf939a611c8d9a78e38e7fed7792dcc4317e29e72cf8135526fb/pyarrow-19.0.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1b93ef2c93e77c442c979b0d596af45e4665d8b96da598db145b0fec014b9136", size = 42075728, upload_time = "2025-02-18T18:54:19.364Z" }, + { url = "https://files.pythonhosted.org/packages/40/49/2325f5c9e7a1c125c01ba0c509d400b152c972a47958768e4e35e04d13d8/pyarrow-19.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:d9d46e06846a41ba906ab25302cf0fd522f81aa2a85a71021826f34639ad31ef", size = 25242568, upload_time = "2025-02-18T18:54:25.846Z" }, + { url = "https://files.pythonhosted.org/packages/3f/72/135088d995a759d4d916ec4824cb19e066585b4909ebad4ab196177aa825/pyarrow-19.0.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:c0fe3dbbf054a00d1f162fda94ce236a899ca01123a798c561ba307ca38af5f0", size = 30702371, upload_time = "2025-02-18T18:54:30.665Z" }, + { url = "https://files.pythonhosted.org/packages/2e/01/00beeebd33d6bac701f20816a29d2018eba463616bbc07397fdf99ac4ce3/pyarrow-19.0.1-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:96606c3ba57944d128e8a8399da4812f56c7f61de8c647e3470b417f795d0ef9", size = 32116046, upload_time = "2025-02-18T18:54:35.995Z" }, + { url = "https://files.pythonhosted.org/packages/1f/c9/23b1ea718dfe967cbd986d16cf2a31fe59d015874258baae16d7ea0ccabc/pyarrow-19.0.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f04d49a6b64cf24719c080b3c2029a3a5b16417fd5fd7c4041f94233af732f3", size = 41091183, upload_time = "2025-02-18T18:54:42.662Z" }, + { url = "https://files.pythonhosted.org/packages/3a/d4/b4a3aa781a2c715520aa8ab4fe2e7fa49d33a1d4e71c8fc6ab7b5de7a3f8/pyarrow-19.0.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a9137cf7e1640dce4c190551ee69d478f7121b5c6f323553b319cac936395f6", size = 42171896, upload_time = "2025-02-18T18:54:49.808Z" }, + { url = "https://files.pythonhosted.org/packages/23/1b/716d4cd5a3cbc387c6e6745d2704c4b46654ba2668260d25c402626c5ddb/pyarrow-19.0.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:7c1bca1897c28013db5e4c83944a2ab53231f541b9e0c3f4791206d0c0de389a", size = 40464851, upload_time = "2025-02-18T18:54:57.073Z" }, + { url = "https://files.pythonhosted.org/packages/ed/bd/54907846383dcc7ee28772d7e646f6c34276a17da740002a5cefe90f04f7/pyarrow-19.0.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:58d9397b2e273ef76264b45531e9d552d8ec8a6688b7390b5be44c02a37aade8", size = 42085744, upload_time = "2025-02-18T18:55:08.562Z" }, + { url = "https://files.pythonhosted.org/packages/16/26/0ec396ebe98adefaffc0fff8e0dc14c8912e61093226284cf4b76faffd22/pyarrow-19.0.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:b9766a47a9cb56fefe95cb27f535038b5a195707a08bf61b180e642324963b46", size = 30701112, upload_time = "2025-02-18T18:55:15.112Z" }, + { url = "https://files.pythonhosted.org/packages/ba/10/c35d96686bf7f13e55bb87f06fe06e7d95533c271ef7f9a5a76e26b16fc2/pyarrow-19.0.1-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:6c5941c1aac89a6c2f2b16cd64fe76bcdb94b2b1e99ca6459de4e6f07638d755", size = 32117180, upload_time = "2025-02-18T18:55:20.073Z" }, + { url = "https://files.pythonhosted.org/packages/8c/0d/81881a55302b6847ea2ea187517faa039c219d80b55050904e354c2eddde/pyarrow-19.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd44d66093a239358d07c42a91eebf5015aa54fccba959db899f932218ac9cc8", size = 41161334, upload_time = "2025-02-18T18:55:26.155Z" }, + { url = "https://files.pythonhosted.org/packages/af/17/ea60a07ec6f6bb0740f11715e0d22ab8fdfcc94bc729832321f498370d75/pyarrow-19.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:335d170e050bcc7da867a1ed8ffb8b44c57aaa6e0843b156a501298657b1e972", size = 42190375, upload_time = "2025-02-18T18:55:34.216Z" }, + { url = "https://files.pythonhosted.org/packages/f2/87/4ef05a088b18082cde4950bdfca752dd31effb3ec201b8026e4816d0f3fa/pyarrow-19.0.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:1c7556165bd38cf0cd992df2636f8bcdd2d4b26916c6b7e646101aff3c16f76f", size = 40530649, upload_time = "2025-02-18T18:55:41.864Z" }, + { url = "https://files.pythonhosted.org/packages/59/1e/9fb9a66a64eae4ff332a8f149d803d8c6c556714803d20d54ed2e9524a3b/pyarrow-19.0.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:699799f9c80bebcf1da0983ba86d7f289c5a2a5c04b945e2f2bcf7e874a91911", size = 42081576, upload_time = "2025-02-18T18:55:48.912Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ee/c110d8da8bdde8e832ccf1ff90be747cb684874e2dc8acf26840058b0c32/pyarrow-19.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:8464c9fbe6d94a7fe1599e7e8965f350fd233532868232ab2596a71586c5a429", size = 25465593, upload_time = "2025-02-18T18:55:54.191Z" }, ] [[package]] @@ -626,9 +563,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/10/2e/ca897f093ee6c5f3b0bee123ee4465c50e75431c3d5b6a3b44a47134e891/pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3", size = 785513 } +sdist = { url = "https://files.pythonhosted.org/packages/10/2e/ca897f093ee6c5f3b0bee123ee4465c50e75431c3d5b6a3b44a47134e891/pydantic-2.11.3.tar.gz", hash = "sha256:7471657138c16adad9322fe3070c0116dd6c3ad8d649300e3cbdfe91f4db4ec3", size = 785513, upload_time = "2025-04-08T13:27:06.399Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/1d/407b29780a289868ed696d1616f4aad49d6388e5a77f567dcd2629dcd7b8/pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f", size = 443591 }, + { url = "https://files.pythonhosted.org/packages/b0/1d/407b29780a289868ed696d1616f4aad49d6388e5a77f567dcd2629dcd7b8/pydantic-2.11.3-py3-none-any.whl", hash = "sha256:a082753436a07f9ba1289c6ffa01cd93db3548776088aa917cc43b63f68fa60f", size = 443591, upload_time = "2025-04-08T13:27:03.789Z" }, ] [[package]] @@ -638,159 +575,115 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df", size = 434395 } +sdist = { url = "https://files.pythonhosted.org/packages/17/19/ed6a078a5287aea7922de6841ef4c06157931622c89c2a47940837b5eecd/pydantic_core-2.33.1.tar.gz", hash = "sha256:bcc9c6fdb0ced789245b02b7d6603e17d1563064ddcfc36f046b61c0c05dd9df", size = 434395, upload_time = "2025-04-02T09:49:41.8Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/ea/5f572806ab4d4223d11551af814d243b0e3e02cc6913def4d1fe4a5ca41c/pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26", size = 2044021 }, - { url = "https://files.pythonhosted.org/packages/8c/d1/f86cc96d2aa80e3881140d16d12ef2b491223f90b28b9a911346c04ac359/pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927", size = 1861742 }, - { url = "https://files.pythonhosted.org/packages/37/08/fbd2cd1e9fc735a0df0142fac41c114ad9602d1c004aea340169ae90973b/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db", size = 1910414 }, - { url = "https://files.pythonhosted.org/packages/7f/73/3ac217751decbf8d6cb9443cec9b9eb0130eeada6ae56403e11b486e277e/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48", size = 1996848 }, - { url = "https://files.pythonhosted.org/packages/9a/f5/5c26b265cdcff2661e2520d2d1e9db72d117ea00eb41e00a76efe68cb009/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969", size = 2141055 }, - { url = "https://files.pythonhosted.org/packages/5d/14/a9c3cee817ef2f8347c5ce0713e91867a0dceceefcb2973942855c917379/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e", size = 2753806 }, - { url = "https://files.pythonhosted.org/packages/f2/68/866ce83a51dd37e7c604ce0050ff6ad26de65a7799df89f4db87dd93d1d6/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89", size = 2007777 }, - { url = "https://files.pythonhosted.org/packages/b6/a8/36771f4404bb3e49bd6d4344da4dede0bf89cc1e01f3b723c47248a3761c/pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde", size = 2122803 }, - { url = "https://files.pythonhosted.org/packages/18/9c/730a09b2694aa89360d20756369822d98dc2f31b717c21df33b64ffd1f50/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65", size = 2086755 }, - { url = "https://files.pythonhosted.org/packages/54/8e/2dccd89602b5ec31d1c58138d02340ecb2ebb8c2cac3cc66b65ce3edb6ce/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc", size = 2257358 }, - { url = "https://files.pythonhosted.org/packages/d1/9c/126e4ac1bfad8a95a9837acdd0963695d69264179ba4ede8b8c40d741702/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091", size = 2257916 }, - { url = "https://files.pythonhosted.org/packages/7d/ba/91eea2047e681a6853c81c20aeca9dcdaa5402ccb7404a2097c2adf9d038/pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383", size = 1923823 }, - { url = "https://files.pythonhosted.org/packages/94/c0/fcdf739bf60d836a38811476f6ecd50374880b01e3014318b6e809ddfd52/pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504", size = 1952494 }, - { url = "https://files.pythonhosted.org/packages/38/ea/5f572806ab4d4223d11551af814d243b0e3e02cc6913def4d1fe4a5ca41c/pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26", size = 2044021 }, - { url = "https://files.pythonhosted.org/packages/8c/d1/f86cc96d2aa80e3881140d16d12ef2b491223f90b28b9a911346c04ac359/pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927", size = 1861742 }, - { url = "https://files.pythonhosted.org/packages/37/08/fbd2cd1e9fc735a0df0142fac41c114ad9602d1c004aea340169ae90973b/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db", size = 1910414 }, - { url = "https://files.pythonhosted.org/packages/7f/73/3ac217751decbf8d6cb9443cec9b9eb0130eeada6ae56403e11b486e277e/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48", size = 1996848 }, - { url = "https://files.pythonhosted.org/packages/9a/f5/5c26b265cdcff2661e2520d2d1e9db72d117ea00eb41e00a76efe68cb009/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969", size = 2141055 }, - { url = "https://files.pythonhosted.org/packages/5d/14/a9c3cee817ef2f8347c5ce0713e91867a0dceceefcb2973942855c917379/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e", size = 2753806 }, - { url = "https://files.pythonhosted.org/packages/f2/68/866ce83a51dd37e7c604ce0050ff6ad26de65a7799df89f4db87dd93d1d6/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89", size = 2007777 }, - { url = "https://files.pythonhosted.org/packages/b6/a8/36771f4404bb3e49bd6d4344da4dede0bf89cc1e01f3b723c47248a3761c/pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde", size = 2122803 }, - { url = "https://files.pythonhosted.org/packages/18/9c/730a09b2694aa89360d20756369822d98dc2f31b717c21df33b64ffd1f50/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65", size = 2086755 }, - { url = "https://files.pythonhosted.org/packages/54/8e/2dccd89602b5ec31d1c58138d02340ecb2ebb8c2cac3cc66b65ce3edb6ce/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc", size = 2257358 }, - { url = "https://files.pythonhosted.org/packages/d1/9c/126e4ac1bfad8a95a9837acdd0963695d69264179ba4ede8b8c40d741702/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091", size = 2257916 }, - { url = "https://files.pythonhosted.org/packages/7d/ba/91eea2047e681a6853c81c20aeca9dcdaa5402ccb7404a2097c2adf9d038/pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383", size = 1923823 }, - { url = "https://files.pythonhosted.org/packages/94/c0/fcdf739bf60d836a38811476f6ecd50374880b01e3014318b6e809ddfd52/pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504", size = 1952494 }, - { url = "https://files.pythonhosted.org/packages/d6/7f/c6298830cb780c46b4f46bb24298d01019ffa4d21769f39b908cd14bbd50/pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24", size = 2044224 }, - { url = "https://files.pythonhosted.org/packages/a8/65/6ab3a536776cad5343f625245bd38165d6663256ad43f3a200e5936afd6c/pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30", size = 1858845 }, - { url = "https://files.pythonhosted.org/packages/e9/15/9a22fd26ba5ee8c669d4b8c9c244238e940cd5d818649603ca81d1c69861/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595", size = 1910029 }, - { url = "https://files.pythonhosted.org/packages/d5/33/8cb1a62818974045086f55f604044bf35b9342900318f9a2a029a1bec460/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e", size = 1997784 }, - { url = "https://files.pythonhosted.org/packages/c0/ca/49958e4df7715c71773e1ea5be1c74544923d10319173264e6db122543f9/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a", size = 2141075 }, - { url = "https://files.pythonhosted.org/packages/7b/a6/0b3a167a9773c79ba834b959b4e18c3ae9216b8319bd8422792abc8a41b1/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505", size = 2745849 }, - { url = "https://files.pythonhosted.org/packages/0b/60/516484135173aa9e5861d7a0663dce82e4746d2e7f803627d8c25dfa5578/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f", size = 2005794 }, - { url = "https://files.pythonhosted.org/packages/86/70/05b1eb77459ad47de00cf78ee003016da0cedf8b9170260488d7c21e9181/pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77", size = 2123237 }, - { url = "https://files.pythonhosted.org/packages/c7/57/12667a1409c04ae7dc95d3b43158948eb0368e9c790be8b095cb60611459/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961", size = 2086351 }, - { url = "https://files.pythonhosted.org/packages/57/61/cc6d1d1c1664b58fdd6ecc64c84366c34ec9b606aeb66cafab6f4088974c/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1", size = 2258914 }, - { url = "https://files.pythonhosted.org/packages/d1/0a/edb137176a1f5419b2ddee8bde6a0a548cfa3c74f657f63e56232df8de88/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c", size = 2257385 }, - { url = "https://files.pythonhosted.org/packages/26/3c/48ca982d50e4b0e1d9954919c887bdc1c2b462801bf408613ccc641b3daa/pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896", size = 1923765 }, - { url = "https://files.pythonhosted.org/packages/33/cd/7ab70b99e5e21559f5de38a0928ea84e6f23fdef2b0d16a6feaf942b003c/pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83", size = 1950688 }, - { url = "https://files.pythonhosted.org/packages/4b/ae/db1fc237b82e2cacd379f63e3335748ab88b5adde98bf7544a1b1bd10a84/pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89", size = 1908185 }, - { url = "https://files.pythonhosted.org/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8", size = 2026640 }, - { url = "https://files.pythonhosted.org/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498", size = 1852649 }, - { url = "https://files.pythonhosted.org/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939", size = 1892472 }, - { url = "https://files.pythonhosted.org/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d", size = 1977509 }, - { url = "https://files.pythonhosted.org/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e", size = 2128702 }, - { url = "https://files.pythonhosted.org/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3", size = 2679428 }, - { url = "https://files.pythonhosted.org/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d", size = 2008753 }, - { url = "https://files.pythonhosted.org/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b", size = 2114849 }, - { url = "https://files.pythonhosted.org/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39", size = 2069541 }, - { url = "https://files.pythonhosted.org/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a", size = 2239225 }, - { url = "https://files.pythonhosted.org/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db", size = 2248373 }, - { url = "https://files.pythonhosted.org/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda", size = 1907034 }, - { url = "https://files.pythonhosted.org/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4", size = 1956848 }, - { url = "https://files.pythonhosted.org/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea", size = 1903986 }, - { url = "https://files.pythonhosted.org/packages/7a/24/eed3466a4308d79155f1cdd5c7432c80ddcc4530ba8623b79d5ced021641/pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a", size = 2033551 }, - { url = "https://files.pythonhosted.org/packages/ab/14/df54b1a0bc9b6ded9b758b73139d2c11b4e8eb43e8ab9c5847c0a2913ada/pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266", size = 1852785 }, - { url = "https://files.pythonhosted.org/packages/fa/96/e275f15ff3d34bb04b0125d9bc8848bf69f25d784d92a63676112451bfb9/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3", size = 1897758 }, - { url = "https://files.pythonhosted.org/packages/b7/d8/96bc536e975b69e3a924b507d2a19aedbf50b24e08c80fb00e35f9baaed8/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a", size = 1986109 }, - { url = "https://files.pythonhosted.org/packages/90/72/ab58e43ce7e900b88cb571ed057b2fcd0e95b708a2e0bed475b10130393e/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516", size = 2129159 }, - { url = "https://files.pythonhosted.org/packages/dc/3f/52d85781406886c6870ac995ec0ba7ccc028b530b0798c9080531b409fdb/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764", size = 2680222 }, - { url = "https://files.pythonhosted.org/packages/f4/56/6e2ef42f363a0eec0fd92f74a91e0ac48cd2e49b695aac1509ad81eee86a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d", size = 2006980 }, - { url = "https://files.pythonhosted.org/packages/4c/c0/604536c4379cc78359f9ee0aa319f4aedf6b652ec2854953f5a14fc38c5a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4", size = 2120840 }, - { url = "https://files.pythonhosted.org/packages/1f/46/9eb764814f508f0edfb291a0f75d10854d78113fa13900ce13729aaec3ae/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde", size = 2072518 }, - { url = "https://files.pythonhosted.org/packages/42/e3/fb6b2a732b82d1666fa6bf53e3627867ea3131c5f39f98ce92141e3e3dc1/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e", size = 2248025 }, - { url = "https://files.pythonhosted.org/packages/5c/9d/fbe8fe9d1aa4dac88723f10a921bc7418bd3378a567cb5e21193a3c48b43/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd", size = 2254991 }, - { url = "https://files.pythonhosted.org/packages/aa/99/07e2237b8a66438d9b26482332cda99a9acccb58d284af7bc7c946a42fd3/pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f", size = 1915262 }, - { url = "https://files.pythonhosted.org/packages/8a/f4/e457a7849beeed1e5defbcf5051c6f7b3c91a0624dd31543a64fc9adcf52/pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40", size = 1956626 }, - { url = "https://files.pythonhosted.org/packages/20/d0/e8d567a7cff7b04e017ae164d98011f1e1894269fe8e90ea187a3cbfb562/pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523", size = 1909590 }, - { url = "https://files.pythonhosted.org/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d", size = 1812963 }, - { url = "https://files.pythonhosted.org/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c", size = 1986896 }, - { url = "https://files.pythonhosted.org/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18", size = 1931810 }, - { url = "https://files.pythonhosted.org/packages/49/78/b86bad645cc3e8dfa6858c70ec38939bf350e54004837c48de09474b2b9e/pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb", size = 2044282 }, - { url = "https://files.pythonhosted.org/packages/3b/00/a02531331773b2bf08743d84c6b776bd6a449d23b3ae6b0e3229d568bac4/pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad", size = 1877598 }, - { url = "https://files.pythonhosted.org/packages/a1/fa/32cc152b84a1f420f8a7d80161373e8d87d4ffa077e67d6c8aab3ce1a6ab/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b", size = 1911021 }, - { url = "https://files.pythonhosted.org/packages/5e/87/ea553e0d98bce6c4876f8c50f65cb45597eff6e0aaa8b15813e9972bb19d/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5", size = 1997276 }, - { url = "https://files.pythonhosted.org/packages/f7/9b/60cb9f4b52158b3adac0066492bbadd0b8473f4f8da5bcc73972655b76ef/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331", size = 2141348 }, - { url = "https://files.pythonhosted.org/packages/9b/38/374d254e270d4de0add68a8239f4ed0f444fdd7b766ea69244fb9491dccb/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824", size = 2753708 }, - { url = "https://files.pythonhosted.org/packages/05/a8/fd79111eb5ab9bc4ef98d8fb0b3a2ffdc80107b2c59859a741ab379c96f8/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5", size = 2008699 }, - { url = "https://files.pythonhosted.org/packages/35/31/2e06619868eb4c18642c5601db420599c1cf9cf50fe868c9ac09cd298e24/pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6", size = 2123426 }, - { url = "https://files.pythonhosted.org/packages/4a/d0/3531e8783a311802e3db7ee5a1a5ed79e5706e930b1b4e3109ce15eeb681/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d", size = 2087330 }, - { url = "https://files.pythonhosted.org/packages/ac/32/5ff252ed73bacd7677a706ab17723e261a76793f98b305aa20cfc10bbd56/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96", size = 2258171 }, - { url = "https://files.pythonhosted.org/packages/c9/f9/e96e00f92b8f5b3e2cddc80c5ee6cf038f8a0f238c44b67b01759943a7b4/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599", size = 2258745 }, - { url = "https://files.pythonhosted.org/packages/54/1e/51c86688e809d94797fdf0efc41514f001caec982a05f62d90c180a9639d/pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5", size = 1923626 }, - { url = "https://files.pythonhosted.org/packages/57/18/c2da959fd8d019b70cadafdda2bf845378ada47973e0bad6cc84f56dbe6e/pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2", size = 1953703 }, - { url = "https://files.pythonhosted.org/packages/9c/c7/8b311d5adb0fe00a93ee9b4e92a02b0ec08510e9838885ef781ccbb20604/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02", size = 2041659 }, - { url = "https://files.pythonhosted.org/packages/8a/d6/4f58d32066a9e26530daaf9adc6664b01875ae0691570094968aaa7b8fcc/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068", size = 1873294 }, - { url = "https://files.pythonhosted.org/packages/f7/3f/53cc9c45d9229da427909c751f8ed2bf422414f7664ea4dde2d004f596ba/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e", size = 1903771 }, - { url = "https://files.pythonhosted.org/packages/f0/49/bf0783279ce674eb9903fb9ae43f6c614cb2f1c4951370258823f795368b/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe", size = 2083558 }, - { url = "https://files.pythonhosted.org/packages/9c/5b/0d998367687f986c7d8484a2c476d30f07bf5b8b1477649a6092bd4c540e/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1", size = 2118038 }, - { url = "https://files.pythonhosted.org/packages/b3/33/039287d410230ee125daee57373ac01940d3030d18dba1c29cd3089dc3ca/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7", size = 2079315 }, - { url = "https://files.pythonhosted.org/packages/1f/85/6d8b2646d99c062d7da2d0ab2faeb0d6ca9cca4c02da6076376042a20da3/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde", size = 2249063 }, - { url = "https://files.pythonhosted.org/packages/17/d7/c37d208d5738f7b9ad8f22ae8a727d88ebf9c16c04ed2475122cc3f7224a/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add", size = 2254631 }, - { url = "https://files.pythonhosted.org/packages/13/e0/bafa46476d328e4553b85ab9b2f7409e7aaef0ce4c937c894821c542d347/pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c", size = 2080877 }, - { url = "https://files.pythonhosted.org/packages/49/78/b86bad645cc3e8dfa6858c70ec38939bf350e54004837c48de09474b2b9e/pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb", size = 2044282 }, - { url = "https://files.pythonhosted.org/packages/3b/00/a02531331773b2bf08743d84c6b776bd6a449d23b3ae6b0e3229d568bac4/pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad", size = 1877598 }, - { url = "https://files.pythonhosted.org/packages/a1/fa/32cc152b84a1f420f8a7d80161373e8d87d4ffa077e67d6c8aab3ce1a6ab/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b", size = 1911021 }, - { url = "https://files.pythonhosted.org/packages/5e/87/ea553e0d98bce6c4876f8c50f65cb45597eff6e0aaa8b15813e9972bb19d/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5", size = 1997276 }, - { url = "https://files.pythonhosted.org/packages/f7/9b/60cb9f4b52158b3adac0066492bbadd0b8473f4f8da5bcc73972655b76ef/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331", size = 2141348 }, - { url = "https://files.pythonhosted.org/packages/9b/38/374d254e270d4de0add68a8239f4ed0f444fdd7b766ea69244fb9491dccb/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824", size = 2753708 }, - { url = "https://files.pythonhosted.org/packages/05/a8/fd79111eb5ab9bc4ef98d8fb0b3a2ffdc80107b2c59859a741ab379c96f8/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5", size = 2008699 }, - { url = "https://files.pythonhosted.org/packages/35/31/2e06619868eb4c18642c5601db420599c1cf9cf50fe868c9ac09cd298e24/pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6", size = 2123426 }, - { url = "https://files.pythonhosted.org/packages/4a/d0/3531e8783a311802e3db7ee5a1a5ed79e5706e930b1b4e3109ce15eeb681/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d", size = 2087330 }, - { url = "https://files.pythonhosted.org/packages/ac/32/5ff252ed73bacd7677a706ab17723e261a76793f98b305aa20cfc10bbd56/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96", size = 2258171 }, - { url = "https://files.pythonhosted.org/packages/c9/f9/e96e00f92b8f5b3e2cddc80c5ee6cf038f8a0f238c44b67b01759943a7b4/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599", size = 2258745 }, - { url = "https://files.pythonhosted.org/packages/54/1e/51c86688e809d94797fdf0efc41514f001caec982a05f62d90c180a9639d/pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5", size = 1923626 }, - { url = "https://files.pythonhosted.org/packages/57/18/c2da959fd8d019b70cadafdda2bf845378ada47973e0bad6cc84f56dbe6e/pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2", size = 1953703 }, - { url = "https://files.pythonhosted.org/packages/9c/c7/8b311d5adb0fe00a93ee9b4e92a02b0ec08510e9838885ef781ccbb20604/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02", size = 2041659 }, - { url = "https://files.pythonhosted.org/packages/8a/d6/4f58d32066a9e26530daaf9adc6664b01875ae0691570094968aaa7b8fcc/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068", size = 1873294 }, - { url = "https://files.pythonhosted.org/packages/f7/3f/53cc9c45d9229da427909c751f8ed2bf422414f7664ea4dde2d004f596ba/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e", size = 1903771 }, - { url = "https://files.pythonhosted.org/packages/f0/49/bf0783279ce674eb9903fb9ae43f6c614cb2f1c4951370258823f795368b/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe", size = 2083558 }, - { url = "https://files.pythonhosted.org/packages/9c/5b/0d998367687f986c7d8484a2c476d30f07bf5b8b1477649a6092bd4c540e/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1", size = 2118038 }, - { url = "https://files.pythonhosted.org/packages/b3/33/039287d410230ee125daee57373ac01940d3030d18dba1c29cd3089dc3ca/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7", size = 2079315 }, - { url = "https://files.pythonhosted.org/packages/1f/85/6d8b2646d99c062d7da2d0ab2faeb0d6ca9cca4c02da6076376042a20da3/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde", size = 2249063 }, - { url = "https://files.pythonhosted.org/packages/17/d7/c37d208d5738f7b9ad8f22ae8a727d88ebf9c16c04ed2475122cc3f7224a/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add", size = 2254631 }, - { url = "https://files.pythonhosted.org/packages/13/e0/bafa46476d328e4553b85ab9b2f7409e7aaef0ce4c937c894821c542d347/pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c", size = 2080877 }, - { url = "https://files.pythonhosted.org/packages/0b/76/1794e440c1801ed35415238d2c728f26cd12695df9057154ad768b7b991c/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a", size = 2042858 }, - { url = "https://files.pythonhosted.org/packages/73/b4/9cd7b081fb0b1b4f8150507cd59d27b275c3e22ad60b35cb19ea0977d9b9/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc", size = 1873745 }, - { url = "https://files.pythonhosted.org/packages/e1/d7/9ddb7575d4321e40d0363903c2576c8c0c3280ebea137777e5ab58d723e3/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b", size = 1904188 }, - { url = "https://files.pythonhosted.org/packages/d1/a8/3194ccfe461bb08da19377ebec8cb4f13c9bd82e13baebc53c5c7c39a029/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe", size = 2083479 }, - { url = "https://files.pythonhosted.org/packages/42/c7/84cb569555d7179ca0b3f838cef08f66f7089b54432f5b8599aac6e9533e/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5", size = 2118415 }, - { url = "https://files.pythonhosted.org/packages/3b/67/72abb8c73e0837716afbb58a59cc9e3ae43d1aa8677f3b4bc72c16142716/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761", size = 2079623 }, - { url = "https://files.pythonhosted.org/packages/0b/cd/c59707e35a47ba4cbbf153c3f7c56420c58653b5801b055dc52cccc8e2dc/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850", size = 2250175 }, - { url = "https://files.pythonhosted.org/packages/84/32/e4325a6676b0bed32d5b084566ec86ed7fd1e9bcbfc49c578b1755bde920/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544", size = 2254674 }, - { url = "https://files.pythonhosted.org/packages/12/6f/5596dc418f2e292ffc661d21931ab34591952e2843e7168ea5a52591f6ff/pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5", size = 2080951 }, - { url = "https://files.pythonhosted.org/packages/2d/a8/c2c8f29bd18f7ef52de32a6deb9e3ee87ba18b7b2122636aa9f4438cf627/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea", size = 2041791 }, - { url = "https://files.pythonhosted.org/packages/08/ad/328081b1c82543ae49d0650048305058583c51f1a9a56a0d6e87bb3a2443/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd", size = 1873579 }, - { url = "https://files.pythonhosted.org/packages/6e/8a/bc65dbf7e501e88367cdab06a2c1340457c785f0c72288cae737fd80c0fa/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568", size = 1904189 }, - { url = "https://files.pythonhosted.org/packages/9a/db/30ca6aefda211fb01ef185ca73cb7a0c6e7fe952c524025c8782b5acd771/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396", size = 2084446 }, - { url = "https://files.pythonhosted.org/packages/f2/89/a12b55286e30c9f476eab7c53c9249ec76faf70430596496ab0309f28629/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5", size = 2118215 }, - { url = "https://files.pythonhosted.org/packages/8e/55/12721c4a8d7951584ad3d9848b44442559cf1876e0bb424148d1060636b3/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33", size = 2079963 }, - { url = "https://files.pythonhosted.org/packages/bd/0c/3391bd5d6ff62ea998db94732528d9bc32c560b0ed861c39119759461946/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b", size = 2249388 }, - { url = "https://files.pythonhosted.org/packages/d3/5f/3e4feb042998d7886a9b523b372d83955cbc192a07013dcd24276db078ee/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672", size = 2255226 }, - { url = "https://files.pythonhosted.org/packages/25/f2/1647933efaaad61846109a27619f3704929e758a09e6431b8f932a053d40/pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3", size = 2081073 }, - { url = "https://files.pythonhosted.org/packages/2d/a8/c2c8f29bd18f7ef52de32a6deb9e3ee87ba18b7b2122636aa9f4438cf627/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea", size = 2041791 }, - { url = "https://files.pythonhosted.org/packages/08/ad/328081b1c82543ae49d0650048305058583c51f1a9a56a0d6e87bb3a2443/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd", size = 1873579 }, - { url = "https://files.pythonhosted.org/packages/6e/8a/bc65dbf7e501e88367cdab06a2c1340457c785f0c72288cae737fd80c0fa/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568", size = 1904189 }, - { url = "https://files.pythonhosted.org/packages/9a/db/30ca6aefda211fb01ef185ca73cb7a0c6e7fe952c524025c8782b5acd771/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396", size = 2084446 }, - { url = "https://files.pythonhosted.org/packages/f2/89/a12b55286e30c9f476eab7c53c9249ec76faf70430596496ab0309f28629/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5", size = 2118215 }, - { url = "https://files.pythonhosted.org/packages/8e/55/12721c4a8d7951584ad3d9848b44442559cf1876e0bb424148d1060636b3/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33", size = 2079963 }, - { url = "https://files.pythonhosted.org/packages/bd/0c/3391bd5d6ff62ea998db94732528d9bc32c560b0ed861c39119759461946/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b", size = 2249388 }, - { url = "https://files.pythonhosted.org/packages/d3/5f/3e4feb042998d7886a9b523b372d83955cbc192a07013dcd24276db078ee/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672", size = 2255226 }, - { url = "https://files.pythonhosted.org/packages/25/f2/1647933efaaad61846109a27619f3704929e758a09e6431b8f932a053d40/pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3", size = 2081073 }, + { url = "https://files.pythonhosted.org/packages/38/ea/5f572806ab4d4223d11551af814d243b0e3e02cc6913def4d1fe4a5ca41c/pydantic_core-2.33.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3077cfdb6125cc8dab61b155fdd714663e401f0e6883f9632118ec12cf42df26", size = 2044021, upload_time = "2025-04-02T09:46:45.065Z" }, + { url = "https://files.pythonhosted.org/packages/8c/d1/f86cc96d2aa80e3881140d16d12ef2b491223f90b28b9a911346c04ac359/pydantic_core-2.33.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ffab8b2908d152e74862d276cf5017c81a2f3719f14e8e3e8d6b83fda863927", size = 1861742, upload_time = "2025-04-02T09:46:46.684Z" }, + { url = "https://files.pythonhosted.org/packages/37/08/fbd2cd1e9fc735a0df0142fac41c114ad9602d1c004aea340169ae90973b/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5183e4f6a2d468787243ebcd70cf4098c247e60d73fb7d68d5bc1e1beaa0c4db", size = 1910414, upload_time = "2025-04-02T09:46:48.263Z" }, + { url = "https://files.pythonhosted.org/packages/7f/73/3ac217751decbf8d6cb9443cec9b9eb0130eeada6ae56403e11b486e277e/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:398a38d323f37714023be1e0285765f0a27243a8b1506b7b7de87b647b517e48", size = 1996848, upload_time = "2025-04-02T09:46:49.441Z" }, + { url = "https://files.pythonhosted.org/packages/9a/f5/5c26b265cdcff2661e2520d2d1e9db72d117ea00eb41e00a76efe68cb009/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:87d3776f0001b43acebfa86f8c64019c043b55cc5a6a2e313d728b5c95b46969", size = 2141055, upload_time = "2025-04-02T09:46:50.602Z" }, + { url = "https://files.pythonhosted.org/packages/5d/14/a9c3cee817ef2f8347c5ce0713e91867a0dceceefcb2973942855c917379/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c566dd9c5f63d22226409553531f89de0cac55397f2ab8d97d6f06cfce6d947e", size = 2753806, upload_time = "2025-04-02T09:46:52.116Z" }, + { url = "https://files.pythonhosted.org/packages/f2/68/866ce83a51dd37e7c604ce0050ff6ad26de65a7799df89f4db87dd93d1d6/pydantic_core-2.33.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d5f3acc81452c56895e90643a625302bd6be351e7010664151cc55b7b97f89", size = 2007777, upload_time = "2025-04-02T09:46:53.675Z" }, + { url = "https://files.pythonhosted.org/packages/b6/a8/36771f4404bb3e49bd6d4344da4dede0bf89cc1e01f3b723c47248a3761c/pydantic_core-2.33.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3a07fadec2a13274a8d861d3d37c61e97a816beae717efccaa4b36dfcaadcde", size = 2122803, upload_time = "2025-04-02T09:46:55.789Z" }, + { url = "https://files.pythonhosted.org/packages/18/9c/730a09b2694aa89360d20756369822d98dc2f31b717c21df33b64ffd1f50/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:f99aeda58dce827f76963ee87a0ebe75e648c72ff9ba1174a253f6744f518f65", size = 2086755, upload_time = "2025-04-02T09:46:56.956Z" }, + { url = "https://files.pythonhosted.org/packages/54/8e/2dccd89602b5ec31d1c58138d02340ecb2ebb8c2cac3cc66b65ce3edb6ce/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:902dbc832141aa0ec374f4310f1e4e7febeebc3256f00dc359a9ac3f264a45dc", size = 2257358, upload_time = "2025-04-02T09:46:58.445Z" }, + { url = "https://files.pythonhosted.org/packages/d1/9c/126e4ac1bfad8a95a9837acdd0963695d69264179ba4ede8b8c40d741702/pydantic_core-2.33.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fe44d56aa0b00d66640aa84a3cbe80b7a3ccdc6f0b1ca71090696a6d4777c091", size = 2257916, upload_time = "2025-04-02T09:46:59.726Z" }, + { url = "https://files.pythonhosted.org/packages/7d/ba/91eea2047e681a6853c81c20aeca9dcdaa5402ccb7404a2097c2adf9d038/pydantic_core-2.33.1-cp310-cp310-win32.whl", hash = "sha256:ed3eb16d51257c763539bde21e011092f127a2202692afaeaccb50db55a31383", size = 1923823, upload_time = "2025-04-02T09:47:01.278Z" }, + { url = "https://files.pythonhosted.org/packages/94/c0/fcdf739bf60d836a38811476f6ecd50374880b01e3014318b6e809ddfd52/pydantic_core-2.33.1-cp310-cp310-win_amd64.whl", hash = "sha256:694ad99a7f6718c1a498dc170ca430687a39894a60327f548e02a9c7ee4b6504", size = 1952494, upload_time = "2025-04-02T09:47:02.976Z" }, + { url = "https://files.pythonhosted.org/packages/d6/7f/c6298830cb780c46b4f46bb24298d01019ffa4d21769f39b908cd14bbd50/pydantic_core-2.33.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6e966fc3caaf9f1d96b349b0341c70c8d6573bf1bac7261f7b0ba88f96c56c24", size = 2044224, upload_time = "2025-04-02T09:47:04.199Z" }, + { url = "https://files.pythonhosted.org/packages/a8/65/6ab3a536776cad5343f625245bd38165d6663256ad43f3a200e5936afd6c/pydantic_core-2.33.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bfd0adeee563d59c598ceabddf2c92eec77abcb3f4a391b19aa7366170bd9e30", size = 1858845, upload_time = "2025-04-02T09:47:05.686Z" }, + { url = "https://files.pythonhosted.org/packages/e9/15/9a22fd26ba5ee8c669d4b8c9c244238e940cd5d818649603ca81d1c69861/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91815221101ad3c6b507804178a7bb5cb7b2ead9ecd600041669c8d805ebd595", size = 1910029, upload_time = "2025-04-02T09:47:07.042Z" }, + { url = "https://files.pythonhosted.org/packages/d5/33/8cb1a62818974045086f55f604044bf35b9342900318f9a2a029a1bec460/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9fea9c1869bb4742d174a57b4700c6dadea951df8b06de40c2fedb4f02931c2e", size = 1997784, upload_time = "2025-04-02T09:47:08.63Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ca/49958e4df7715c71773e1ea5be1c74544923d10319173264e6db122543f9/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d20eb4861329bb2484c021b9d9a977566ab16d84000a57e28061151c62b349a", size = 2141075, upload_time = "2025-04-02T09:47:10.267Z" }, + { url = "https://files.pythonhosted.org/packages/7b/a6/0b3a167a9773c79ba834b959b4e18c3ae9216b8319bd8422792abc8a41b1/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb935c5591573ae3201640579f30128ccc10739b45663f93c06796854405505", size = 2745849, upload_time = "2025-04-02T09:47:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/0b/60/516484135173aa9e5861d7a0663dce82e4746d2e7f803627d8c25dfa5578/pydantic_core-2.33.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c964fd24e6166420d18fb53996d8c9fd6eac9bf5ae3ec3d03015be4414ce497f", size = 2005794, upload_time = "2025-04-02T09:47:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/86/70/05b1eb77459ad47de00cf78ee003016da0cedf8b9170260488d7c21e9181/pydantic_core-2.33.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:681d65e9011f7392db5aa002b7423cc442d6a673c635668c227c6c8d0e5a4f77", size = 2123237, upload_time = "2025-04-02T09:47:14.355Z" }, + { url = "https://files.pythonhosted.org/packages/c7/57/12667a1409c04ae7dc95d3b43158948eb0368e9c790be8b095cb60611459/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e100c52f7355a48413e2999bfb4e139d2977a904495441b374f3d4fb4a170961", size = 2086351, upload_time = "2025-04-02T09:47:15.676Z" }, + { url = "https://files.pythonhosted.org/packages/57/61/cc6d1d1c1664b58fdd6ecc64c84366c34ec9b606aeb66cafab6f4088974c/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:048831bd363490be79acdd3232f74a0e9951b11b2b4cc058aeb72b22fdc3abe1", size = 2258914, upload_time = "2025-04-02T09:47:17Z" }, + { url = "https://files.pythonhosted.org/packages/d1/0a/edb137176a1f5419b2ddee8bde6a0a548cfa3c74f657f63e56232df8de88/pydantic_core-2.33.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bdc84017d28459c00db6f918a7272a5190bec3090058334e43a76afb279eac7c", size = 2257385, upload_time = "2025-04-02T09:47:18.631Z" }, + { url = "https://files.pythonhosted.org/packages/26/3c/48ca982d50e4b0e1d9954919c887bdc1c2b462801bf408613ccc641b3daa/pydantic_core-2.33.1-cp311-cp311-win32.whl", hash = "sha256:32cd11c5914d1179df70406427097c7dcde19fddf1418c787540f4b730289896", size = 1923765, upload_time = "2025-04-02T09:47:20.34Z" }, + { url = "https://files.pythonhosted.org/packages/33/cd/7ab70b99e5e21559f5de38a0928ea84e6f23fdef2b0d16a6feaf942b003c/pydantic_core-2.33.1-cp311-cp311-win_amd64.whl", hash = "sha256:2ea62419ba8c397e7da28a9170a16219d310d2cf4970dbc65c32faf20d828c83", size = 1950688, upload_time = "2025-04-02T09:47:22.029Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ae/db1fc237b82e2cacd379f63e3335748ab88b5adde98bf7544a1b1bd10a84/pydantic_core-2.33.1-cp311-cp311-win_arm64.whl", hash = "sha256:fc903512177361e868bc1f5b80ac8c8a6e05fcdd574a5fb5ffeac5a9982b9e89", size = 1908185, upload_time = "2025-04-02T09:47:23.385Z" }, + { url = "https://files.pythonhosted.org/packages/c8/ce/3cb22b07c29938f97ff5f5bb27521f95e2ebec399b882392deb68d6c440e/pydantic_core-2.33.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:1293d7febb995e9d3ec3ea09caf1a26214eec45b0f29f6074abb004723fc1de8", size = 2026640, upload_time = "2025-04-02T09:47:25.394Z" }, + { url = "https://files.pythonhosted.org/packages/19/78/f381d643b12378fee782a72126ec5d793081ef03791c28a0fd542a5bee64/pydantic_core-2.33.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:99b56acd433386c8f20be5c4000786d1e7ca0523c8eefc995d14d79c7a081498", size = 1852649, upload_time = "2025-04-02T09:47:27.417Z" }, + { url = "https://files.pythonhosted.org/packages/9d/2b/98a37b80b15aac9eb2c6cfc6dbd35e5058a352891c5cce3a8472d77665a6/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35a5ec3fa8c2fe6c53e1b2ccc2454398f95d5393ab398478f53e1afbbeb4d939", size = 1892472, upload_time = "2025-04-02T09:47:29.006Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d4/3c59514e0f55a161004792b9ff3039da52448f43f5834f905abef9db6e4a/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b172f7b9d2f3abc0efd12e3386f7e48b576ef309544ac3a63e5e9cdd2e24585d", size = 1977509, upload_time = "2025-04-02T09:47:33.464Z" }, + { url = "https://files.pythonhosted.org/packages/a9/b6/c2c7946ef70576f79a25db59a576bce088bdc5952d1b93c9789b091df716/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9097b9f17f91eea659b9ec58148c0747ec354a42f7389b9d50701610d86f812e", size = 2128702, upload_time = "2025-04-02T09:47:34.812Z" }, + { url = "https://files.pythonhosted.org/packages/88/fe/65a880f81e3f2a974312b61f82a03d85528f89a010ce21ad92f109d94deb/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc77ec5b7e2118b152b0d886c7514a4653bcb58c6b1d760134a9fab915f777b3", size = 2679428, upload_time = "2025-04-02T09:47:37.315Z" }, + { url = "https://files.pythonhosted.org/packages/6f/ff/4459e4146afd0462fb483bb98aa2436d69c484737feaceba1341615fb0ac/pydantic_core-2.33.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3d15245b08fa4a84cefc6c9222e6f37c98111c8679fbd94aa145f9a0ae23d", size = 2008753, upload_time = "2025-04-02T09:47:39.013Z" }, + { url = "https://files.pythonhosted.org/packages/7c/76/1c42e384e8d78452ededac8b583fe2550c84abfef83a0552e0e7478ccbc3/pydantic_core-2.33.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ef99779001d7ac2e2461d8ab55d3373fe7315caefdbecd8ced75304ae5a6fc6b", size = 2114849, upload_time = "2025-04-02T09:47:40.427Z" }, + { url = "https://files.pythonhosted.org/packages/00/72/7d0cf05095c15f7ffe0eb78914b166d591c0eed72f294da68378da205101/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fc6bf8869e193855e8d91d91f6bf59699a5cdfaa47a404e278e776dd7f168b39", size = 2069541, upload_time = "2025-04-02T09:47:42.01Z" }, + { url = "https://files.pythonhosted.org/packages/b3/69/94a514066bb7d8be499aa764926937409d2389c09be0b5107a970286ef81/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:b1caa0bc2741b043db7823843e1bde8aaa58a55a58fda06083b0569f8b45693a", size = 2239225, upload_time = "2025-04-02T09:47:43.425Z" }, + { url = "https://files.pythonhosted.org/packages/84/b0/e390071eadb44b41f4f54c3cef64d8bf5f9612c92686c9299eaa09e267e2/pydantic_core-2.33.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ec259f62538e8bf364903a7d0d0239447059f9434b284f5536e8402b7dd198db", size = 2248373, upload_time = "2025-04-02T09:47:44.979Z" }, + { url = "https://files.pythonhosted.org/packages/d6/b2/288b3579ffc07e92af66e2f1a11be3b056fe1214aab314748461f21a31c3/pydantic_core-2.33.1-cp312-cp312-win32.whl", hash = "sha256:e14f369c98a7c15772b9da98987f58e2b509a93235582838bd0d1d8c08b68fda", size = 1907034, upload_time = "2025-04-02T09:47:46.843Z" }, + { url = "https://files.pythonhosted.org/packages/02/28/58442ad1c22b5b6742b992ba9518420235adced665513868f99a1c2638a5/pydantic_core-2.33.1-cp312-cp312-win_amd64.whl", hash = "sha256:1c607801d85e2e123357b3893f82c97a42856192997b95b4d8325deb1cd0c5f4", size = 1956848, upload_time = "2025-04-02T09:47:48.404Z" }, + { url = "https://files.pythonhosted.org/packages/a1/eb/f54809b51c7e2a1d9f439f158b8dd94359321abcc98767e16fc48ae5a77e/pydantic_core-2.33.1-cp312-cp312-win_arm64.whl", hash = "sha256:8d13f0276806ee722e70a1c93da19748594f19ac4299c7e41237fc791d1861ea", size = 1903986, upload_time = "2025-04-02T09:47:49.839Z" }, + { url = "https://files.pythonhosted.org/packages/7a/24/eed3466a4308d79155f1cdd5c7432c80ddcc4530ba8623b79d5ced021641/pydantic_core-2.33.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:70af6a21237b53d1fe7b9325b20e65cbf2f0a848cf77bed492b029139701e66a", size = 2033551, upload_time = "2025-04-02T09:47:51.648Z" }, + { url = "https://files.pythonhosted.org/packages/ab/14/df54b1a0bc9b6ded9b758b73139d2c11b4e8eb43e8ab9c5847c0a2913ada/pydantic_core-2.33.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:282b3fe1bbbe5ae35224a0dbd05aed9ccabccd241e8e6b60370484234b456266", size = 1852785, upload_time = "2025-04-02T09:47:53.149Z" }, + { url = "https://files.pythonhosted.org/packages/fa/96/e275f15ff3d34bb04b0125d9bc8848bf69f25d784d92a63676112451bfb9/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b315e596282bbb5822d0c7ee9d255595bd7506d1cb20c2911a4da0b970187d3", size = 1897758, upload_time = "2025-04-02T09:47:55.006Z" }, + { url = "https://files.pythonhosted.org/packages/b7/d8/96bc536e975b69e3a924b507d2a19aedbf50b24e08c80fb00e35f9baaed8/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1dfae24cf9921875ca0ca6a8ecb4bb2f13c855794ed0d468d6abbec6e6dcd44a", size = 1986109, upload_time = "2025-04-02T09:47:56.532Z" }, + { url = "https://files.pythonhosted.org/packages/90/72/ab58e43ce7e900b88cb571ed057b2fcd0e95b708a2e0bed475b10130393e/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6dd8ecfde08d8bfadaea669e83c63939af76f4cf5538a72597016edfa3fad516", size = 2129159, upload_time = "2025-04-02T09:47:58.088Z" }, + { url = "https://files.pythonhosted.org/packages/dc/3f/52d85781406886c6870ac995ec0ba7ccc028b530b0798c9080531b409fdb/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f593494876eae852dc98c43c6f260f45abdbfeec9e4324e31a481d948214764", size = 2680222, upload_time = "2025-04-02T09:47:59.591Z" }, + { url = "https://files.pythonhosted.org/packages/f4/56/6e2ef42f363a0eec0fd92f74a91e0ac48cd2e49b695aac1509ad81eee86a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:948b73114f47fd7016088e5186d13faf5e1b2fe83f5e320e371f035557fd264d", size = 2006980, upload_time = "2025-04-02T09:48:01.397Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c0/604536c4379cc78359f9ee0aa319f4aedf6b652ec2854953f5a14fc38c5a/pydantic_core-2.33.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e11f3864eb516af21b01e25fac915a82e9ddad3bb0fb9e95a246067398b435a4", size = 2120840, upload_time = "2025-04-02T09:48:03.056Z" }, + { url = "https://files.pythonhosted.org/packages/1f/46/9eb764814f508f0edfb291a0f75d10854d78113fa13900ce13729aaec3ae/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:549150be302428b56fdad0c23c2741dcdb5572413776826c965619a25d9c6bde", size = 2072518, upload_time = "2025-04-02T09:48:04.662Z" }, + { url = "https://files.pythonhosted.org/packages/42/e3/fb6b2a732b82d1666fa6bf53e3627867ea3131c5f39f98ce92141e3e3dc1/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:495bc156026efafd9ef2d82372bd38afce78ddd82bf28ef5276c469e57c0c83e", size = 2248025, upload_time = "2025-04-02T09:48:06.226Z" }, + { url = "https://files.pythonhosted.org/packages/5c/9d/fbe8fe9d1aa4dac88723f10a921bc7418bd3378a567cb5e21193a3c48b43/pydantic_core-2.33.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ec79de2a8680b1a67a07490bddf9636d5c2fab609ba8c57597e855fa5fa4dacd", size = 2254991, upload_time = "2025-04-02T09:48:08.114Z" }, + { url = "https://files.pythonhosted.org/packages/aa/99/07e2237b8a66438d9b26482332cda99a9acccb58d284af7bc7c946a42fd3/pydantic_core-2.33.1-cp313-cp313-win32.whl", hash = "sha256:ee12a7be1742f81b8a65b36c6921022301d466b82d80315d215c4c691724986f", size = 1915262, upload_time = "2025-04-02T09:48:09.708Z" }, + { url = "https://files.pythonhosted.org/packages/8a/f4/e457a7849beeed1e5defbcf5051c6f7b3c91a0624dd31543a64fc9adcf52/pydantic_core-2.33.1-cp313-cp313-win_amd64.whl", hash = "sha256:ede9b407e39949d2afc46385ce6bd6e11588660c26f80576c11c958e6647bc40", size = 1956626, upload_time = "2025-04-02T09:48:11.288Z" }, + { url = "https://files.pythonhosted.org/packages/20/d0/e8d567a7cff7b04e017ae164d98011f1e1894269fe8e90ea187a3cbfb562/pydantic_core-2.33.1-cp313-cp313-win_arm64.whl", hash = "sha256:aa687a23d4b7871a00e03ca96a09cad0f28f443690d300500603bd0adba4b523", size = 1909590, upload_time = "2025-04-02T09:48:12.861Z" }, + { url = "https://files.pythonhosted.org/packages/ef/fd/24ea4302d7a527d672c5be06e17df16aabfb4e9fdc6e0b345c21580f3d2a/pydantic_core-2.33.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:401d7b76e1000d0dd5538e6381d28febdcacb097c8d340dde7d7fc6e13e9f95d", size = 1812963, upload_time = "2025-04-02T09:48:14.553Z" }, + { url = "https://files.pythonhosted.org/packages/5f/95/4fbc2ecdeb5c1c53f1175a32d870250194eb2fdf6291b795ab08c8646d5d/pydantic_core-2.33.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7aeb055a42d734c0255c9e489ac67e75397d59c6fbe60d155851e9782f276a9c", size = 1986896, upload_time = "2025-04-02T09:48:16.222Z" }, + { url = "https://files.pythonhosted.org/packages/71/ae/fe31e7f4a62431222d8f65a3bd02e3fa7e6026d154a00818e6d30520ea77/pydantic_core-2.33.1-cp313-cp313t-win_amd64.whl", hash = "sha256:338ea9b73e6e109f15ab439e62cb3b78aa752c7fd9536794112e14bee02c8d18", size = 1931810, upload_time = "2025-04-02T09:48:17.97Z" }, + { url = "https://files.pythonhosted.org/packages/49/78/b86bad645cc3e8dfa6858c70ec38939bf350e54004837c48de09474b2b9e/pydantic_core-2.33.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5ab77f45d33d264de66e1884fca158bc920cb5e27fd0764a72f72f5756ae8bdb", size = 2044282, upload_time = "2025-04-02T09:48:19.849Z" }, + { url = "https://files.pythonhosted.org/packages/3b/00/a02531331773b2bf08743d84c6b776bd6a449d23b3ae6b0e3229d568bac4/pydantic_core-2.33.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e7aaba1b4b03aaea7bb59e1b5856d734be011d3e6d98f5bcaa98cb30f375f2ad", size = 1877598, upload_time = "2025-04-02T09:48:22.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fa/32cc152b84a1f420f8a7d80161373e8d87d4ffa077e67d6c8aab3ce1a6ab/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb66263e9ba8fea2aa85e1e5578980d127fb37d7f2e292773e7bc3a38fb0c7b", size = 1911021, upload_time = "2025-04-02T09:48:24.592Z" }, + { url = "https://files.pythonhosted.org/packages/5e/87/ea553e0d98bce6c4876f8c50f65cb45597eff6e0aaa8b15813e9972bb19d/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f2648b9262607a7fb41d782cc263b48032ff7a03a835581abbf7a3bec62bcf5", size = 1997276, upload_time = "2025-04-02T09:48:26.314Z" }, + { url = "https://files.pythonhosted.org/packages/f7/9b/60cb9f4b52158b3adac0066492bbadd0b8473f4f8da5bcc73972655b76ef/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:723c5630c4259400818b4ad096735a829074601805d07f8cafc366d95786d331", size = 2141348, upload_time = "2025-04-02T09:48:28.298Z" }, + { url = "https://files.pythonhosted.org/packages/9b/38/374d254e270d4de0add68a8239f4ed0f444fdd7b766ea69244fb9491dccb/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d100e3ae783d2167782391e0c1c7a20a31f55f8015f3293647544df3f9c67824", size = 2753708, upload_time = "2025-04-02T09:48:29.987Z" }, + { url = "https://files.pythonhosted.org/packages/05/a8/fd79111eb5ab9bc4ef98d8fb0b3a2ffdc80107b2c59859a741ab379c96f8/pydantic_core-2.33.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:177d50460bc976a0369920b6c744d927b0ecb8606fb56858ff542560251b19e5", size = 2008699, upload_time = "2025-04-02T09:48:31.76Z" }, + { url = "https://files.pythonhosted.org/packages/35/31/2e06619868eb4c18642c5601db420599c1cf9cf50fe868c9ac09cd298e24/pydantic_core-2.33.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a3edde68d1a1f9af1273b2fe798997b33f90308fb6d44d8550c89fc6a3647cf6", size = 2123426, upload_time = "2025-04-02T09:48:33.623Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d0/3531e8783a311802e3db7ee5a1a5ed79e5706e930b1b4e3109ce15eeb681/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a62c3c3ef6a7e2c45f7853b10b5bc4ddefd6ee3cd31024754a1a5842da7d598d", size = 2087330, upload_time = "2025-04-02T09:48:35.387Z" }, + { url = "https://files.pythonhosted.org/packages/ac/32/5ff252ed73bacd7677a706ab17723e261a76793f98b305aa20cfc10bbd56/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:c91dbb0ab683fa0cd64a6e81907c8ff41d6497c346890e26b23de7ee55353f96", size = 2258171, upload_time = "2025-04-02T09:48:37.559Z" }, + { url = "https://files.pythonhosted.org/packages/c9/f9/e96e00f92b8f5b3e2cddc80c5ee6cf038f8a0f238c44b67b01759943a7b4/pydantic_core-2.33.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f466e8bf0a62dc43e068c12166281c2eca72121dd2adc1040f3aa1e21ef8599", size = 2258745, upload_time = "2025-04-02T09:48:39.413Z" }, + { url = "https://files.pythonhosted.org/packages/54/1e/51c86688e809d94797fdf0efc41514f001caec982a05f62d90c180a9639d/pydantic_core-2.33.1-cp39-cp39-win32.whl", hash = "sha256:ab0277cedb698749caada82e5d099dc9fed3f906a30d4c382d1a21725777a1e5", size = 1923626, upload_time = "2025-04-02T09:48:41.24Z" }, + { url = "https://files.pythonhosted.org/packages/57/18/c2da959fd8d019b70cadafdda2bf845378ada47973e0bad6cc84f56dbe6e/pydantic_core-2.33.1-cp39-cp39-win_amd64.whl", hash = "sha256:5773da0ee2d17136b1f1c6fbde543398d452a6ad2a7b54ea1033e2daa739b8d2", size = 1953703, upload_time = "2025-04-02T09:48:43.196Z" }, + { url = "https://files.pythonhosted.org/packages/9c/c7/8b311d5adb0fe00a93ee9b4e92a02b0ec08510e9838885ef781ccbb20604/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c834f54f8f4640fd7e4b193f80eb25a0602bba9e19b3cd2fc7ffe8199f5ae02", size = 2041659, upload_time = "2025-04-02T09:48:45.342Z" }, + { url = "https://files.pythonhosted.org/packages/8a/d6/4f58d32066a9e26530daaf9adc6664b01875ae0691570094968aaa7b8fcc/pydantic_core-2.33.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:049e0de24cf23766f12cc5cc71d8abc07d4a9deb9061b334b62093dedc7cb068", size = 1873294, upload_time = "2025-04-02T09:48:47.548Z" }, + { url = "https://files.pythonhosted.org/packages/f7/3f/53cc9c45d9229da427909c751f8ed2bf422414f7664ea4dde2d004f596ba/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a28239037b3d6f16916a4c831a5a0eadf856bdd6d2e92c10a0da3a59eadcf3e", size = 1903771, upload_time = "2025-04-02T09:48:49.468Z" }, + { url = "https://files.pythonhosted.org/packages/f0/49/bf0783279ce674eb9903fb9ae43f6c614cb2f1c4951370258823f795368b/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d3da303ab5f378a268fa7d45f37d7d85c3ec19769f28d2cc0c61826a8de21fe", size = 2083558, upload_time = "2025-04-02T09:48:51.409Z" }, + { url = "https://files.pythonhosted.org/packages/9c/5b/0d998367687f986c7d8484a2c476d30f07bf5b8b1477649a6092bd4c540e/pydantic_core-2.33.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:25626fb37b3c543818c14821afe0fd3830bc327a43953bc88db924b68c5723f1", size = 2118038, upload_time = "2025-04-02T09:48:53.702Z" }, + { url = "https://files.pythonhosted.org/packages/b3/33/039287d410230ee125daee57373ac01940d3030d18dba1c29cd3089dc3ca/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3ab2d36e20fbfcce8f02d73c33a8a7362980cff717926bbae030b93ae46b56c7", size = 2079315, upload_time = "2025-04-02T09:48:55.555Z" }, + { url = "https://files.pythonhosted.org/packages/1f/85/6d8b2646d99c062d7da2d0ab2faeb0d6ca9cca4c02da6076376042a20da3/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:2f9284e11c751b003fd4215ad92d325d92c9cb19ee6729ebd87e3250072cdcde", size = 2249063, upload_time = "2025-04-02T09:48:57.479Z" }, + { url = "https://files.pythonhosted.org/packages/17/d7/c37d208d5738f7b9ad8f22ae8a727d88ebf9c16c04ed2475122cc3f7224a/pydantic_core-2.33.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:048c01eee07d37cbd066fc512b9d8b5ea88ceeb4e629ab94b3e56965ad655add", size = 2254631, upload_time = "2025-04-02T09:48:59.581Z" }, + { url = "https://files.pythonhosted.org/packages/13/e0/bafa46476d328e4553b85ab9b2f7409e7aaef0ce4c937c894821c542d347/pydantic_core-2.33.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5ccd429694cf26af7997595d627dd2637e7932214486f55b8a357edaac9dae8c", size = 2080877, upload_time = "2025-04-02T09:49:01.52Z" }, + { url = "https://files.pythonhosted.org/packages/0b/76/1794e440c1801ed35415238d2c728f26cd12695df9057154ad768b7b991c/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3a371dc00282c4b84246509a5ddc808e61b9864aa1eae9ecc92bb1268b82db4a", size = 2042858, upload_time = "2025-04-02T09:49:03.419Z" }, + { url = "https://files.pythonhosted.org/packages/73/b4/9cd7b081fb0b1b4f8150507cd59d27b275c3e22ad60b35cb19ea0977d9b9/pydantic_core-2.33.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:f59295ecc75a1788af8ba92f2e8c6eeaa5a94c22fc4d151e8d9638814f85c8fc", size = 1873745, upload_time = "2025-04-02T09:49:05.391Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d7/9ddb7575d4321e40d0363903c2576c8c0c3280ebea137777e5ab58d723e3/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08530b8ac922003033f399128505f513e30ca770527cc8bbacf75a84fcc2c74b", size = 1904188, upload_time = "2025-04-02T09:49:07.352Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/3194ccfe461bb08da19377ebec8cb4f13c9bd82e13baebc53c5c7c39a029/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae370459da6a5466978c0eacf90690cb57ec9d533f8e63e564ef3822bfa04fe", size = 2083479, upload_time = "2025-04-02T09:49:09.304Z" }, + { url = "https://files.pythonhosted.org/packages/42/c7/84cb569555d7179ca0b3f838cef08f66f7089b54432f5b8599aac6e9533e/pydantic_core-2.33.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e3de2777e3b9f4d603112f78006f4ae0acb936e95f06da6cb1a45fbad6bdb4b5", size = 2118415, upload_time = "2025-04-02T09:49:11.25Z" }, + { url = "https://files.pythonhosted.org/packages/3b/67/72abb8c73e0837716afbb58a59cc9e3ae43d1aa8677f3b4bc72c16142716/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3a64e81e8cba118e108d7126362ea30e021291b7805d47e4896e52c791be2761", size = 2079623, upload_time = "2025-04-02T09:49:13.292Z" }, + { url = "https://files.pythonhosted.org/packages/0b/cd/c59707e35a47ba4cbbf153c3f7c56420c58653b5801b055dc52cccc8e2dc/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:52928d8c1b6bda03cc6d811e8923dffc87a2d3c8b3bfd2ce16471c7147a24850", size = 2250175, upload_time = "2025-04-02T09:49:15.597Z" }, + { url = "https://files.pythonhosted.org/packages/84/32/e4325a6676b0bed32d5b084566ec86ed7fd1e9bcbfc49c578b1755bde920/pydantic_core-2.33.1-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:1b30d92c9412beb5ac6b10a3eb7ef92ccb14e3f2a8d7732e2d739f58b3aa7544", size = 2254674, upload_time = "2025-04-02T09:49:17.61Z" }, + { url = "https://files.pythonhosted.org/packages/12/6f/5596dc418f2e292ffc661d21931ab34591952e2843e7168ea5a52591f6ff/pydantic_core-2.33.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:f995719707e0e29f0f41a8aa3bcea6e761a36c9136104d3189eafb83f5cec5e5", size = 2080951, upload_time = "2025-04-02T09:49:19.559Z" }, + { url = "https://files.pythonhosted.org/packages/2d/a8/c2c8f29bd18f7ef52de32a6deb9e3ee87ba18b7b2122636aa9f4438cf627/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7edbc454a29fc6aeae1e1eecba4f07b63b8d76e76a748532233c4c167b4cb9ea", size = 2041791, upload_time = "2025-04-02T09:49:21.617Z" }, + { url = "https://files.pythonhosted.org/packages/08/ad/328081b1c82543ae49d0650048305058583c51f1a9a56a0d6e87bb3a2443/pydantic_core-2.33.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:ad05b683963f69a1d5d2c2bdab1274a31221ca737dbbceaa32bcb67359453cdd", size = 1873579, upload_time = "2025-04-02T09:49:23.667Z" }, + { url = "https://files.pythonhosted.org/packages/6e/8a/bc65dbf7e501e88367cdab06a2c1340457c785f0c72288cae737fd80c0fa/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df6a94bf9452c6da9b5d76ed229a5683d0306ccb91cca8e1eea883189780d568", size = 1904189, upload_time = "2025-04-02T09:49:25.821Z" }, + { url = "https://files.pythonhosted.org/packages/9a/db/30ca6aefda211fb01ef185ca73cb7a0c6e7fe952c524025c8782b5acd771/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7965c13b3967909a09ecc91f21d09cfc4576bf78140b988904e94f130f188396", size = 2084446, upload_time = "2025-04-02T09:49:27.866Z" }, + { url = "https://files.pythonhosted.org/packages/f2/89/a12b55286e30c9f476eab7c53c9249ec76faf70430596496ab0309f28629/pydantic_core-2.33.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3f1fdb790440a34f6ecf7679e1863b825cb5ffde858a9197f851168ed08371e5", size = 2118215, upload_time = "2025-04-02T09:49:30.321Z" }, + { url = "https://files.pythonhosted.org/packages/8e/55/12721c4a8d7951584ad3d9848b44442559cf1876e0bb424148d1060636b3/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5277aec8d879f8d05168fdd17ae811dd313b8ff894aeeaf7cd34ad28b4d77e33", size = 2079963, upload_time = "2025-04-02T09:49:32.804Z" }, + { url = "https://files.pythonhosted.org/packages/bd/0c/3391bd5d6ff62ea998db94732528d9bc32c560b0ed861c39119759461946/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8ab581d3530611897d863d1a649fb0644b860286b4718db919bfd51ece41f10b", size = 2249388, upload_time = "2025-04-02T09:49:34.906Z" }, + { url = "https://files.pythonhosted.org/packages/d3/5f/3e4feb042998d7886a9b523b372d83955cbc192a07013dcd24276db078ee/pydantic_core-2.33.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0483847fa9ad5e3412265c1bd72aad35235512d9ce9d27d81a56d935ef489672", size = 2255226, upload_time = "2025-04-02T09:49:37.412Z" }, + { url = "https://files.pythonhosted.org/packages/25/f2/1647933efaaad61846109a27619f3704929e758a09e6431b8f932a053d40/pydantic_core-2.33.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:de9e06abe3cc5ec6a2d5f75bc99b0bdca4f5c719a5b34026f8c57efbdecd2ee3", size = 2081073, upload_time = "2025-04-02T09:49:39.531Z" }, ] [[package]] name = "pygments" version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload_time = "2025-01-06T17:26:30.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload_time = "2025-01-06T17:26:25.553Z" }, ] [[package]] @@ -810,63 +703,75 @@ dependencies = [ { name = "strictyaml" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994 } +sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994, upload_time = "2025-03-04T15:17:40.692Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/05/41a3543cfc7f10440df8e4533d4a27a99e221c8d8048a1f38acff76bc764/pyiceberg-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b454d186c33aa3f0d03e4fa888df50d4861ffa4cdcc7c6f766237485d9a091d9", size = 525475 }, - { url = "https://files.pythonhosted.org/packages/32/22/cf2afaaf7771080efc6e716270d498090408df640ffab3fbbfa4a5bc709c/pyiceberg-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4f6800f8bd5cb30fd095cf58498b45d8c42709330a0ce72df4e92e030eba402", size = 521645 }, - { url = "https://files.pythonhosted.org/packages/52/e4/ef7a98aa3595d7403148f5e5279bc15cb5c84653d5566049772f7242c5b9/pyiceberg-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7a7f83805dfc3af8aaaa88ac7d208aafe5005400cb9238d2195d8b7113927ef", size = 836989 }, - { url = "https://files.pythonhosted.org/packages/3c/0e/2fcdea061032faf11d0343613aacc01e119389b9a5439e45b0b87510e251/pyiceberg-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:218d31b81c91cd3acf775bd796f8c02740b4bdb8a7bde7278029710c94eb136a", size = 836664 }, - { url = "https://files.pythonhosted.org/packages/ef/7d/70eb575b8363a348e98dbca4e79943b1a93e9f65a655e79cdd4a23ae649a/pyiceberg-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:f3680ac4aa6bada5a6823d4ded1e78ac86207fd3b275ca1a688bad5cb9191c3b", size = 521952 }, - { url = "https://files.pythonhosted.org/packages/46/05/41a3543cfc7f10440df8e4533d4a27a99e221c8d8048a1f38acff76bc764/pyiceberg-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b454d186c33aa3f0d03e4fa888df50d4861ffa4cdcc7c6f766237485d9a091d9", size = 525475 }, - { url = "https://files.pythonhosted.org/packages/32/22/cf2afaaf7771080efc6e716270d498090408df640ffab3fbbfa4a5bc709c/pyiceberg-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4f6800f8bd5cb30fd095cf58498b45d8c42709330a0ce72df4e92e030eba402", size = 521645 }, - { url = "https://files.pythonhosted.org/packages/52/e4/ef7a98aa3595d7403148f5e5279bc15cb5c84653d5566049772f7242c5b9/pyiceberg-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7a7f83805dfc3af8aaaa88ac7d208aafe5005400cb9238d2195d8b7113927ef", size = 836989 }, - { url = "https://files.pythonhosted.org/packages/3c/0e/2fcdea061032faf11d0343613aacc01e119389b9a5439e45b0b87510e251/pyiceberg-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:218d31b81c91cd3acf775bd796f8c02740b4bdb8a7bde7278029710c94eb136a", size = 836664 }, - { url = "https://files.pythonhosted.org/packages/ef/7d/70eb575b8363a348e98dbca4e79943b1a93e9f65a655e79cdd4a23ae649a/pyiceberg-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:f3680ac4aa6bada5a6823d4ded1e78ac86207fd3b275ca1a688bad5cb9191c3b", size = 521952 }, - { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652 }, - { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538 }, - { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661 }, - { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874 }, - { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840 }, - { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132 }, - { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703 }, - { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772 }, - { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452 }, - { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838 }, - { url = "https://files.pythonhosted.org/packages/64/4f/fd290363c10ce8d8e8d53957f318bd7429e89acdad8ae1fee2e838a7ba48/pyiceberg-0.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:868c795b9bb49cea30b32cee4ba3fceb346664e24abbba5a3c0330a0015388c2", size = 486661 }, - { url = "https://files.pythonhosted.org/packages/75/e8/74d44c7e35f8f23e00f060cd8ffb310f5bca2a37d5999854837949703cbd/pyiceberg-0.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:58ceef4fbacf4eda19e2b84a9a850ffc661b489e08d5010a2c206583f387df83", size = 484748 }, - { url = "https://files.pythonhosted.org/packages/56/05/58c55f5658e7b5a8ff1f1a3423a94dc72621d96e39c50ac9b80f3a85a49a/pyiceberg-0.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38d221a963907a4f706fbd811e638e451efd4491952166550664df156e1ca02c", size = 643384 }, - { url = "https://files.pythonhosted.org/packages/36/71/e45e7bb33a3432d892fc31c743b529a2e1c566f6145acbdf6c76035bf5b4/pyiceberg-0.9.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b7b4de0b94d5f4c83bab443aa449a1714f784953d56f415380a8bc4b5e14c988", size = 643207 }, - { url = "https://files.pythonhosted.org/packages/3e/8c/beea9780c70c52ae9f92150901edda472c96b0cfbd4c3e72303b07f43a2a/pyiceberg-0.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:c3bca11ccabfa98a17962b4ffe6d3eaaa83f66d6b997b79c20966907b9c7ccb0", size = 486154 }, - { url = "https://files.pythonhosted.org/packages/5b/60/fbcc8847ca1b23dea34f6e69e55e1e87e8bef1496b9e6a4bf3f8e22fb98e/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6d818b01ab259f4892e486b960e999b7a724b6829f9e3919d2ec454f5f3f857b", size = 666638 }, - { url = "https://files.pythonhosted.org/packages/4b/19/55f93aba1c6fe8fa5f90c32bf1011b1dd7f276b1a9e2136c5867cda50bb1/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8161dc350e885d7bdc46f4fb4e9698bf1a84861056687823d53eaeed217e4324", size = 655812 }, - { url = "https://files.pythonhosted.org/packages/54/8f/b0b102e795b8524504e8534d774e43f22d049823863d275e753a225baeaf/pyiceberg-0.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3bf765b91e96f66a01205a87cd8fd0eb8ffb148fdd9bf621d9a2a3249336116", size = 1351349 }, - { url = "https://files.pythonhosted.org/packages/4a/0c/09267e34e2979a71612a3b2d02d25c51fcf35921542fcd9f40bf15073ed0/pyiceberg-0.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a9a8699dbdec4ee81ac4dfc77d7489bffac3a7625a28df296657cec1edf79d6d", size = 655880 }, - { url = "https://files.pythonhosted.org/packages/53/2d/1e01798c613d1cde58ea87697394680cf0fc96c85e1397d4dafbf2ba954b/pyiceberg-0.9.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:821c8ff026819038780559207cd32ee0500f719fd51ed2a1ab919b21a60ce5f2", size = 635380 }, - { url = "https://files.pythonhosted.org/packages/54/28/574e202c121c8afe3d59962b474c6271e3fe5edb8b980d9cceaca2bcb969/pyiceberg-0.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:2ed7af929ba1b8faef98113b8da0512914450bdcb90d2fb46efe5319800c36ad", size = 625746 }, - { url = "https://files.pythonhosted.org/packages/b7/f1/fca8de00dad04e842e0b3fc9543329b2da32ee5e144d2ff6fd8a78c27642/pyiceberg-0.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:936fea58f468359a58e9fd03b7d6b1136bf6c5163a5a666e5ea43ebe70a0dba0", size = 1313574 }, - { url = "https://files.pythonhosted.org/packages/00/d7/f774e49496194e90694e270df065bf823bb78eba8bc06d059a0eecbb1180/pyiceberg-0.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:76581d226ae67d8be5210bdab60dcdd8fc3a4d6745192a2b446eb746201abdb3", size = 624863 }, - { url = "https://files.pythonhosted.org/packages/64/4f/fd290363c10ce8d8e8d53957f318bd7429e89acdad8ae1fee2e838a7ba48/pyiceberg-0.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:868c795b9bb49cea30b32cee4ba3fceb346664e24abbba5a3c0330a0015388c2", size = 486661 }, - { url = "https://files.pythonhosted.org/packages/75/e8/74d44c7e35f8f23e00f060cd8ffb310f5bca2a37d5999854837949703cbd/pyiceberg-0.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:58ceef4fbacf4eda19e2b84a9a850ffc661b489e08d5010a2c206583f387df83", size = 484748 }, - { url = "https://files.pythonhosted.org/packages/56/05/58c55f5658e7b5a8ff1f1a3423a94dc72621d96e39c50ac9b80f3a85a49a/pyiceberg-0.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38d221a963907a4f706fbd811e638e451efd4491952166550664df156e1ca02c", size = 643384 }, - { url = "https://files.pythonhosted.org/packages/36/71/e45e7bb33a3432d892fc31c743b529a2e1c566f6145acbdf6c76035bf5b4/pyiceberg-0.9.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b7b4de0b94d5f4c83bab443aa449a1714f784953d56f415380a8bc4b5e14c988", size = 643207 }, - { url = "https://files.pythonhosted.org/packages/3e/8c/beea9780c70c52ae9f92150901edda472c96b0cfbd4c3e72303b07f43a2a/pyiceberg-0.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:c3bca11ccabfa98a17962b4ffe6d3eaaa83f66d6b997b79c20966907b9c7ccb0", size = 486154 }, - { url = "https://files.pythonhosted.org/packages/5b/60/fbcc8847ca1b23dea34f6e69e55e1e87e8bef1496b9e6a4bf3f8e22fb98e/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6d818b01ab259f4892e486b960e999b7a724b6829f9e3919d2ec454f5f3f857b", size = 666638 }, - { url = "https://files.pythonhosted.org/packages/4b/19/55f93aba1c6fe8fa5f90c32bf1011b1dd7f276b1a9e2136c5867cda50bb1/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8161dc350e885d7bdc46f4fb4e9698bf1a84861056687823d53eaeed217e4324", size = 655812 }, - { url = "https://files.pythonhosted.org/packages/54/8f/b0b102e795b8524504e8534d774e43f22d049823863d275e753a225baeaf/pyiceberg-0.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3bf765b91e96f66a01205a87cd8fd0eb8ffb148fdd9bf621d9a2a3249336116", size = 1351349 }, - { url = "https://files.pythonhosted.org/packages/4a/0c/09267e34e2979a71612a3b2d02d25c51fcf35921542fcd9f40bf15073ed0/pyiceberg-0.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a9a8699dbdec4ee81ac4dfc77d7489bffac3a7625a28df296657cec1edf79d6d", size = 655880 }, - { url = "https://files.pythonhosted.org/packages/53/2d/1e01798c613d1cde58ea87697394680cf0fc96c85e1397d4dafbf2ba954b/pyiceberg-0.9.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:821c8ff026819038780559207cd32ee0500f719fd51ed2a1ab919b21a60ce5f2", size = 635380 }, - { url = "https://files.pythonhosted.org/packages/54/28/574e202c121c8afe3d59962b474c6271e3fe5edb8b980d9cceaca2bcb969/pyiceberg-0.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:2ed7af929ba1b8faef98113b8da0512914450bdcb90d2fb46efe5319800c36ad", size = 625746 }, - { url = "https://files.pythonhosted.org/packages/b7/f1/fca8de00dad04e842e0b3fc9543329b2da32ee5e144d2ff6fd8a78c27642/pyiceberg-0.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:936fea58f468359a58e9fd03b7d6b1136bf6c5163a5a666e5ea43ebe70a0dba0", size = 1313574 }, - { url = "https://files.pythonhosted.org/packages/00/d7/f774e49496194e90694e270df065bf823bb78eba8bc06d059a0eecbb1180/pyiceberg-0.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:76581d226ae67d8be5210bdab60dcdd8fc3a4d6745192a2b446eb746201abdb3", size = 624863 }, + { url = "https://files.pythonhosted.org/packages/46/05/41a3543cfc7f10440df8e4533d4a27a99e221c8d8048a1f38acff76bc764/pyiceberg-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b454d186c33aa3f0d03e4fa888df50d4861ffa4cdcc7c6f766237485d9a091d9", size = 525475, upload_time = "2025-03-04T15:16:42.905Z" }, + { url = "https://files.pythonhosted.org/packages/32/22/cf2afaaf7771080efc6e716270d498090408df640ffab3fbbfa4a5bc709c/pyiceberg-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4f6800f8bd5cb30fd095cf58498b45d8c42709330a0ce72df4e92e030eba402", size = 521645, upload_time = "2025-03-04T15:16:45.97Z" }, + { url = "https://files.pythonhosted.org/packages/52/e4/ef7a98aa3595d7403148f5e5279bc15cb5c84653d5566049772f7242c5b9/pyiceberg-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7a7f83805dfc3af8aaaa88ac7d208aafe5005400cb9238d2195d8b7113927ef", size = 836989, upload_time = "2025-03-04T15:16:48.035Z" }, + { url = "https://files.pythonhosted.org/packages/3c/0e/2fcdea061032faf11d0343613aacc01e119389b9a5439e45b0b87510e251/pyiceberg-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:218d31b81c91cd3acf775bd796f8c02740b4bdb8a7bde7278029710c94eb136a", size = 836664, upload_time = "2025-03-04T15:16:50.343Z" }, + { url = "https://files.pythonhosted.org/packages/ef/7d/70eb575b8363a348e98dbca4e79943b1a93e9f65a655e79cdd4a23ae649a/pyiceberg-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:f3680ac4aa6bada5a6823d4ded1e78ac86207fd3b275ca1a688bad5cb9191c3b", size = 521952, upload_time = "2025-03-04T15:16:52.947Z" }, + { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652, upload_time = "2025-03-04T15:16:54.37Z" }, + { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538, upload_time = "2025-03-04T15:16:57.415Z" }, + { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661, upload_time = "2025-03-04T15:16:59.762Z" }, + { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874, upload_time = "2025-03-04T15:17:02.224Z" }, + { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840, upload_time = "2025-03-04T15:17:04.482Z" }, + { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132, upload_time = "2025-03-04T15:17:06.049Z" }, + { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703, upload_time = "2025-03-04T15:17:07.45Z" }, + { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772, upload_time = "2025-03-04T15:17:10.419Z" }, + { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452, upload_time = "2025-03-04T15:17:12.681Z" }, + { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838, upload_time = "2025-03-04T15:17:14.962Z" }, + { url = "https://files.pythonhosted.org/packages/64/4f/fd290363c10ce8d8e8d53957f318bd7429e89acdad8ae1fee2e838a7ba48/pyiceberg-0.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:868c795b9bb49cea30b32cee4ba3fceb346664e24abbba5a3c0330a0015388c2", size = 486661, upload_time = "2025-03-04T15:17:16.528Z" }, + { url = "https://files.pythonhosted.org/packages/75/e8/74d44c7e35f8f23e00f060cd8ffb310f5bca2a37d5999854837949703cbd/pyiceberg-0.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:58ceef4fbacf4eda19e2b84a9a850ffc661b489e08d5010a2c206583f387df83", size = 484748, upload_time = "2025-03-04T15:17:18.656Z" }, + { url = "https://files.pythonhosted.org/packages/56/05/58c55f5658e7b5a8ff1f1a3423a94dc72621d96e39c50ac9b80f3a85a49a/pyiceberg-0.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38d221a963907a4f706fbd811e638e451efd4491952166550664df156e1ca02c", size = 643384, upload_time = "2025-03-04T15:17:20.97Z" }, + { url = "https://files.pythonhosted.org/packages/36/71/e45e7bb33a3432d892fc31c743b529a2e1c566f6145acbdf6c76035bf5b4/pyiceberg-0.9.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b7b4de0b94d5f4c83bab443aa449a1714f784953d56f415380a8bc4b5e14c988", size = 643207, upload_time = "2025-03-04T15:17:22.541Z" }, + { url = "https://files.pythonhosted.org/packages/3e/8c/beea9780c70c52ae9f92150901edda472c96b0cfbd4c3e72303b07f43a2a/pyiceberg-0.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:c3bca11ccabfa98a17962b4ffe6d3eaaa83f66d6b997b79c20966907b9c7ccb0", size = 486154, upload_time = "2025-03-04T15:17:23.918Z" }, + { url = "https://files.pythonhosted.org/packages/5b/60/fbcc8847ca1b23dea34f6e69e55e1e87e8bef1496b9e6a4bf3f8e22fb98e/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6d818b01ab259f4892e486b960e999b7a724b6829f9e3919d2ec454f5f3f857b", size = 666638, upload_time = "2025-03-04T15:17:25.507Z" }, + { url = "https://files.pythonhosted.org/packages/4b/19/55f93aba1c6fe8fa5f90c32bf1011b1dd7f276b1a9e2136c5867cda50bb1/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8161dc350e885d7bdc46f4fb4e9698bf1a84861056687823d53eaeed217e4324", size = 655812, upload_time = "2025-03-04T15:17:27.672Z" }, + { url = "https://files.pythonhosted.org/packages/54/8f/b0b102e795b8524504e8534d774e43f22d049823863d275e753a225baeaf/pyiceberg-0.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3bf765b91e96f66a01205a87cd8fd0eb8ffb148fdd9bf621d9a2a3249336116", size = 1351349, upload_time = "2025-03-04T15:17:29.356Z" }, + { url = "https://files.pythonhosted.org/packages/4a/0c/09267e34e2979a71612a3b2d02d25c51fcf35921542fcd9f40bf15073ed0/pyiceberg-0.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a9a8699dbdec4ee81ac4dfc77d7489bffac3a7625a28df296657cec1edf79d6d", size = 655880, upload_time = "2025-03-04T15:17:30.882Z" }, + { url = "https://files.pythonhosted.org/packages/53/2d/1e01798c613d1cde58ea87697394680cf0fc96c85e1397d4dafbf2ba954b/pyiceberg-0.9.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:821c8ff026819038780559207cd32ee0500f719fd51ed2a1ab919b21a60ce5f2", size = 635380, upload_time = "2025-03-04T15:17:33.064Z" }, + { url = "https://files.pythonhosted.org/packages/54/28/574e202c121c8afe3d59962b474c6271e3fe5edb8b980d9cceaca2bcb969/pyiceberg-0.9.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:2ed7af929ba1b8faef98113b8da0512914450bdcb90d2fb46efe5319800c36ad", size = 625746, upload_time = "2025-03-04T15:17:34.505Z" }, + { url = "https://files.pythonhosted.org/packages/b7/f1/fca8de00dad04e842e0b3fc9543329b2da32ee5e144d2ff6fd8a78c27642/pyiceberg-0.9.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:936fea58f468359a58e9fd03b7d6b1136bf6c5163a5a666e5ea43ebe70a0dba0", size = 1313574, upload_time = "2025-03-04T15:17:36.719Z" }, + { url = "https://files.pythonhosted.org/packages/00/d7/f774e49496194e90694e270df065bf823bb78eba8bc06d059a0eecbb1180/pyiceberg-0.9.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:76581d226ae67d8be5210bdab60dcdd8fc3a4d6745192a2b446eb746201abdb3", size = 624863, upload_time = "2025-03-04T15:17:39.009Z" }, ] [[package]] name = "pyparsing" version = "3.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload_time = "2025-03-25T05:01:28.114Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload_time = "2025-03-25T05:01:24.908Z" }, +] + +[[package]] +name = "pytest" +version = "8.3.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload_time = "2025-03-02T12:54:54.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload_time = "2025-03-02T12:54:52.069Z" }, +] + +[[package]] +name = "pytest-httpx" +version = "0.35.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "httpx" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/89/5b12b7b29e3d0af3a4b9c071ee92fa25a9017453731a38f08ba01c280f4c/pytest_httpx-0.35.0.tar.gz", hash = "sha256:d619ad5d2e67734abfbb224c3d9025d64795d4b8711116b1a13f72a251ae511f", size = 54146, upload_time = "2024-11-28T19:16:54.237Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/ed/026d467c1853dd83102411a78126b4842618e86c895f93528b0528c7a620/pytest_httpx-0.35.0-py3-none-any.whl", hash = "sha256:ee11a00ffcea94a5cbff47af2114d34c5b231c326902458deed73f9c459fd744", size = 19442, upload_time = "2024-11-28T19:16:52.787Z" }, ] [[package]] @@ -876,80 +781,62 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload_time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload_time = "2024-03-01T18:36:18.57Z" }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload_time = "2024-08-06T20:33:50.674Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, - { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, - { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612 }, - { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040 }, - { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829 }, - { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167 }, - { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952 }, - { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301 }, - { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638 }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850 }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980 }, - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, - { url = "https://files.pythonhosted.org/packages/65/d8/b7a1db13636d7fb7d4ff431593c510c8b8fca920ade06ca8ef20015493c5/PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", size = 184777 }, - { url = "https://files.pythonhosted.org/packages/0a/02/6ec546cd45143fdf9840b2c6be8d875116a64076218b61d68e12548e5839/PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", size = 172318 }, - { url = "https://files.pythonhosted.org/packages/0e/9a/8cc68be846c972bda34f6c2a93abb644fb2476f4dcc924d52175786932c9/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", size = 720891 }, - { url = "https://files.pythonhosted.org/packages/e9/6c/6e1b7f40181bc4805e2e07f4abc10a88ce4648e7e95ff1abe4ae4014a9b2/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", size = 722614 }, - { url = "https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", size = 737360 }, - { url = "https://files.pythonhosted.org/packages/d7/12/7322c1e30b9be969670b672573d45479edef72c9a0deac3bb2868f5d7469/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", size = 699006 }, - { url = "https://files.pythonhosted.org/packages/82/72/04fcad41ca56491995076630c3ec1e834be241664c0c09a64c9a2589b507/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", size = 723577 }, - { url = "https://files.pythonhosted.org/packages/ed/5e/46168b1f2757f1fcd442bc3029cd8767d88a98c9c05770d8b420948743bb/PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", size = 144593 }, - { url = "https://files.pythonhosted.org/packages/19/87/5124b1c1f2412bb95c59ec481eaf936cd32f0fe2a7b16b97b81c4c017a6a/PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", size = 162312 }, - { url = "https://files.pythonhosted.org/packages/65/d8/b7a1db13636d7fb7d4ff431593c510c8b8fca920ade06ca8ef20015493c5/PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", size = 184777 }, - { url = "https://files.pythonhosted.org/packages/0a/02/6ec546cd45143fdf9840b2c6be8d875116a64076218b61d68e12548e5839/PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", size = 172318 }, - { url = "https://files.pythonhosted.org/packages/0e/9a/8cc68be846c972bda34f6c2a93abb644fb2476f4dcc924d52175786932c9/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", size = 720891 }, - { url = "https://files.pythonhosted.org/packages/e9/6c/6e1b7f40181bc4805e2e07f4abc10a88ce4648e7e95ff1abe4ae4014a9b2/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", size = 722614 }, - { url = "https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", size = 737360 }, - { url = "https://files.pythonhosted.org/packages/d7/12/7322c1e30b9be969670b672573d45479edef72c9a0deac3bb2868f5d7469/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", size = 699006 }, - { url = "https://files.pythonhosted.org/packages/82/72/04fcad41ca56491995076630c3ec1e834be241664c0c09a64c9a2589b507/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", size = 723577 }, - { url = "https://files.pythonhosted.org/packages/ed/5e/46168b1f2757f1fcd442bc3029cd8767d88a98c9c05770d8b420948743bb/PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", size = 144593 }, - { url = "https://files.pythonhosted.org/packages/19/87/5124b1c1f2412bb95c59ec481eaf936cd32f0fe2a7b16b97b81c4c017a6a/PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", size = 162312 }, + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload_time = "2024-08-06T20:31:40.178Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload_time = "2024-08-06T20:31:42.173Z" }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload_time = "2024-08-06T20:31:44.263Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload_time = "2024-08-06T20:31:50.199Z" }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload_time = "2024-08-06T20:31:52.292Z" }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload_time = "2024-08-06T20:31:53.836Z" }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload_time = "2024-08-06T20:31:55.565Z" }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload_time = "2024-08-06T20:31:56.914Z" }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload_time = "2024-08-06T20:31:58.304Z" }, + { url = "https://files.pythonhosted.org/packages/f8/aa/7af4e81f7acba21a4c6be026da38fd2b872ca46226673c89a758ebdc4fd2/PyYAML-6.0.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774", size = 184612, upload_time = "2024-08-06T20:32:03.408Z" }, + { url = "https://files.pythonhosted.org/packages/8b/62/b9faa998fd185f65c1371643678e4d58254add437edb764a08c5a98fb986/PyYAML-6.0.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee", size = 172040, upload_time = "2024-08-06T20:32:04.926Z" }, + { url = "https://files.pythonhosted.org/packages/ad/0c/c804f5f922a9a6563bab712d8dcc70251e8af811fce4524d57c2c0fd49a4/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c", size = 736829, upload_time = "2024-08-06T20:32:06.459Z" }, + { url = "https://files.pythonhosted.org/packages/51/16/6af8d6a6b210c8e54f1406a6b9481febf9c64a3109c541567e35a49aa2e7/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317", size = 764167, upload_time = "2024-08-06T20:32:08.338Z" }, + { url = "https://files.pythonhosted.org/packages/75/e4/2c27590dfc9992f73aabbeb9241ae20220bd9452df27483b6e56d3975cc5/PyYAML-6.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85", size = 762952, upload_time = "2024-08-06T20:32:14.124Z" }, + { url = "https://files.pythonhosted.org/packages/9b/97/ecc1abf4a823f5ac61941a9c00fe501b02ac3ab0e373c3857f7d4b83e2b6/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", size = 735301, upload_time = "2024-08-06T20:32:16.17Z" }, + { url = "https://files.pythonhosted.org/packages/45/73/0f49dacd6e82c9430e46f4a027baa4ca205e8b0a9dce1397f44edc23559d/PyYAML-6.0.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e", size = 756638, upload_time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload_time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload_time = "2024-08-06T20:32:21.273Z" }, + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload_time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload_time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload_time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload_time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload_time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload_time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload_time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload_time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload_time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload_time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload_time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload_time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload_time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload_time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload_time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload_time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload_time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload_time = "2024-08-06T20:33:04.33Z" }, + { url = "https://files.pythonhosted.org/packages/65/d8/b7a1db13636d7fb7d4ff431593c510c8b8fca920ade06ca8ef20015493c5/PyYAML-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d", size = 184777, upload_time = "2024-08-06T20:33:25.896Z" }, + { url = "https://files.pythonhosted.org/packages/0a/02/6ec546cd45143fdf9840b2c6be8d875116a64076218b61d68e12548e5839/PyYAML-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f", size = 172318, upload_time = "2024-08-06T20:33:27.212Z" }, + { url = "https://files.pythonhosted.org/packages/0e/9a/8cc68be846c972bda34f6c2a93abb644fb2476f4dcc924d52175786932c9/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290", size = 720891, upload_time = "2024-08-06T20:33:28.974Z" }, + { url = "https://files.pythonhosted.org/packages/e9/6c/6e1b7f40181bc4805e2e07f4abc10a88ce4648e7e95ff1abe4ae4014a9b2/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12", size = 722614, upload_time = "2024-08-06T20:33:34.157Z" }, + { url = "https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19", size = 737360, upload_time = "2024-08-06T20:33:35.84Z" }, + { url = "https://files.pythonhosted.org/packages/d7/12/7322c1e30b9be969670b672573d45479edef72c9a0deac3bb2868f5d7469/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e", size = 699006, upload_time = "2024-08-06T20:33:37.501Z" }, + { url = "https://files.pythonhosted.org/packages/82/72/04fcad41ca56491995076630c3ec1e834be241664c0c09a64c9a2589b507/PyYAML-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725", size = 723577, upload_time = "2024-08-06T20:33:39.389Z" }, + { url = "https://files.pythonhosted.org/packages/ed/5e/46168b1f2757f1fcd442bc3029cd8767d88a98c9c05770d8b420948743bb/PyYAML-6.0.2-cp39-cp39-win32.whl", hash = "sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631", size = 144593, upload_time = "2024-08-06T20:33:46.63Z" }, + { url = "https://files.pythonhosted.org/packages/19/87/5124b1c1f2412bb95c59ec481eaf936cd32f0fe2a7b16b97b81c4c017a6a/PyYAML-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8", size = 162312, upload_time = "2024-08-06T20:33:49.073Z" }, ] [[package]] @@ -962,9 +849,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload_time = "2024-05-29T15:37:49.536Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload_time = "2024-05-29T15:37:47.027Z" }, ] [[package]] @@ -975,11 +862,10 @@ dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149, upload_time = "2024-11-01T16:43:57.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424, upload_time = "2024-11-01T16:43:55.817Z" }, ] [[package]] @@ -989,141 +875,123 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ruamel-yaml-clib", marker = "python_full_version < '3.13' and platform_python_implementation == 'CPython'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ea/46/f44d8be06b85bc7c4d8c95d658be2b68f27711f279bf9dd0612a5e4794f5/ruamel.yaml-0.18.10.tar.gz", hash = "sha256:20c86ab29ac2153f80a428e1254a8adf686d3383df04490514ca3b79a362db58", size = 143447 } +sdist = { url = "https://files.pythonhosted.org/packages/ea/46/f44d8be06b85bc7c4d8c95d658be2b68f27711f279bf9dd0612a5e4794f5/ruamel.yaml-0.18.10.tar.gz", hash = "sha256:20c86ab29ac2153f80a428e1254a8adf686d3383df04490514ca3b79a362db58", size = 143447, upload_time = "2025-01-06T14:08:51.334Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c2/36/dfc1ebc0081e6d39924a2cc53654497f967a084a436bb64402dfce4254d9/ruamel.yaml-0.18.10-py3-none-any.whl", hash = "sha256:30f22513ab2301b3d2b577adc121c6471f28734d3d9728581245f1e76468b4f1", size = 117729 }, + { url = "https://files.pythonhosted.org/packages/c2/36/dfc1ebc0081e6d39924a2cc53654497f967a084a436bb64402dfce4254d9/ruamel.yaml-0.18.10-py3-none-any.whl", hash = "sha256:30f22513ab2301b3d2b577adc121c6471f28734d3d9728581245f1e76468b4f1", size = 117729, upload_time = "2025-01-06T14:08:47.471Z" }, ] [[package]] name = "ruamel-yaml-clib" version = "0.2.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315 } +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload_time = "2024-10-20T10:10:56.22Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/70/57/40a958e863e299f0c74ef32a3bde9f2d1ea8d69669368c0c502a0997f57f/ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5", size = 131301 }, - { url = "https://files.pythonhosted.org/packages/98/a8/29a3eb437b12b95f50a6bcc3d7d7214301c6c529d8fdc227247fa84162b5/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969", size = 633728 }, - { url = "https://files.pythonhosted.org/packages/35/6d/ae05a87a3ad540259c3ad88d71275cbd1c0f2d30ae04c65dcbfb6dcd4b9f/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df", size = 722230 }, - { url = "https://files.pythonhosted.org/packages/7f/b7/20c6f3c0b656fe609675d69bc135c03aac9e3865912444be6339207b6648/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76", size = 686712 }, - { url = "https://files.pythonhosted.org/packages/cd/11/d12dbf683471f888d354dac59593873c2b45feb193c5e3e0f2ebf85e68b9/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6", size = 663936 }, - { url = "https://files.pythonhosted.org/packages/72/14/4c268f5077db5c83f743ee1daeb236269fa8577133a5cfa49f8b382baf13/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd", size = 696580 }, - { url = "https://files.pythonhosted.org/packages/30/fc/8cd12f189c6405a4c1cf37bd633aa740a9538c8e40497c231072d0fef5cf/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a", size = 663393 }, - { url = "https://files.pythonhosted.org/packages/80/29/c0a017b704aaf3cbf704989785cd9c5d5b8ccec2dae6ac0c53833c84e677/ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da", size = 100326 }, - { url = "https://files.pythonhosted.org/packages/3a/65/fa39d74db4e2d0cd252355732d966a460a41cd01c6353b820a0952432839/ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28", size = 118079 }, - { url = "https://files.pythonhosted.org/packages/70/57/40a958e863e299f0c74ef32a3bde9f2d1ea8d69669368c0c502a0997f57f/ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5", size = 131301 }, - { url = "https://files.pythonhosted.org/packages/98/a8/29a3eb437b12b95f50a6bcc3d7d7214301c6c529d8fdc227247fa84162b5/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969", size = 633728 }, - { url = "https://files.pythonhosted.org/packages/35/6d/ae05a87a3ad540259c3ad88d71275cbd1c0f2d30ae04c65dcbfb6dcd4b9f/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df", size = 722230 }, - { url = "https://files.pythonhosted.org/packages/7f/b7/20c6f3c0b656fe609675d69bc135c03aac9e3865912444be6339207b6648/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76", size = 686712 }, - { url = "https://files.pythonhosted.org/packages/cd/11/d12dbf683471f888d354dac59593873c2b45feb193c5e3e0f2ebf85e68b9/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6", size = 663936 }, - { url = "https://files.pythonhosted.org/packages/72/14/4c268f5077db5c83f743ee1daeb236269fa8577133a5cfa49f8b382baf13/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd", size = 696580 }, - { url = "https://files.pythonhosted.org/packages/30/fc/8cd12f189c6405a4c1cf37bd633aa740a9538c8e40497c231072d0fef5cf/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a", size = 663393 }, - { url = "https://files.pythonhosted.org/packages/80/29/c0a017b704aaf3cbf704989785cd9c5d5b8ccec2dae6ac0c53833c84e677/ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da", size = 100326 }, - { url = "https://files.pythonhosted.org/packages/3a/65/fa39d74db4e2d0cd252355732d966a460a41cd01c6353b820a0952432839/ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28", size = 118079 }, - { url = "https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6", size = 132224 }, - { url = "https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e", size = 641480 }, - { url = "https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e", size = 739068 }, - { url = "https://files.pythonhosted.org/packages/86/29/88c2567bc893c84d88b4c48027367c3562ae69121d568e8a3f3a8d363f4d/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52", size = 703012 }, - { url = "https://files.pythonhosted.org/packages/11/46/879763c619b5470820f0cd6ca97d134771e502776bc2b844d2adb6e37753/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642", size = 704352 }, - { url = "https://files.pythonhosted.org/packages/02/80/ece7e6034256a4186bbe50dee28cd032d816974941a6abf6a9d65e4228a7/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2", size = 737344 }, - { url = "https://files.pythonhosted.org/packages/f0/ca/e4106ac7e80efbabdf4bf91d3d32fc424e41418458251712f5672eada9ce/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3", size = 714498 }, - { url = "https://files.pythonhosted.org/packages/67/58/b1f60a1d591b771298ffa0428237afb092c7f29ae23bad93420b1eb10703/ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4", size = 100205 }, - { url = "https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb", size = 118185 }, - { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433 }, - { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362 }, - { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118 }, - { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497 }, - { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042 }, - { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831 }, - { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692 }, - { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777 }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523 }, - { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011 }, - { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488 }, - { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066 }, - { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785 }, - { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017 }, - { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270 }, - { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059 }, - { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583 }, - { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190 }, - { url = "https://files.pythonhosted.org/packages/e5/46/ccdef7a84ad745c37cb3d9a81790f28fbc9adf9c237dba682017b123294e/ruamel.yaml.clib-0.2.12-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987", size = 131834 }, - { url = "https://files.pythonhosted.org/packages/29/09/932360f30ad1b7b79f08757e0a6fb8c5392a52cdcc182779158fe66d25ac/ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bc5f1e1c28e966d61d2519f2a3d451ba989f9ea0f2307de7bc45baa526de9e45", size = 636120 }, - { url = "https://files.pythonhosted.org/packages/a2/2a/5b27602e7a4344c1334e26bf4739746206b7a60a8acdba33a61473468b73/ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a0e060aace4c24dcaf71023bbd7d42674e3b230f7e7b97317baf1e953e5b519", size = 724914 }, - { url = "https://files.pythonhosted.org/packages/da/1c/23497017c554fc06ff5701b29355522cff850f626337fff35d9ab352cb18/ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7", size = 689072 }, - { url = "https://files.pythonhosted.org/packages/68/e6/f3d4ff3223f9ea49c3b7169ec0268e42bd49f87c70c0e3e853895e4a7ae2/ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285", size = 667091 }, - { url = "https://files.pythonhosted.org/packages/84/62/ead07043527642491e5011b143f44b81ef80f1025a96069b7210e0f2f0f3/ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed", size = 699111 }, - { url = "https://files.pythonhosted.org/packages/52/b3/fe4d84446f7e4887e3bea7ceff0a7df23790b5ed625f830e79ace88ebefb/ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2c59aa6170b990d8d2719323e628aaf36f3bfbc1c26279c0eeeb24d05d2d11c7", size = 666365 }, - { url = "https://files.pythonhosted.org/packages/6e/b3/7feb99a00bfaa5c6868617bb7651308afde85e5a0b23cd187fe5de65feeb/ruamel.yaml.clib-0.2.12-cp39-cp39-win32.whl", hash = "sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12", size = 100863 }, - { url = "https://files.pythonhosted.org/packages/93/07/de635108684b7a5bb06e432b0930c5a04b6c59efe73bd966d8db3cc208f2/ruamel.yaml.clib-0.2.12-cp39-cp39-win_amd64.whl", hash = "sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b", size = 118653 }, - { url = "https://files.pythonhosted.org/packages/e5/46/ccdef7a84ad745c37cb3d9a81790f28fbc9adf9c237dba682017b123294e/ruamel.yaml.clib-0.2.12-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987", size = 131834 }, - { url = "https://files.pythonhosted.org/packages/29/09/932360f30ad1b7b79f08757e0a6fb8c5392a52cdcc182779158fe66d25ac/ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bc5f1e1c28e966d61d2519f2a3d451ba989f9ea0f2307de7bc45baa526de9e45", size = 636120 }, - { url = "https://files.pythonhosted.org/packages/a2/2a/5b27602e7a4344c1334e26bf4739746206b7a60a8acdba33a61473468b73/ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a0e060aace4c24dcaf71023bbd7d42674e3b230f7e7b97317baf1e953e5b519", size = 724914 }, - { url = "https://files.pythonhosted.org/packages/da/1c/23497017c554fc06ff5701b29355522cff850f626337fff35d9ab352cb18/ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7", size = 689072 }, - { url = "https://files.pythonhosted.org/packages/68/e6/f3d4ff3223f9ea49c3b7169ec0268e42bd49f87c70c0e3e853895e4a7ae2/ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285", size = 667091 }, - { url = "https://files.pythonhosted.org/packages/84/62/ead07043527642491e5011b143f44b81ef80f1025a96069b7210e0f2f0f3/ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed", size = 699111 }, - { url = "https://files.pythonhosted.org/packages/52/b3/fe4d84446f7e4887e3bea7ceff0a7df23790b5ed625f830e79ace88ebefb/ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2c59aa6170b990d8d2719323e628aaf36f3bfbc1c26279c0eeeb24d05d2d11c7", size = 666365 }, - { url = "https://files.pythonhosted.org/packages/6e/b3/7feb99a00bfaa5c6868617bb7651308afde85e5a0b23cd187fe5de65feeb/ruamel.yaml.clib-0.2.12-cp39-cp39-win32.whl", hash = "sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12", size = 100863 }, - { url = "https://files.pythonhosted.org/packages/93/07/de635108684b7a5bb06e432b0930c5a04b6c59efe73bd966d8db3cc208f2/ruamel.yaml.clib-0.2.12-cp39-cp39-win_amd64.whl", hash = "sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b", size = 118653 }, + { url = "https://files.pythonhosted.org/packages/70/57/40a958e863e299f0c74ef32a3bde9f2d1ea8d69669368c0c502a0997f57f/ruamel.yaml.clib-0.2.12-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:11f891336688faf5156a36293a9c362bdc7c88f03a8a027c2c1d8e0bcde998e5", size = 131301, upload_time = "2024-10-20T10:12:35.876Z" }, + { url = "https://files.pythonhosted.org/packages/98/a8/29a3eb437b12b95f50a6bcc3d7d7214301c6c529d8fdc227247fa84162b5/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a606ef75a60ecf3d924613892cc603b154178ee25abb3055db5062da811fd969", size = 633728, upload_time = "2024-10-20T10:12:37.858Z" }, + { url = "https://files.pythonhosted.org/packages/35/6d/ae05a87a3ad540259c3ad88d71275cbd1c0f2d30ae04c65dcbfb6dcd4b9f/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd5415dded15c3822597455bc02bcd66e81ef8b7a48cb71a33628fc9fdde39df", size = 722230, upload_time = "2024-10-20T10:12:39.457Z" }, + { url = "https://files.pythonhosted.org/packages/7f/b7/20c6f3c0b656fe609675d69bc135c03aac9e3865912444be6339207b6648/ruamel.yaml.clib-0.2.12-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f66efbc1caa63c088dead1c4170d148eabc9b80d95fb75b6c92ac0aad2437d76", size = 686712, upload_time = "2024-10-20T10:12:41.119Z" }, + { url = "https://files.pythonhosted.org/packages/cd/11/d12dbf683471f888d354dac59593873c2b45feb193c5e3e0f2ebf85e68b9/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:22353049ba4181685023b25b5b51a574bce33e7f51c759371a7422dcae5402a6", size = 663936, upload_time = "2024-10-21T11:26:37.419Z" }, + { url = "https://files.pythonhosted.org/packages/72/14/4c268f5077db5c83f743ee1daeb236269fa8577133a5cfa49f8b382baf13/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:932205970b9f9991b34f55136be327501903f7c66830e9760a8ffb15b07f05cd", size = 696580, upload_time = "2024-10-21T11:26:39.503Z" }, + { url = "https://files.pythonhosted.org/packages/30/fc/8cd12f189c6405a4c1cf37bd633aa740a9538c8e40497c231072d0fef5cf/ruamel.yaml.clib-0.2.12-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a52d48f4e7bf9005e8f0a89209bf9a73f7190ddf0489eee5eb51377385f59f2a", size = 663393, upload_time = "2024-12-11T19:58:13.873Z" }, + { url = "https://files.pythonhosted.org/packages/80/29/c0a017b704aaf3cbf704989785cd9c5d5b8ccec2dae6ac0c53833c84e677/ruamel.yaml.clib-0.2.12-cp310-cp310-win32.whl", hash = "sha256:3eac5a91891ceb88138c113f9db04f3cebdae277f5d44eaa3651a4f573e6a5da", size = 100326, upload_time = "2024-10-20T10:12:42.967Z" }, + { url = "https://files.pythonhosted.org/packages/3a/65/fa39d74db4e2d0cd252355732d966a460a41cd01c6353b820a0952432839/ruamel.yaml.clib-0.2.12-cp310-cp310-win_amd64.whl", hash = "sha256:ab007f2f5a87bd08ab1499bdf96f3d5c6ad4dcfa364884cb4549aa0154b13a28", size = 118079, upload_time = "2024-10-20T10:12:44.117Z" }, + { url = "https://files.pythonhosted.org/packages/fb/8f/683c6ad562f558cbc4f7c029abcd9599148c51c54b5ef0f24f2638da9fbb/ruamel.yaml.clib-0.2.12-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:4a6679521a58256a90b0d89e03992c15144c5f3858f40d7c18886023d7943db6", size = 132224, upload_time = "2024-10-20T10:12:45.162Z" }, + { url = "https://files.pythonhosted.org/packages/3c/d2/b79b7d695e2f21da020bd44c782490578f300dd44f0a4c57a92575758a76/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:d84318609196d6bd6da0edfa25cedfbabd8dbde5140a0a23af29ad4b8f91fb1e", size = 641480, upload_time = "2024-10-20T10:12:46.758Z" }, + { url = "https://files.pythonhosted.org/packages/68/6e/264c50ce2a31473a9fdbf4fa66ca9b2b17c7455b31ef585462343818bd6c/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb43a269eb827806502c7c8efb7ae7e9e9d0573257a46e8e952f4d4caba4f31e", size = 739068, upload_time = "2024-10-20T10:12:48.605Z" }, + { url = "https://files.pythonhosted.org/packages/86/29/88c2567bc893c84d88b4c48027367c3562ae69121d568e8a3f3a8d363f4d/ruamel.yaml.clib-0.2.12-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:811ea1594b8a0fb466172c384267a4e5e367298af6b228931f273b111f17ef52", size = 703012, upload_time = "2024-10-20T10:12:51.124Z" }, + { url = "https://files.pythonhosted.org/packages/11/46/879763c619b5470820f0cd6ca97d134771e502776bc2b844d2adb6e37753/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cf12567a7b565cbf65d438dec6cfbe2917d3c1bdddfce84a9930b7d35ea59642", size = 704352, upload_time = "2024-10-21T11:26:41.438Z" }, + { url = "https://files.pythonhosted.org/packages/02/80/ece7e6034256a4186bbe50dee28cd032d816974941a6abf6a9d65e4228a7/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7dd5adc8b930b12c8fc5b99e2d535a09889941aa0d0bd06f4749e9a9397c71d2", size = 737344, upload_time = "2024-10-21T11:26:43.62Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ca/e4106ac7e80efbabdf4bf91d3d32fc424e41418458251712f5672eada9ce/ruamel.yaml.clib-0.2.12-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1492a6051dab8d912fc2adeef0e8c72216b24d57bd896ea607cb90bb0c4981d3", size = 714498, upload_time = "2024-12-11T19:58:15.592Z" }, + { url = "https://files.pythonhosted.org/packages/67/58/b1f60a1d591b771298ffa0428237afb092c7f29ae23bad93420b1eb10703/ruamel.yaml.clib-0.2.12-cp311-cp311-win32.whl", hash = "sha256:bd0a08f0bab19093c54e18a14a10b4322e1eacc5217056f3c063bd2f59853ce4", size = 100205, upload_time = "2024-10-20T10:12:52.865Z" }, + { url = "https://files.pythonhosted.org/packages/b4/4f/b52f634c9548a9291a70dfce26ca7ebce388235c93588a1068028ea23fcc/ruamel.yaml.clib-0.2.12-cp311-cp311-win_amd64.whl", hash = "sha256:a274fb2cb086c7a3dea4322ec27f4cb5cc4b6298adb583ab0e211a4682f241eb", size = 118185, upload_time = "2024-10-20T10:12:54.652Z" }, + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload_time = "2024-10-20T10:12:55.657Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload_time = "2024-10-20T10:12:57.155Z" }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload_time = "2024-10-20T10:12:58.501Z" }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload_time = "2024-10-20T10:13:00.211Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload_time = "2024-10-21T11:26:46.038Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload_time = "2024-10-21T11:26:47.487Z" }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload_time = "2024-12-11T19:58:17.252Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload_time = "2024-10-20T10:13:01.395Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload_time = "2024-10-20T10:13:02.768Z" }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload_time = "2024-10-20T10:13:04.377Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload_time = "2024-10-20T10:13:05.906Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload_time = "2024-10-20T10:13:07.26Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload_time = "2024-10-20T10:13:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload_time = "2024-10-21T11:26:48.866Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload_time = "2024-10-21T11:26:50.213Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload_time = "2024-12-11T19:58:18.846Z" }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload_time = "2024-10-20T10:13:09.658Z" }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload_time = "2024-10-20T10:13:10.66Z" }, + { url = "https://files.pythonhosted.org/packages/e5/46/ccdef7a84ad745c37cb3d9a81790f28fbc9adf9c237dba682017b123294e/ruamel.yaml.clib-0.2.12-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:fc4b630cd3fa2cf7fce38afa91d7cfe844a9f75d7f0f36393fa98815e911d987", size = 131834, upload_time = "2024-10-20T10:13:11.72Z" }, + { url = "https://files.pythonhosted.org/packages/29/09/932360f30ad1b7b79f08757e0a6fb8c5392a52cdcc182779158fe66d25ac/ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bc5f1e1c28e966d61d2519f2a3d451ba989f9ea0f2307de7bc45baa526de9e45", size = 636120, upload_time = "2024-10-20T10:13:12.84Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2a/5b27602e7a4344c1334e26bf4739746206b7a60a8acdba33a61473468b73/ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a0e060aace4c24dcaf71023bbd7d42674e3b230f7e7b97317baf1e953e5b519", size = 724914, upload_time = "2024-10-20T10:13:14.605Z" }, + { url = "https://files.pythonhosted.org/packages/da/1c/23497017c554fc06ff5701b29355522cff850f626337fff35d9ab352cb18/ruamel.yaml.clib-0.2.12-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2f1c3765db32be59d18ab3953f43ab62a761327aafc1594a2a1fbe038b8b8a7", size = 689072, upload_time = "2024-10-20T10:13:15.939Z" }, + { url = "https://files.pythonhosted.org/packages/68/e6/f3d4ff3223f9ea49c3b7169ec0268e42bd49f87c70c0e3e853895e4a7ae2/ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d85252669dc32f98ebcd5d36768f5d4faeaeaa2d655ac0473be490ecdae3c285", size = 667091, upload_time = "2024-10-21T11:26:52.274Z" }, + { url = "https://files.pythonhosted.org/packages/84/62/ead07043527642491e5011b143f44b81ef80f1025a96069b7210e0f2f0f3/ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e143ada795c341b56de9418c58d028989093ee611aa27ffb9b7f609c00d813ed", size = 699111, upload_time = "2024-10-21T11:26:54.294Z" }, + { url = "https://files.pythonhosted.org/packages/52/b3/fe4d84446f7e4887e3bea7ceff0a7df23790b5ed625f830e79ace88ebefb/ruamel.yaml.clib-0.2.12-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2c59aa6170b990d8d2719323e628aaf36f3bfbc1c26279c0eeeb24d05d2d11c7", size = 666365, upload_time = "2024-12-11T19:58:20.444Z" }, + { url = "https://files.pythonhosted.org/packages/6e/b3/7feb99a00bfaa5c6868617bb7651308afde85e5a0b23cd187fe5de65feeb/ruamel.yaml.clib-0.2.12-cp39-cp39-win32.whl", hash = "sha256:beffaed67936fbbeffd10966a4eb53c402fafd3d6833770516bf7314bc6ffa12", size = 100863, upload_time = "2024-10-20T10:13:17.244Z" }, + { url = "https://files.pythonhosted.org/packages/93/07/de635108684b7a5bb06e432b0930c5a04b6c59efe73bd966d8db3cc208f2/ruamel.yaml.clib-0.2.12-cp39-cp39-win_amd64.whl", hash = "sha256:040ae85536960525ea62868b642bdb0c2cc6021c9f9d507810c0c604e66f5a7b", size = 118653, upload_time = "2024-10-20T10:13:18.289Z" }, ] [[package]] name = "ruff" -version = "0.11.5" +version = "0.11.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/45/71/5759b2a6b2279bb77fe15b1435b89473631c2cd6374d45ccdb6b785810be/ruff-0.11.5.tar.gz", hash = "sha256:cae2e2439cb88853e421901ec040a758960b576126dab520fa08e9de431d1bef", size = 3976488 } +sdist = { url = "https://files.pythonhosted.org/packages/5b/89/6f9c9674818ac2e9cc2f2b35b704b7768656e6b7c139064fc7ba8fbc99f1/ruff-0.11.7.tar.gz", hash = "sha256:655089ad3224070736dc32844fde783454f8558e71f501cb207485fe4eee23d4", size = 4054861, upload_time = "2025-04-24T18:49:37.007Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/23/db/6efda6381778eec7f35875b5cbefd194904832a1153d68d36d6b269d81a8/ruff-0.11.5-py3-none-linux_armv6l.whl", hash = "sha256:2561294e108eb648e50f210671cc56aee590fb6167b594144401532138c66c7b", size = 10103150 }, - { url = "https://files.pythonhosted.org/packages/44/f2/06cd9006077a8db61956768bc200a8e52515bf33a8f9b671ee527bb10d77/ruff-0.11.5-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ac12884b9e005c12d0bd121f56ccf8033e1614f736f766c118ad60780882a077", size = 10898637 }, - { url = "https://files.pythonhosted.org/packages/18/f5/af390a013c56022fe6f72b95c86eb7b2585c89cc25d63882d3bfe411ecf1/ruff-0.11.5-py3-none-macosx_11_0_arm64.whl", hash = "sha256:4bfd80a6ec559a5eeb96c33f832418bf0fb96752de0539905cf7b0cc1d31d779", size = 10236012 }, - { url = "https://files.pythonhosted.org/packages/b8/ca/b9bf954cfed165e1a0c24b86305d5c8ea75def256707f2448439ac5e0d8b/ruff-0.11.5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0947c0a1afa75dcb5db4b34b070ec2bccee869d40e6cc8ab25aca11a7d527794", size = 10415338 }, - { url = "https://files.pythonhosted.org/packages/d9/4d/2522dde4e790f1b59885283f8786ab0046958dfd39959c81acc75d347467/ruff-0.11.5-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ad871ff74b5ec9caa66cb725b85d4ef89b53f8170f47c3406e32ef040400b038", size = 9965277 }, - { url = "https://files.pythonhosted.org/packages/e5/7a/749f56f150eef71ce2f626a2f6988446c620af2f9ba2a7804295ca450397/ruff-0.11.5-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6cf918390cfe46d240732d4d72fa6e18e528ca1f60e318a10835cf2fa3dc19f", size = 11541614 }, - { url = "https://files.pythonhosted.org/packages/89/b2/7d9b8435222485b6aac627d9c29793ba89be40b5de11584ca604b829e960/ruff-0.11.5-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:56145ee1478582f61c08f21076dc59153310d606ad663acc00ea3ab5b2125f82", size = 12198873 }, - { url = "https://files.pythonhosted.org/packages/00/e0/a1a69ef5ffb5c5f9c31554b27e030a9c468fc6f57055886d27d316dfbabd/ruff-0.11.5-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e5f66f8f1e8c9fc594cbd66fbc5f246a8d91f916cb9667e80208663ec3728304", size = 11670190 }, - { url = "https://files.pythonhosted.org/packages/05/61/c1c16df6e92975072c07f8b20dad35cd858e8462b8865bc856fe5d6ccb63/ruff-0.11.5-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80b4df4d335a80315ab9afc81ed1cff62be112bd165e162b5eed8ac55bfc8470", size = 13902301 }, - { url = "https://files.pythonhosted.org/packages/79/89/0af10c8af4363304fd8cb833bd407a2850c760b71edf742c18d5a87bb3ad/ruff-0.11.5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3068befab73620b8a0cc2431bd46b3cd619bc17d6f7695a3e1bb166b652c382a", size = 11350132 }, - { url = "https://files.pythonhosted.org/packages/b9/e1/ecb4c687cbf15164dd00e38cf62cbab238cad05dd8b6b0fc68b0c2785e15/ruff-0.11.5-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:f5da2e710a9641828e09aa98b92c9ebbc60518fdf3921241326ca3e8f8e55b8b", size = 10312937 }, - { url = "https://files.pythonhosted.org/packages/cf/4f/0e53fe5e500b65934500949361e3cd290c5ba60f0324ed59d15f46479c06/ruff-0.11.5-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ef39f19cb8ec98cbc762344921e216f3857a06c47412030374fffd413fb8fd3a", size = 9936683 }, - { url = "https://files.pythonhosted.org/packages/04/a8/8183c4da6d35794ae7f76f96261ef5960853cd3f899c2671961f97a27d8e/ruff-0.11.5-py3-none-musllinux_1_2_i686.whl", hash = "sha256:b2a7cedf47244f431fd11aa5a7e2806dda2e0c365873bda7834e8f7d785ae159", size = 10950217 }, - { url = "https://files.pythonhosted.org/packages/26/88/9b85a5a8af21e46a0639b107fcf9bfc31da4f1d263f2fc7fbe7199b47f0a/ruff-0.11.5-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:81be52e7519f3d1a0beadcf8e974715b2dfc808ae8ec729ecfc79bddf8dbb783", size = 11404521 }, - { url = "https://files.pythonhosted.org/packages/fc/52/047f35d3b20fd1ae9ccfe28791ef0f3ca0ef0b3e6c1a58badd97d450131b/ruff-0.11.5-py3-none-win32.whl", hash = "sha256:e268da7b40f56e3eca571508a7e567e794f9bfcc0f412c4b607931d3af9c4afe", size = 10320697 }, - { url = "https://files.pythonhosted.org/packages/b9/fe/00c78010e3332a6e92762424cf4c1919065707e962232797d0b57fd8267e/ruff-0.11.5-py3-none-win_amd64.whl", hash = "sha256:6c6dc38af3cfe2863213ea25b6dc616d679205732dc0fb673356c2d69608f800", size = 11378665 }, - { url = "https://files.pythonhosted.org/packages/43/7c/c83fe5cbb70ff017612ff36654edfebec4b1ef79b558b8e5fd933bab836b/ruff-0.11.5-py3-none-win_arm64.whl", hash = "sha256:67e241b4314f4eacf14a601d586026a962f4002a475aa702c69980a38087aa4e", size = 10460287 }, + { url = "https://files.pythonhosted.org/packages/b4/ec/21927cb906c5614b786d1621dba405e3d44f6e473872e6df5d1a6bca0455/ruff-0.11.7-py3-none-linux_armv6l.whl", hash = "sha256:d29e909d9a8d02f928d72ab7837b5cbc450a5bdf578ab9ebee3263d0a525091c", size = 10245403, upload_time = "2025-04-24T18:48:40.459Z" }, + { url = "https://files.pythonhosted.org/packages/e2/af/fec85b6c2c725bcb062a354dd7cbc1eed53c33ff3aa665165871c9c16ddf/ruff-0.11.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:dd1fb86b168ae349fb01dd497d83537b2c5541fe0626e70c786427dd8363aaee", size = 11007166, upload_time = "2025-04-24T18:48:44.742Z" }, + { url = "https://files.pythonhosted.org/packages/31/9a/2d0d260a58e81f388800343a45898fd8df73c608b8261c370058b675319a/ruff-0.11.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d3d7d2e140a6fbbc09033bce65bd7ea29d6a0adeb90b8430262fbacd58c38ada", size = 10378076, upload_time = "2025-04-24T18:48:47.918Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c4/9b09b45051404d2e7dd6d9dbcbabaa5ab0093f9febcae664876a77b9ad53/ruff-0.11.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4809df77de390a1c2077d9b7945d82f44b95d19ceccf0c287c56e4dc9b91ca64", size = 10557138, upload_time = "2025-04-24T18:48:51.707Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5e/f62a1b6669870a591ed7db771c332fabb30f83c967f376b05e7c91bccd14/ruff-0.11.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f3a0c2e169e6b545f8e2dba185eabbd9db4f08880032e75aa0e285a6d3f48201", size = 10095726, upload_time = "2025-04-24T18:48:54.243Z" }, + { url = "https://files.pythonhosted.org/packages/45/59/a7aa8e716f4cbe07c3500a391e58c52caf665bb242bf8be42c62adef649c/ruff-0.11.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49b888200a320dd96a68e86736cf531d6afba03e4f6cf098401406a257fcf3d6", size = 11672265, upload_time = "2025-04-24T18:48:57.639Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e3/101a8b707481f37aca5f0fcc3e42932fa38b51add87bfbd8e41ab14adb24/ruff-0.11.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2b19cdb9cf7dae00d5ee2e7c013540cdc3b31c4f281f1dacb5a799d610e90db4", size = 12331418, upload_time = "2025-04-24T18:49:00.697Z" }, + { url = "https://files.pythonhosted.org/packages/dd/71/037f76cbe712f5cbc7b852e4916cd3cf32301a30351818d32ab71580d1c0/ruff-0.11.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64e0ee994c9e326b43539d133a36a455dbaab477bc84fe7bfbd528abe2f05c1e", size = 11794506, upload_time = "2025-04-24T18:49:03.545Z" }, + { url = "https://files.pythonhosted.org/packages/ca/de/e450b6bab1fc60ef263ef8fcda077fb4977601184877dce1c59109356084/ruff-0.11.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bad82052311479a5865f52c76ecee5d468a58ba44fb23ee15079f17dd4c8fd63", size = 13939084, upload_time = "2025-04-24T18:49:07.159Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2c/1e364cc92970075d7d04c69c928430b23e43a433f044474f57e425cbed37/ruff-0.11.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7940665e74e7b65d427b82bffc1e46710ec7f30d58b4b2d5016e3f0321436502", size = 11450441, upload_time = "2025-04-24T18:49:11.41Z" }, + { url = "https://files.pythonhosted.org/packages/9d/7d/1b048eb460517ff9accd78bca0fa6ae61df2b276010538e586f834f5e402/ruff-0.11.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:169027e31c52c0e36c44ae9a9c7db35e505fee0b39f8d9fca7274a6305295a92", size = 10441060, upload_time = "2025-04-24T18:49:14.184Z" }, + { url = "https://files.pythonhosted.org/packages/3a/57/8dc6ccfd8380e5ca3d13ff7591e8ba46a3b330323515a4996b991b10bd5d/ruff-0.11.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:305b93f9798aee582e91e34437810439acb28b5fc1fee6b8205c78c806845a94", size = 10058689, upload_time = "2025-04-24T18:49:17.559Z" }, + { url = "https://files.pythonhosted.org/packages/23/bf/20487561ed72654147817885559ba2aa705272d8b5dee7654d3ef2dbf912/ruff-0.11.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a681db041ef55550c371f9cd52a3cf17a0da4c75d6bd691092dfc38170ebc4b6", size = 11073703, upload_time = "2025-04-24T18:49:20.247Z" }, + { url = "https://files.pythonhosted.org/packages/9d/27/04f2db95f4ef73dccedd0c21daf9991cc3b7f29901a4362057b132075aa4/ruff-0.11.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:07f1496ad00a4a139f4de220b0c97da6d4c85e0e4aa9b2624167b7d4d44fd6b6", size = 11532822, upload_time = "2025-04-24T18:49:23.765Z" }, + { url = "https://files.pythonhosted.org/packages/e1/72/43b123e4db52144c8add336581de52185097545981ff6e9e58a21861c250/ruff-0.11.7-py3-none-win32.whl", hash = "sha256:f25dfb853ad217e6e5f1924ae8a5b3f6709051a13e9dad18690de6c8ff299e26", size = 10362436, upload_time = "2025-04-24T18:49:27.377Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a0/3e58cd76fdee53d5c8ce7a56d84540833f924ccdf2c7d657cb009e604d82/ruff-0.11.7-py3-none-win_amd64.whl", hash = "sha256:0a931d85959ceb77e92aea4bbedfded0a31534ce191252721128f77e5ae1f98a", size = 11566676, upload_time = "2025-04-24T18:49:30.938Z" }, + { url = "https://files.pythonhosted.org/packages/68/ca/69d7c7752bce162d1516e5592b1cc6b6668e9328c0d270609ddbeeadd7cf/ruff-0.11.7-py3-none-win_arm64.whl", hash = "sha256:778c1e5d6f9e91034142dfd06110534ca13220bfaad5c3735f6cb844654f6177", size = 10677936, upload_time = "2025-04-24T18:49:34.392Z" }, ] [[package]] name = "shellingham" version = "1.5.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload_time = "2023-10-24T04:13:40.426Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload_time = "2023-10-24T04:13:38.866Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload_time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload_time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "sniffio" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload_time = "2024-02-25T23:20:04.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload_time = "2024-02-25T23:20:01.196Z" }, ] [[package]] name = "sortedcontainers" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594 } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload_time = "2021-05-16T22:03:42.897Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload_time = "2021-05-16T22:03:41.177Z" }, ] [[package]] @@ -1133,24 +1001,62 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206, upload_time = "2023-03-10T12:50:27.062Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, + { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917, upload_time = "2023-03-10T12:50:17.242Z" }, ] [[package]] name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload_time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload_time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload_time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload_time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload_time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload_time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload_time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload_time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload_time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload_time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload_time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload_time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload_time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload_time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload_time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload_time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload_time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload_time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload_time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload_time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload_time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload_time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload_time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload_time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload_time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload_time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload_time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload_time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload_time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload_time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload_time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload_time = "2024-11-27T22:38:35.385Z" }, ] [[package]] name = "tower" -version = "0.3.6" -version = "0.3.6" +version = "0.3.9" source = { editable = "." } dependencies = [ { name = "attrs" }, @@ -1172,6 +1078,8 @@ all = [ ] dev = [ { name = "openapi-python-client" }, + { name = "pytest" }, + { name = "pytest-httpx" }, ] iceberg = [ { name = "polars" }, @@ -1189,6 +1097,8 @@ requires-dist = [ { name = "polars", marker = "extra == 'iceberg'", specifier = ">=1.27.1" }, { name = "pyarrow", marker = "extra == 'iceberg'", specifier = ">=19.0.1" }, { name = "pyiceberg", marker = "extra == 'iceberg'", specifier = ">=0.9.0" }, + { name = "pytest", marker = "extra == 'dev'", specifier = ">=8.3.5" }, + { name = "pytest-httpx", marker = "extra == 'dev'", specifier = ">=0.35.0" }, { name = "python-dateutil", specifier = ">=2.9.0.post0" }, { name = "tower", extras = ["ai", "iceberg"], marker = "extra == 'all'", editable = "." }, ] @@ -1201,30 +1111,33 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload_time = "2024-11-24T20:12:22.481Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload_time = "2024-11-24T20:12:19.698Z" }, ] [[package]] name = "typer" -version = "0.7.0" +version = "0.15.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/45/bcbc581f87c8d8f2a56b513eb994d07ea4546322818d95dc6a3caf2c928b/typer-0.7.0.tar.gz", hash = "sha256:ff797846578a9f2a201b53442aedeb543319466870fbe1c701eab66dd7681165", size = 251871 } +sdist = { url = "https://files.pythonhosted.org/packages/8b/6f/3991f0f1c7fcb2df31aef28e0594d8d54b05393a0e4e34c65e475c2a5d41/typer-0.15.2.tar.gz", hash = "sha256:ab2fab47533a813c49fe1f16b1a370fd5819099c00b119e0633df65f22144ba5", size = 100711, upload_time = "2025-02-27T19:17:34.807Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/44/56c3f48d2bb83d76f5c970aef8e2c3ebd6a832f09e3621c5395371fe6999/typer-0.7.0-py3-none-any.whl", hash = "sha256:b5e704f4e48ec263de1c0b3a2387cd405a13767d2f907f44c1a08cbad96f606d", size = 38377 }, + { url = "https://files.pythonhosted.org/packages/7f/fc/5b29fea8cee020515ca82cc68e3b8e1e34bb19a3535ad854cac9257b414c/typer-0.15.2-py3-none-any.whl", hash = "sha256:46a499c6107d645a9c13f7ee46c5d5096cae6f5fc57dd11eccbbb9ae3e44ddfc", size = 45061, upload_time = "2025-02-27T19:17:32.111Z" }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload_time = "2025-04-10T14:19:05.416Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload_time = "2025-04-10T14:19:03.967Z" }, ] [[package]] @@ -1234,16 +1147,16 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 } +sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222, upload_time = "2025-02-25T17:27:59.638Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 }, + { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125, upload_time = "2025-02-25T17:27:57.754Z" }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload_time = "2025-04-10T15:23:39.232Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload_time = "2025-04-10T15:23:37.377Z" }, ]