diff --git a/src/graphn/_generated/api/admin_billing/admin_create_billing_invoice.py b/src/graphn/_generated/api/admin_billing/admin_create_billing_invoice.py new file mode 100644 index 0000000..80bd3c6 --- /dev/null +++ b/src/graphn/_generated/api/admin_billing/admin_create_billing_invoice.py @@ -0,0 +1,195 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.admin_invoice_create_request import AdminInvoiceCreateRequest +from ...models.admin_invoice_create_response import AdminInvoiceCreateResponse +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + org_id: str, + *, + body: AdminInvoiceCreateRequest, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/admin/orgs/{org_id}/invoices".format( + org_id=quote(str(org_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AdminInvoiceCreateResponse | Any | Error | None: + if response.status_code == 200: + response_200 = AdminInvoiceCreateResponse.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = cast(Any, None) + return response_409 + + if response.status_code == 502: + response_502 = cast(Any, None) + return response_502 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AdminInvoiceCreateResponse | Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + org_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceCreateRequest, +) -> Response[AdminInvoiceCreateResponse | Any | Error]: + """Create or replay an immutable invoice + + Args: + org_id (str): + body (AdminInvoiceCreateRequest): + + 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[AdminInvoiceCreateResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + org_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceCreateRequest, +) -> AdminInvoiceCreateResponse | Any | Error | None: + """Create or replay an immutable invoice + + Args: + org_id (str): + body (AdminInvoiceCreateRequest): + + 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: + AdminInvoiceCreateResponse | Any | Error + """ + + return sync_detailed( + org_id=org_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + org_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceCreateRequest, +) -> Response[AdminInvoiceCreateResponse | Any | Error]: + """Create or replay an immutable invoice + + Args: + org_id (str): + body (AdminInvoiceCreateRequest): + + 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[AdminInvoiceCreateResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + org_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceCreateRequest, +) -> AdminInvoiceCreateResponse | Any | Error | None: + """Create or replay an immutable invoice + + Args: + org_id (str): + body (AdminInvoiceCreateRequest): + + 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: + AdminInvoiceCreateResponse | Any | Error + """ + + return ( + await asyncio_detailed( + org_id=org_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/admin_billing/admin_discount_billing_invoice.py b/src/graphn/_generated/api/admin_billing/admin_discount_billing_invoice.py new file mode 100644 index 0000000..bf27be1 --- /dev/null +++ b/src/graphn/_generated/api/admin_billing/admin_discount_billing_invoice.py @@ -0,0 +1,209 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.admin_invoice_discount_request import AdminInvoiceDiscountRequest +from ...models.admin_invoice_discount_response import AdminInvoiceDiscountResponse +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + org_id: str, + invoice_id: str, + *, + body: AdminInvoiceDiscountRequest, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/admin/orgs/{org_id}/invoices/{invoice_id}/discount".format( + org_id=quote(str(org_id), safe=""), + invoice_id=quote(str(invoice_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AdminInvoiceDiscountResponse | Any | Error | None: + if response.status_code == 200: + response_200 = AdminInvoiceDiscountResponse.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = cast(Any, None) + return response_409 + + if response.status_code == 502: + response_502 = cast(Any, None) + return response_502 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AdminInvoiceDiscountResponse | Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + org_id: str, + invoice_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceDiscountRequest, +) -> Response[AdminInvoiceDiscountResponse | Any | Error]: + """Apply an admin discount and replace an invoice revision + + Args: + org_id (str): + invoice_id (str): + body (AdminInvoiceDiscountRequest): + + 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[AdminInvoiceDiscountResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + invoice_id=invoice_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + org_id: str, + invoice_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceDiscountRequest, +) -> AdminInvoiceDiscountResponse | Any | Error | None: + """Apply an admin discount and replace an invoice revision + + Args: + org_id (str): + invoice_id (str): + body (AdminInvoiceDiscountRequest): + + 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: + AdminInvoiceDiscountResponse | Any | Error + """ + + return sync_detailed( + org_id=org_id, + invoice_id=invoice_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + org_id: str, + invoice_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceDiscountRequest, +) -> Response[AdminInvoiceDiscountResponse | Any | Error]: + """Apply an admin discount and replace an invoice revision + + Args: + org_id (str): + invoice_id (str): + body (AdminInvoiceDiscountRequest): + + 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[AdminInvoiceDiscountResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + invoice_id=invoice_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + org_id: str, + invoice_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceDiscountRequest, +) -> AdminInvoiceDiscountResponse | Any | Error | None: + """Apply an admin discount and replace an invoice revision + + Args: + org_id (str): + invoice_id (str): + body (AdminInvoiceDiscountRequest): + + 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: + AdminInvoiceDiscountResponse | Any | Error + """ + + return ( + await asyncio_detailed( + org_id=org_id, + invoice_id=invoice_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/admin_billing/admin_get_billing_statement.py b/src/graphn/_generated/api/admin_billing/admin_get_billing_statement.py new file mode 100644 index 0000000..ef35ecc --- /dev/null +++ b/src/graphn/_generated/api/admin_billing/admin_get_billing_statement.py @@ -0,0 +1,184 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.admin_invoice_response import AdminInvoiceResponse +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + org_id: str, + period_start: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/v1/admin/orgs/{org_id}/invoices/{period_start}".format( + org_id=quote(str(org_id), safe=""), + period_start=quote(str(period_start), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AdminInvoiceResponse | Any | Error | None: + if response.status_code == 200: + response_200 = AdminInvoiceResponse.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 502: + response_502 = cast(Any, None) + return response_502 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AdminInvoiceResponse | Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + org_id: str, + period_start: str, + *, + client: AuthenticatedClient | Client, +) -> Response[AdminInvoiceResponse | Any | Error]: + """Get one immutable billing statement detail + + Args: + org_id (str): + period_start (str): + + 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[AdminInvoiceResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + period_start=period_start, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + org_id: str, + period_start: str, + *, + client: AuthenticatedClient | Client, +) -> AdminInvoiceResponse | Any | Error | None: + """Get one immutable billing statement detail + + Args: + org_id (str): + period_start (str): + + 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: + AdminInvoiceResponse | Any | Error + """ + + return sync_detailed( + org_id=org_id, + period_start=period_start, + client=client, + ).parsed + + +async def asyncio_detailed( + org_id: str, + period_start: str, + *, + client: AuthenticatedClient | Client, +) -> Response[AdminInvoiceResponse | Any | Error]: + """Get one immutable billing statement detail + + Args: + org_id (str): + period_start (str): + + 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[AdminInvoiceResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + period_start=period_start, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + org_id: str, + period_start: str, + *, + client: AuthenticatedClient | Client, +) -> AdminInvoiceResponse | Any | Error | None: + """Get one immutable billing statement detail + + Args: + org_id (str): + period_start (str): + + 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: + AdminInvoiceResponse | Any | Error + """ + + return ( + await asyncio_detailed( + org_id=org_id, + period_start=period_start, + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/admin_billing/admin_list_billing_invoice_revisions.py b/src/graphn/_generated/api/admin_billing/admin_list_billing_invoice_revisions.py new file mode 100644 index 0000000..78195d2 --- /dev/null +++ b/src/graphn/_generated/api/admin_billing/admin_list_billing_invoice_revisions.py @@ -0,0 +1,213 @@ +import datetime +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.admin_invoice_revisions_response import AdminInvoiceRevisionsResponse +from ...models.error import Error +from ...types import UNSET, Response + + +def _get_kwargs( + org_id: str, + *, + from_: datetime.datetime, + to: datetime.datetime, +) -> dict[str, Any]: + + params: dict[str, Any] = {} + + json_from_ = from_.isoformat() + params["from"] = json_from_ + + json_to = to.isoformat() + params["to"] = json_to + + 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": "/v1/admin/orgs/{org_id}/invoices/revisions".format( + org_id=quote(str(org_id), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AdminInvoiceRevisionsResponse | Any | Error | None: + if response.status_code == 200: + response_200 = AdminInvoiceRevisionsResponse.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = cast(Any, None) + return response_409 + + if response.status_code == 502: + response_502 = cast(Any, None) + return response_502 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AdminInvoiceRevisionsResponse | Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + org_id: str, + *, + client: AuthenticatedClient | Client, + from_: datetime.datetime, + to: datetime.datetime, +) -> Response[AdminInvoiceRevisionsResponse | Any | Error]: + """List immutable invoice revisions for a period + + Args: + org_id (str): + from_ (datetime.datetime): + to (datetime.datetime): + + 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[AdminInvoiceRevisionsResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + from_=from_, + to=to, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + org_id: str, + *, + client: AuthenticatedClient | Client, + from_: datetime.datetime, + to: datetime.datetime, +) -> AdminInvoiceRevisionsResponse | Any | Error | None: + """List immutable invoice revisions for a period + + Args: + org_id (str): + from_ (datetime.datetime): + to (datetime.datetime): + + 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: + AdminInvoiceRevisionsResponse | Any | Error + """ + + return sync_detailed( + org_id=org_id, + client=client, + from_=from_, + to=to, + ).parsed + + +async def asyncio_detailed( + org_id: str, + *, + client: AuthenticatedClient | Client, + from_: datetime.datetime, + to: datetime.datetime, +) -> Response[AdminInvoiceRevisionsResponse | Any | Error]: + """List immutable invoice revisions for a period + + Args: + org_id (str): + from_ (datetime.datetime): + to (datetime.datetime): + + 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[AdminInvoiceRevisionsResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + from_=from_, + to=to, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + org_id: str, + *, + client: AuthenticatedClient | Client, + from_: datetime.datetime, + to: datetime.datetime, +) -> AdminInvoiceRevisionsResponse | Any | Error | None: + """List immutable invoice revisions for a period + + Args: + org_id (str): + from_ (datetime.datetime): + to (datetime.datetime): + + 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: + AdminInvoiceRevisionsResponse | Any | Error + """ + + return ( + await asyncio_detailed( + org_id=org_id, + client=client, + from_=from_, + to=to, + ) + ).parsed diff --git a/src/graphn/_generated/api/admin_billing/admin_list_billing_statements.py b/src/graphn/_generated/api/admin_billing/admin_list_billing_statements.py new file mode 100644 index 0000000..db0e6df --- /dev/null +++ b/src/graphn/_generated/api/admin_billing/admin_list_billing_statements.py @@ -0,0 +1,191 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.admin_invoices_response import AdminInvoicesResponse +from ...models.error import Error +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + org_id: str, + *, + limit: int | Unset = UNSET, +) -> dict[str, Any]: + + params: dict[str, Any] = {} + + params["limit"] = limit + + 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": "/v1/admin/orgs/{org_id}/invoices".format( + org_id=quote(str(org_id), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AdminInvoicesResponse | Any | Error | None: + if response.status_code == 200: + response_200 = AdminInvoicesResponse.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 502: + response_502 = cast(Any, None) + return response_502 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AdminInvoicesResponse | Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + org_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = UNSET, +) -> Response[AdminInvoicesResponse | Any | Error]: + """List immutable billing statements for an organization + + Args: + org_id (str): + limit (int | Unset): + + 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[AdminInvoicesResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + limit=limit, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + org_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = UNSET, +) -> AdminInvoicesResponse | Any | Error | None: + """List immutable billing statements for an organization + + Args: + org_id (str): + limit (int | Unset): + + 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: + AdminInvoicesResponse | Any | Error + """ + + return sync_detailed( + org_id=org_id, + client=client, + limit=limit, + ).parsed + + +async def asyncio_detailed( + org_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = UNSET, +) -> Response[AdminInvoicesResponse | Any | Error]: + """List immutable billing statements for an organization + + Args: + org_id (str): + limit (int | Unset): + + 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[AdminInvoicesResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + limit=limit, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + org_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = UNSET, +) -> AdminInvoicesResponse | Any | Error | None: + """List immutable billing statements for an organization + + Args: + org_id (str): + limit (int | Unset): + + 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: + AdminInvoicesResponse | Any | Error + """ + + return ( + await asyncio_detailed( + org_id=org_id, + client=client, + limit=limit, + ) + ).parsed diff --git a/src/graphn/_generated/api/admin_billing/admin_preview_billing_invoice.py b/src/graphn/_generated/api/admin_billing/admin_preview_billing_invoice.py new file mode 100644 index 0000000..16ee51d --- /dev/null +++ b/src/graphn/_generated/api/admin_billing/admin_preview_billing_invoice.py @@ -0,0 +1,196 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.admin_invoice_preview_request import AdminInvoicePreviewRequest +from ...models.admin_invoice_preview_response import AdminInvoicePreviewResponse +from ...models.error import Error +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + org_id: str, + *, + body: AdminInvoicePreviewRequest | Unset = UNSET, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/admin/orgs/{org_id}/invoices/preview".format( + org_id=quote(str(org_id), safe=""), + ), + } + + if not isinstance(body, Unset): + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AdminInvoicePreviewResponse | Any | Error | None: + if response.status_code == 200: + response_200 = AdminInvoicePreviewResponse.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = cast(Any, None) + return response_409 + + if response.status_code == 502: + response_502 = cast(Any, None) + return response_502 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AdminInvoicePreviewResponse | Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + org_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoicePreviewRequest | Unset = UNSET, +) -> Response[AdminInvoicePreviewResponse | Any | Error]: + """Preview invoiceable statement window and immutable manifest + + Args: + org_id (str): + body (AdminInvoicePreviewRequest | Unset): from and to must both be set or both omitted. + + 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[AdminInvoicePreviewResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + org_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoicePreviewRequest | Unset = UNSET, +) -> AdminInvoicePreviewResponse | Any | Error | None: + """Preview invoiceable statement window and immutable manifest + + Args: + org_id (str): + body (AdminInvoicePreviewRequest | Unset): from and to must both be set or both omitted. + + 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: + AdminInvoicePreviewResponse | Any | Error + """ + + return sync_detailed( + org_id=org_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + org_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoicePreviewRequest | Unset = UNSET, +) -> Response[AdminInvoicePreviewResponse | Any | Error]: + """Preview invoiceable statement window and immutable manifest + + Args: + org_id (str): + body (AdminInvoicePreviewRequest | Unset): from and to must both be set or both omitted. + + 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[AdminInvoicePreviewResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + org_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoicePreviewRequest | Unset = UNSET, +) -> AdminInvoicePreviewResponse | Any | Error | None: + """Preview invoiceable statement window and immutable manifest + + Args: + org_id (str): + body (AdminInvoicePreviewRequest | Unset): from and to must both be set or both omitted. + + 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: + AdminInvoicePreviewResponse | Any | Error + """ + + return ( + await asyncio_detailed( + org_id=org_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/admin_billing/admin_void_billing_invoice.py b/src/graphn/_generated/api/admin_billing/admin_void_billing_invoice.py new file mode 100644 index 0000000..aac8eba --- /dev/null +++ b/src/graphn/_generated/api/admin_billing/admin_void_billing_invoice.py @@ -0,0 +1,209 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.admin_invoice_void_request import AdminInvoiceVoidRequest +from ...models.admin_invoice_void_response import AdminInvoiceVoidResponse +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + org_id: str, + invoice_id: str, + *, + body: AdminInvoiceVoidRequest, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/admin/orgs/{org_id}/invoices/{invoice_id}/void".format( + org_id=quote(str(org_id), safe=""), + invoice_id=quote(str(invoice_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AdminInvoiceVoidResponse | Any | Error | None: + if response.status_code == 200: + response_200 = AdminInvoiceVoidResponse.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = cast(Any, None) + return response_409 + + if response.status_code == 502: + response_502 = cast(Any, None) + return response_502 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AdminInvoiceVoidResponse | Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + org_id: str, + invoice_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceVoidRequest, +) -> Response[AdminInvoiceVoidResponse | Any | Error]: + """Void an existing immutable invoice + + Args: + org_id (str): + invoice_id (str): + body (AdminInvoiceVoidRequest): + + 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[AdminInvoiceVoidResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + invoice_id=invoice_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + org_id: str, + invoice_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceVoidRequest, +) -> AdminInvoiceVoidResponse | Any | Error | None: + """Void an existing immutable invoice + + Args: + org_id (str): + invoice_id (str): + body (AdminInvoiceVoidRequest): + + 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: + AdminInvoiceVoidResponse | Any | Error + """ + + return sync_detailed( + org_id=org_id, + invoice_id=invoice_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + org_id: str, + invoice_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceVoidRequest, +) -> Response[AdminInvoiceVoidResponse | Any | Error]: + """Void an existing immutable invoice + + Args: + org_id (str): + invoice_id (str): + body (AdminInvoiceVoidRequest): + + 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[AdminInvoiceVoidResponse | Any | Error] + """ + + kwargs = _get_kwargs( + org_id=org_id, + invoice_id=invoice_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + org_id: str, + invoice_id: str, + *, + client: AuthenticatedClient | Client, + body: AdminInvoiceVoidRequest, +) -> AdminInvoiceVoidResponse | Any | Error | None: + """Void an existing immutable invoice + + Args: + org_id (str): + invoice_id (str): + body (AdminInvoiceVoidRequest): + + 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: + AdminInvoiceVoidResponse | Any | Error + """ + + return ( + await asyncio_detailed( + org_id=org_id, + invoice_id=invoice_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/connections/__init__.py b/src/graphn/_generated/api/connections/__init__.py new file mode 100644 index 0000000..2d7c0b2 --- /dev/null +++ b/src/graphn/_generated/api/connections/__init__.py @@ -0,0 +1 @@ +"""Contains endpoint functions for accessing the API""" diff --git a/src/graphn/_generated/api/connections/authorize_connection.py b/src/graphn/_generated/api/connections/authorize_connection.py new file mode 100644 index 0000000..8641d50 --- /dev/null +++ b/src/graphn/_generated/api/connections/authorize_connection.py @@ -0,0 +1,218 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.connection_authorization_challenge import ( + ConnectionAuthorizationChallenge, +) +from ...models.connection_authorization_start import ConnectionAuthorizationStart +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + connection_id: str, + *, + body: ConnectionAuthorizationStart, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/{workspace_id}/connections/{connection_id}/authorize".format( + workspace_id=quote(str(workspace_id), safe=""), + connection_id=quote(str(connection_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ConnectionAuthorizationChallenge | Error | None: + if response.status_code == 200: + response_200 = ConnectionAuthorizationChallenge.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = Error.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 503: + response_503 = Error.from_dict(response.json()) + + return response_503 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ConnectionAuthorizationChallenge | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, + body: ConnectionAuthorizationStart, +) -> Response[ConnectionAuthorizationChallenge | Error]: + """Start or restart provider authorization + + Args: + workspace_id (str): + connection_id (str): + body (ConnectionAuthorizationStart): + + 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[ConnectionAuthorizationChallenge | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + connection_id=connection_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, + body: ConnectionAuthorizationStart, +) -> ConnectionAuthorizationChallenge | Error | None: + """Start or restart provider authorization + + Args: + workspace_id (str): + connection_id (str): + body (ConnectionAuthorizationStart): + + 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: + ConnectionAuthorizationChallenge | Error + """ + + return sync_detailed( + workspace_id=workspace_id, + connection_id=connection_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, + body: ConnectionAuthorizationStart, +) -> Response[ConnectionAuthorizationChallenge | Error]: + """Start or restart provider authorization + + Args: + workspace_id (str): + connection_id (str): + body (ConnectionAuthorizationStart): + + 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[ConnectionAuthorizationChallenge | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + connection_id=connection_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, + body: ConnectionAuthorizationStart, +) -> ConnectionAuthorizationChallenge | Error | None: + """Start or restart provider authorization + + Args: + workspace_id (str): + connection_id (str): + body (ConnectionAuthorizationStart): + + 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: + ConnectionAuthorizationChallenge | Error + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + connection_id=connection_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/connections/call_managed_connection_tool.py b/src/graphn/_generated/api/connections/call_managed_connection_tool.py new file mode 100644 index 0000000..212c96d --- /dev/null +++ b/src/graphn/_generated/api/connections/call_managed_connection_tool.py @@ -0,0 +1,238 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.managed_connection_tool_call import ManagedConnectionToolCall +from ...models.managed_connection_tool_result import ManagedConnectionToolResult +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + connection_id: str, + tool_name: str, + *, + body: ManagedConnectionToolCall, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/internal/workspaces/{workspace_id}/connections/{connection_id}/tools/{tool_name}/call".format( + workspace_id=quote(str(workspace_id), safe=""), + connection_id=quote(str(connection_id), safe=""), + tool_name=quote(str(tool_name), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | ManagedConnectionToolResult | None: + if response.status_code == 200: + response_200 = ManagedConnectionToolResult.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = Error.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = Error.from_dict(response.json()) + + return response_409 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | ManagedConnectionToolResult]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + connection_id: str, + tool_name: str, + *, + client: AuthenticatedClient, + body: ManagedConnectionToolCall, +) -> Response[Error | ManagedConnectionToolResult]: + """Invoke a GraphN-managed MCP tool + + Internal service-to-service endpoint used by Agent Foundry. + + Args: + workspace_id (str): + connection_id (str): + tool_name (str): + body (ManagedConnectionToolCall): + + 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[Error | ManagedConnectionToolResult] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + connection_id=connection_id, + tool_name=tool_name, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + connection_id: str, + tool_name: str, + *, + client: AuthenticatedClient, + body: ManagedConnectionToolCall, +) -> Error | ManagedConnectionToolResult | None: + """Invoke a GraphN-managed MCP tool + + Internal service-to-service endpoint used by Agent Foundry. + + Args: + workspace_id (str): + connection_id (str): + tool_name (str): + body (ManagedConnectionToolCall): + + 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: + Error | ManagedConnectionToolResult + """ + + return sync_detailed( + workspace_id=workspace_id, + connection_id=connection_id, + tool_name=tool_name, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + connection_id: str, + tool_name: str, + *, + client: AuthenticatedClient, + body: ManagedConnectionToolCall, +) -> Response[Error | ManagedConnectionToolResult]: + """Invoke a GraphN-managed MCP tool + + Internal service-to-service endpoint used by Agent Foundry. + + Args: + workspace_id (str): + connection_id (str): + tool_name (str): + body (ManagedConnectionToolCall): + + 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[Error | ManagedConnectionToolResult] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + connection_id=connection_id, + tool_name=tool_name, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + connection_id: str, + tool_name: str, + *, + client: AuthenticatedClient, + body: ManagedConnectionToolCall, +) -> Error | ManagedConnectionToolResult | None: + """Invoke a GraphN-managed MCP tool + + Internal service-to-service endpoint used by Agent Foundry. + + Args: + workspace_id (str): + connection_id (str): + tool_name (str): + body (ManagedConnectionToolCall): + + 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: + Error | ManagedConnectionToolResult + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + connection_id=connection_id, + tool_name=tool_name, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/connections/complete_connection_authorization.py b/src/graphn/_generated/api/connections/complete_connection_authorization.py new file mode 100644 index 0000000..0e666b5 --- /dev/null +++ b/src/graphn/_generated/api/connections/complete_connection_authorization.py @@ -0,0 +1,237 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + provider_id: str, + *, + state: str, + code: str | Unset = UNSET, + error: str | Unset = UNSET, + error_description: str | Unset = UNSET, +) -> dict[str, Any]: + + params: dict[str, Any] = {} + + params["state"] = state + + params["code"] = code + + params["error"] = error + + params["error_description"] = error_description + + 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": "/v1/oauth/connections/{provider_id}/callback".format( + provider_id=quote(str(provider_id), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | Error | None: + if response.status_code == 303: + response_303 = cast(Any, None) + return response_303 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + provider_id: str, + *, + client: AuthenticatedClient | Client, + state: str, + code: str | Unset = UNSET, + error: str | Unset = UNSET, + error_description: str | Unset = UNSET, +) -> Response[Any | Error]: + """Complete a provider OAuth authorization + + Public OAuth callback. Tenant identity, PKCE data, and the final redirect + are recovered exclusively from one-time encrypted state. + + Args: + provider_id (str): + state (str): + code (str | Unset): + error (str | Unset): + error_description (str | Unset): + + 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 | Error] + """ + + kwargs = _get_kwargs( + provider_id=provider_id, + state=state, + code=code, + error=error, + error_description=error_description, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + provider_id: str, + *, + client: AuthenticatedClient | Client, + state: str, + code: str | Unset = UNSET, + error: str | Unset = UNSET, + error_description: str | Unset = UNSET, +) -> Any | Error | None: + """Complete a provider OAuth authorization + + Public OAuth callback. Tenant identity, PKCE data, and the final redirect + are recovered exclusively from one-time encrypted state. + + Args: + provider_id (str): + state (str): + code (str | Unset): + error (str | Unset): + error_description (str | Unset): + + 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: + Any | Error + """ + + return sync_detailed( + provider_id=provider_id, + client=client, + state=state, + code=code, + error=error, + error_description=error_description, + ).parsed + + +async def asyncio_detailed( + provider_id: str, + *, + client: AuthenticatedClient | Client, + state: str, + code: str | Unset = UNSET, + error: str | Unset = UNSET, + error_description: str | Unset = UNSET, +) -> Response[Any | Error]: + """Complete a provider OAuth authorization + + Public OAuth callback. Tenant identity, PKCE data, and the final redirect + are recovered exclusively from one-time encrypted state. + + Args: + provider_id (str): + state (str): + code (str | Unset): + error (str | Unset): + error_description (str | Unset): + + 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 | Error] + """ + + kwargs = _get_kwargs( + provider_id=provider_id, + state=state, + code=code, + error=error, + error_description=error_description, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + provider_id: str, + *, + client: AuthenticatedClient | Client, + state: str, + code: str | Unset = UNSET, + error: str | Unset = UNSET, + error_description: str | Unset = UNSET, +) -> Any | Error | None: + """Complete a provider OAuth authorization + + Public OAuth callback. Tenant identity, PKCE data, and the final redirect + are recovered exclusively from one-time encrypted state. + + Args: + provider_id (str): + state (str): + code (str | Unset): + error (str | Unset): + error_description (str | Unset): + + 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: + Any | Error + """ + + return ( + await asyncio_detailed( + provider_id=provider_id, + client=client, + state=state, + code=code, + error=error, + error_description=error_description, + ) + ).parsed diff --git a/src/graphn/_generated/api/connections/create_connection.py b/src/graphn/_generated/api/connections/create_connection.py new file mode 100644 index 0000000..69a250b --- /dev/null +++ b/src/graphn/_generated/api/connections/create_connection.py @@ -0,0 +1,197 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.connection import Connection +from ...models.connection_create import ConnectionCreate +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + *, + body: ConnectionCreate, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/{workspace_id}/connections".format( + workspace_id=quote(str(workspace_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Connection | Error | None: + if response.status_code == 201: + response_201 = Connection.from_dict(response.json()) + + return response_201 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = Error.from_dict(response.json()) + + return response_403 + + if response.status_code == 409: + response_409 = Error.from_dict(response.json()) + + return response_409 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Connection | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: ConnectionCreate, +) -> Response[Connection | Error]: + """Create a pending workspace connection + + Args: + workspace_id (str): + body (ConnectionCreate): + + 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[Connection | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: ConnectionCreate, +) -> Connection | Error | None: + """Create a pending workspace connection + + Args: + workspace_id (str): + body (ConnectionCreate): + + 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: + Connection | Error + """ + + return sync_detailed( + workspace_id=workspace_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: ConnectionCreate, +) -> Response[Connection | Error]: + """Create a pending workspace connection + + Args: + workspace_id (str): + body (ConnectionCreate): + + 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[Connection | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: ConnectionCreate, +) -> Connection | Error | None: + """Create a pending workspace connection + + Args: + workspace_id (str): + body (ConnectionCreate): + + 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: + Connection | Error + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/connections/disconnect_connection.py b/src/graphn/_generated/api/connections/disconnect_connection.py new file mode 100644 index 0000000..d028d75 --- /dev/null +++ b/src/graphn/_generated/api/connections/disconnect_connection.py @@ -0,0 +1,195 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + connection_id: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "delete", + "url": "/v1/{workspace_id}/connections/{connection_id}".format( + workspace_id=quote(str(workspace_id), safe=""), + connection_id=quote(str(connection_id), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | Error | None: + if response.status_code == 204: + response_204 = cast(Any, None) + return response_204 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = Error.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Any | Error]: + """Revoke and disconnect a connection + + Clears the stored credential while retaining the opaque connection ID + so dependent resources can be reconnected without rebinding. + + Args: + workspace_id (str): + connection_id (str): + + 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 | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + connection_id=connection_id, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, +) -> Any | Error | None: + """Revoke and disconnect a connection + + Clears the stored credential while retaining the opaque connection ID + so dependent resources can be reconnected without rebinding. + + Args: + workspace_id (str): + connection_id (str): + + 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: + Any | Error + """ + + return sync_detailed( + workspace_id=workspace_id, + connection_id=connection_id, + client=client, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Any | Error]: + """Revoke and disconnect a connection + + Clears the stored credential while retaining the opaque connection ID + so dependent resources can be reconnected without rebinding. + + Args: + workspace_id (str): + connection_id (str): + + 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 | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + connection_id=connection_id, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, +) -> Any | Error | None: + """Revoke and disconnect a connection + + Clears the stored credential while retaining the opaque connection ID + so dependent resources can be reconnected without rebinding. + + Args: + workspace_id (str): + connection_id (str): + + 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: + Any | Error + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + connection_id=connection_id, + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/connections/get_connection.py b/src/graphn/_generated/api/connections/get_connection.py new file mode 100644 index 0000000..9002c56 --- /dev/null +++ b/src/graphn/_generated/api/connections/get_connection.py @@ -0,0 +1,185 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.connection import Connection +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + connection_id: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/v1/{workspace_id}/connections/{connection_id}".format( + workspace_id=quote(str(workspace_id), safe=""), + connection_id=quote(str(connection_id), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Connection | Error | None: + if response.status_code == 200: + response_200 = Connection.from_dict(response.json()) + + return response_200 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = Error.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Connection | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Connection | Error]: + """Get connection metadata + + Args: + workspace_id (str): + connection_id (str): + + 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[Connection | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + connection_id=connection_id, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, +) -> Connection | Error | None: + """Get connection metadata + + Args: + workspace_id (str): + connection_id (str): + + 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: + Connection | Error + """ + + return sync_detailed( + workspace_id=workspace_id, + connection_id=connection_id, + client=client, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Connection | Error]: + """Get connection metadata + + Args: + workspace_id (str): + connection_id (str): + + 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[Connection | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + connection_id=connection_id, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + connection_id: str, + *, + client: AuthenticatedClient | Client, +) -> Connection | Error | None: + """Get connection metadata + + Args: + workspace_id (str): + connection_id (str): + + 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: + Connection | Error + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + connection_id=connection_id, + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/connections/list_connections.py b/src/graphn/_generated/api/connections/list_connections.py new file mode 100644 index 0000000..3ab5b53 --- /dev/null +++ b/src/graphn/_generated/api/connections/list_connections.py @@ -0,0 +1,202 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.connection_list import ConnectionList +from ...models.error import Error +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + workspace_id: str, + *, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> dict[str, Any]: + + params: dict[str, Any] = {} + + params["limit"] = limit + + params["continue_token"] = continue_token + + 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": "/v1/{workspace_id}/connections".format( + workspace_id=quote(str(workspace_id), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> ConnectionList | Error | None: + if response.status_code == 200: + response_200 = ConnectionList.from_dict(response.json()) + + return response_200 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = Error.from_dict(response.json()) + + return response_403 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[ConnectionList | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> Response[ConnectionList | Error]: + """List workspace connections + + Args: + workspace_id (str): + limit (int | Unset): Default: 50. + continue_token (str | Unset): + + 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[ConnectionList | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + limit=limit, + continue_token=continue_token, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> ConnectionList | Error | None: + """List workspace connections + + Args: + workspace_id (str): + limit (int | Unset): Default: 50. + continue_token (str | Unset): + + 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: + ConnectionList | Error + """ + + return sync_detailed( + workspace_id=workspace_id, + client=client, + limit=limit, + continue_token=continue_token, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> Response[ConnectionList | Error]: + """List workspace connections + + Args: + workspace_id (str): + limit (int | Unset): Default: 50. + continue_token (str | Unset): + + 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[ConnectionList | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + limit=limit, + continue_token=continue_token, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> ConnectionList | Error | None: + """List workspace connections + + Args: + workspace_id (str): + limit (int | Unset): Default: 50. + continue_token (str | Unset): + + 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: + ConnectionList | Error + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + client=client, + limit=limit, + continue_token=continue_token, + ) + ).parsed diff --git a/src/graphn/_generated/api/connections/list_integrations.py b/src/graphn/_generated/api/connections/list_integrations.py new file mode 100644 index 0000000..41024b2 --- /dev/null +++ b/src/graphn/_generated/api/connections/list_integrations.py @@ -0,0 +1,134 @@ +from http import HTTPStatus +from typing import Any + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.integration_list import IntegrationList +from ...types import Response + + +def _get_kwargs() -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/v1/integrations", + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | IntegrationList | None: + if response.status_code == 200: + response_200 = IntegrationList.from_dict(response.json()) + + return response_200 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | IntegrationList]: + 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 | Client, +) -> Response[Error | IntegrationList]: + """List GraphN-managed integration definitions + + 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[Error | IntegrationList] + """ + + kwargs = _get_kwargs() + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + *, + client: AuthenticatedClient | Client, +) -> Error | IntegrationList | None: + """List GraphN-managed integration definitions + + 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: + Error | IntegrationList + """ + + return sync_detailed( + client=client, + ).parsed + + +async def asyncio_detailed( + *, + client: AuthenticatedClient | Client, +) -> Response[Error | IntegrationList]: + """List GraphN-managed integration definitions + + 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[Error | IntegrationList] + """ + + kwargs = _get_kwargs() + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + *, + client: AuthenticatedClient | Client, +) -> Error | IntegrationList | None: + """List GraphN-managed integration definitions + + 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: + Error | IntegrationList + """ + + return ( + await asyncio_detailed( + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/connections/receive_gmail_pub_sub_event.py b/src/graphn/_generated/api/connections/receive_gmail_pub_sub_event.py new file mode 100644 index 0000000..96dbba3 --- /dev/null +++ b/src/graphn/_generated/api/connections/receive_gmail_pub_sub_event.py @@ -0,0 +1,191 @@ +from http import HTTPStatus +from typing import Any, cast + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.google_pub_sub_envelope import GooglePubSubEnvelope +from ...types import Response + + +def _get_kwargs( + *, + body: GooglePubSubEnvelope, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/connections/events/gmail", + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | Error | None: + if response.status_code == 204: + response_204 = cast(Any, None) + return response_204 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 500: + response_500 = Error.from_dict(response.json()) + + return response_500 + + if response.status_code == 503: + response_503 = Error.from_dict(response.json()) + + return response_503 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | Error]: + 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: GooglePubSubEnvelope, +) -> Response[Any | Error]: + """Receive a Google Pub/Sub push for Gmail watches + + Provider callback authenticated with the configured Google Pub/Sub + push-service-account OIDC token and exact audience. + + Args: + body (GooglePubSubEnvelope): + + 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 | Error] + """ + + kwargs = _get_kwargs( + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + *, + client: AuthenticatedClient, + body: GooglePubSubEnvelope, +) -> Any | Error | None: + """Receive a Google Pub/Sub push for Gmail watches + + Provider callback authenticated with the configured Google Pub/Sub + push-service-account OIDC token and exact audience. + + Args: + body (GooglePubSubEnvelope): + + 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: + Any | Error + """ + + return sync_detailed( + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + *, + client: AuthenticatedClient, + body: GooglePubSubEnvelope, +) -> Response[Any | Error]: + """Receive a Google Pub/Sub push for Gmail watches + + Provider callback authenticated with the configured Google Pub/Sub + push-service-account OIDC token and exact audience. + + Args: + body (GooglePubSubEnvelope): + + 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 | Error] + """ + + 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: GooglePubSubEnvelope, +) -> Any | Error | None: + """Receive a Google Pub/Sub push for Gmail watches + + Provider callback authenticated with the configured Google Pub/Sub + push-service-account OIDC token and exact audience. + + Args: + body (GooglePubSubEnvelope): + + 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: + Any | Error + """ + + return ( + await asyncio_detailed( + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/custom_models/create_custom_model.py b/src/graphn/_generated/api/custom_models/create_custom_model.py index 62cdbf3..80b6822 100644 --- a/src/graphn/_generated/api/custom_models/create_custom_model.py +++ b/src/graphn/_generated/api/custom_models/create_custom_model.py @@ -85,10 +85,10 @@ def sync_detailed( client: AuthenticatedClient | Client, body: CustomModelCreate, ) -> Response[CustomModel | Error]: - r"""Register a new custom model + """Register a new custom model Begin import + deployment of a custom model. The response returns - immediately with `status: \"deploying\"`. Poll `getCustomModel` + immediately with `status: "deploying"`. Poll `getCustomModel` (or use the SDK's `wait_until_ready`) until the status reaches `ready` or `failed`. @@ -122,10 +122,10 @@ def sync( client: AuthenticatedClient | Client, body: CustomModelCreate, ) -> CustomModel | Error | None: - r"""Register a new custom model + """Register a new custom model Begin import + deployment of a custom model. The response returns - immediately with `status: \"deploying\"`. Poll `getCustomModel` + immediately with `status: "deploying"`. Poll `getCustomModel` (or use the SDK's `wait_until_ready`) until the status reaches `ready` or `failed`. @@ -154,10 +154,10 @@ async def asyncio_detailed( client: AuthenticatedClient | Client, body: CustomModelCreate, ) -> Response[CustomModel | Error]: - r"""Register a new custom model + """Register a new custom model Begin import + deployment of a custom model. The response returns - immediately with `status: \"deploying\"`. Poll `getCustomModel` + immediately with `status: "deploying"`. Poll `getCustomModel` (or use the SDK's `wait_until_ready`) until the status reaches `ready` or `failed`. @@ -189,10 +189,10 @@ async def asyncio( client: AuthenticatedClient | Client, body: CustomModelCreate, ) -> CustomModel | Error | None: - r"""Register a new custom model + """Register a new custom model Begin import + deployment of a custom model. The response returns - immediately with `status: \"deploying\"`. Poll `getCustomModel` + immediately with `status: "deploying"`. Poll `getCustomModel` (or use the SDK's `wait_until_ready`) until the status reaches `ready` or `failed`. diff --git a/src/graphn/_generated/api/custom_models/delete_custom_model.py b/src/graphn/_generated/api/custom_models/delete_custom_model.py index df934d0..3dac8c7 100644 --- a/src/graphn/_generated/api/custom_models/delete_custom_model.py +++ b/src/graphn/_generated/api/custom_models/delete_custom_model.py @@ -48,6 +48,11 @@ def _parse_response( return response_404 + if response.status_code == 409: + response_409 = Error.from_dict(response.json()) + + return response_409 + if client.raise_on_unexpected_status: raise errors.UnexpectedStatus(response.status_code, response.content) else: diff --git a/src/graphn/_generated/api/custom_models/wake_custom_model.py b/src/graphn/_generated/api/custom_models/wake_custom_model.py index e16da94..d7f353b 100644 --- a/src/graphn/_generated/api/custom_models/wake_custom_model.py +++ b/src/graphn/_generated/api/custom_models/wake_custom_model.py @@ -78,12 +78,12 @@ def sync_detailed( *, client: AuthenticatedClient | Client, ) -> Response[CustomModel | Error]: - r"""Wake a scaled-to-zero custom model + """Wake a scaled-to-zero custom model Custom models scale to zero replicas after `cooldown_seconds` of inactivity. Calling `wake` brings the deployment back up to its configured `min_replicas` (or 1 if `min_replicas` is 0). Returns - immediately; poll `getCustomModel` until `status: \"ready\"` and a + immediately; poll `getCustomModel` until `status: "ready"` and a non-empty `endpoint`. Args: @@ -116,12 +116,12 @@ def sync( *, client: AuthenticatedClient | Client, ) -> CustomModel | Error | None: - r"""Wake a scaled-to-zero custom model + """Wake a scaled-to-zero custom model Custom models scale to zero replicas after `cooldown_seconds` of inactivity. Calling `wake` brings the deployment back up to its configured `min_replicas` (or 1 if `min_replicas` is 0). Returns - immediately; poll `getCustomModel` until `status: \"ready\"` and a + immediately; poll `getCustomModel` until `status: "ready"` and a non-empty `endpoint`. Args: @@ -149,12 +149,12 @@ async def asyncio_detailed( *, client: AuthenticatedClient | Client, ) -> Response[CustomModel | Error]: - r"""Wake a scaled-to-zero custom model + """Wake a scaled-to-zero custom model Custom models scale to zero replicas after `cooldown_seconds` of inactivity. Calling `wake` brings the deployment back up to its configured `min_replicas` (or 1 if `min_replicas` is 0). Returns - immediately; poll `getCustomModel` until `status: \"ready\"` and a + immediately; poll `getCustomModel` until `status: "ready"` and a non-empty `endpoint`. Args: @@ -185,12 +185,12 @@ async def asyncio( *, client: AuthenticatedClient | Client, ) -> CustomModel | Error | None: - r"""Wake a scaled-to-zero custom model + """Wake a scaled-to-zero custom model Custom models scale to zero replicas after `cooldown_seconds` of inactivity. Calling `wake` brings the deployment back up to its configured `min_replicas` (or 1 if `min_replicas` is 0). Returns - immediately; poll `getCustomModel` until `status: \"ready\"` and a + immediately; poll `getCustomModel` until `status: "ready"` and a non-empty `endpoint`. Args: diff --git a/src/graphn/_generated/api/inference_routers/__init__.py b/src/graphn/_generated/api/inference_routers/__init__.py new file mode 100644 index 0000000..2d7c0b2 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/__init__.py @@ -0,0 +1 @@ +"""Contains endpoint functions for accessing the API""" diff --git a/src/graphn/_generated/api/inference_routers/create_inference_router.py b/src/graphn/_generated/api/inference_routers/create_inference_router.py new file mode 100644 index 0000000..a275214 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/create_inference_router.py @@ -0,0 +1,197 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router import InferenceRouter +from ...models.inference_router_create import InferenceRouterCreate +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + *, + body: InferenceRouterCreate, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/{workspace_id}/inference-routers".format( + workspace_id=quote(str(workspace_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouter | None: + if response.status_code == 201: + response_201 = InferenceRouter.from_dict(response.json()) + + return response_201 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = Error.from_dict(response.json()) + + return response_403 + + if response.status_code == 409: + response_409 = Error.from_dict(response.json()) + + return response_409 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouter]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterCreate, +) -> Response[Error | InferenceRouter]: + """Create an inference router draft + + Args: + workspace_id (str): + body (InferenceRouterCreate): + + 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[Error | InferenceRouter] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterCreate, +) -> Error | InferenceRouter | None: + """Create an inference router draft + + Args: + workspace_id (str): + body (InferenceRouterCreate): + + 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: + Error | InferenceRouter + """ + + return sync_detailed( + workspace_id=workspace_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterCreate, +) -> Response[Error | InferenceRouter]: + """Create an inference router draft + + Args: + workspace_id (str): + body (InferenceRouterCreate): + + 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[Error | InferenceRouter] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterCreate, +) -> Error | InferenceRouter | None: + """Create an inference router draft + + Args: + workspace_id (str): + body (InferenceRouterCreate): + + 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: + Error | InferenceRouter + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/create_inference_router_lane.py b/src/graphn/_generated/api/inference_routers/create_inference_router_lane.py new file mode 100644 index 0000000..612af58 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/create_inference_router_lane.py @@ -0,0 +1,203 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router_lane import InferenceRouterLane +from ...models.inference_router_lane_create import InferenceRouterLaneCreate +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + *, + body: InferenceRouterLaneCreate, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/{workspace_id}/inference-router-lanes".format( + workspace_id=quote(str(workspace_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouterLane | None: + if response.status_code == 201: + response_201 = InferenceRouterLane.from_dict(response.json()) + + return response_201 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouterLane]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterLaneCreate, +) -> Response[Error | InferenceRouterLane]: + """Create a workspace custom router lane + + A custom lane is a list of literal phrases, matched case-insensitively on word boundaries. + Candidates in this workspace's routers reference it as `custom:`. Lanes are visible only inside + their own workspace. + + Args: + workspace_id (str): + body (InferenceRouterLaneCreate): + + 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[Error | InferenceRouterLane] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterLaneCreate, +) -> Error | InferenceRouterLane | None: + """Create a workspace custom router lane + + A custom lane is a list of literal phrases, matched case-insensitively on word boundaries. + Candidates in this workspace's routers reference it as `custom:`. Lanes are visible only inside + their own workspace. + + Args: + workspace_id (str): + body (InferenceRouterLaneCreate): + + 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: + Error | InferenceRouterLane + """ + + return sync_detailed( + workspace_id=workspace_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterLaneCreate, +) -> Response[Error | InferenceRouterLane]: + """Create a workspace custom router lane + + A custom lane is a list of literal phrases, matched case-insensitively on word boundaries. + Candidates in this workspace's routers reference it as `custom:`. Lanes are visible only inside + their own workspace. + + Args: + workspace_id (str): + body (InferenceRouterLaneCreate): + + 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[Error | InferenceRouterLane] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterLaneCreate, +) -> Error | InferenceRouterLane | None: + """Create a workspace custom router lane + + A custom lane is a list of literal phrases, matched case-insensitively on word boundaries. + Candidates in this workspace's routers reference it as `custom:`. Lanes are visible only inside + their own workspace. + + Args: + workspace_id (str): + body (InferenceRouterLaneCreate): + + 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: + Error | InferenceRouterLane + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/delete_inference_router.py b/src/graphn/_generated/api/inference_routers/delete_inference_router.py new file mode 100644 index 0000000..c91a787 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/delete_inference_router.py @@ -0,0 +1,173 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + router_id: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "delete", + "url": "/v1/{workspace_id}/inference-routers/{router_id}".format( + workspace_id=quote(str(workspace_id), safe=""), + router_id=quote(str(router_id), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | Error | None: + if response.status_code == 204: + response_204 = cast(Any, None) + return response_204 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Any | Error]: + """Delete a workspace inference router + + Args: + workspace_id (str): + router_id (str): + + 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 | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Any | Error | None: + """Delete a workspace inference router + + Args: + workspace_id (str): + router_id (str): + + 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: + Any | Error + """ + + return sync_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Any | Error]: + """Delete a workspace inference router + + Args: + workspace_id (str): + router_id (str): + + 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 | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Any | Error | None: + """Delete a workspace inference router + + Args: + workspace_id (str): + router_id (str): + + 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: + Any | Error + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/delete_inference_router_lane.py b/src/graphn/_generated/api/inference_routers/delete_inference_router_lane.py new file mode 100644 index 0000000..814d5c9 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/delete_inference_router_lane.py @@ -0,0 +1,190 @@ +from http import HTTPStatus +from typing import Any, cast +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + lane_id: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "delete", + "url": "/v1/{workspace_id}/inference-router-lanes/{lane_id}".format( + workspace_id=quote(str(workspace_id), safe=""), + lane_id=quote(str(lane_id), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Any | Error | None: + if response.status_code == 204: + response_204 = cast(Any, None) + return response_204 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = Error.from_dict(response.json()) + + return response_409 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Any | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Any | Error]: + """Delete a workspace custom router lane + + Refused with 409 while any router's draft, pending, active, or still-draining previous revision + references the lane (see `used_by`), including a router save that commits during the delete. + + Args: + workspace_id (str): + lane_id (str): + + 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 | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + lane_id=lane_id, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, +) -> Any | Error | None: + """Delete a workspace custom router lane + + Refused with 409 while any router's draft, pending, active, or still-draining previous revision + references the lane (see `used_by`), including a router save that commits during the delete. + + Args: + workspace_id (str): + lane_id (str): + + 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: + Any | Error + """ + + return sync_detailed( + workspace_id=workspace_id, + lane_id=lane_id, + client=client, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Any | Error]: + """Delete a workspace custom router lane + + Refused with 409 while any router's draft, pending, active, or still-draining previous revision + references the lane (see `used_by`), including a router save that commits during the delete. + + Args: + workspace_id (str): + lane_id (str): + + 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 | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + lane_id=lane_id, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, +) -> Any | Error | None: + """Delete a workspace custom router lane + + Refused with 409 while any router's draft, pending, active, or still-draining previous revision + references the lane (see `used_by`), including a router save that commits during the delete. + + Args: + workspace_id (str): + lane_id (str): + + 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: + Any | Error + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + lane_id=lane_id, + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/get_inference_router.py b/src/graphn/_generated/api/inference_routers/get_inference_router.py new file mode 100644 index 0000000..e0b5db7 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/get_inference_router.py @@ -0,0 +1,175 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router import InferenceRouter +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + router_id: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/v1/{workspace_id}/inference-routers/{router_id}".format( + workspace_id=quote(str(workspace_id), safe=""), + router_id=quote(str(router_id), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouter | None: + if response.status_code == 200: + response_200 = InferenceRouter.from_dict(response.json()) + + return response_200 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouter]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Error | InferenceRouter]: + """Get an inference router + + Args: + workspace_id (str): + router_id (str): + + 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[Error | InferenceRouter] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Error | InferenceRouter | None: + """Get an inference router + + Args: + workspace_id (str): + router_id (str): + + 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: + Error | InferenceRouter + """ + + return sync_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Error | InferenceRouter]: + """Get an inference router + + Args: + workspace_id (str): + router_id (str): + + 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[Error | InferenceRouter] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Error | InferenceRouter | None: + """Get an inference router + + Args: + workspace_id (str): + router_id (str): + + 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: + Error | InferenceRouter + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/get_inference_router_analytics.py b/src/graphn/_generated/api/inference_routers/get_inference_router_analytics.py new file mode 100644 index 0000000..ced1604 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/get_inference_router_analytics.py @@ -0,0 +1,258 @@ +import datetime +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.get_inference_router_analytics_interval import ( + GetInferenceRouterAnalyticsInterval, +) +from ...models.inference_router_analytics import InferenceRouterAnalytics +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + workspace_id: str, + router_id: str, + *, + start_time: datetime.datetime, + end_time: datetime.datetime, + interval: GetInferenceRouterAnalyticsInterval + | Unset = GetInferenceRouterAnalyticsInterval.DAY, +) -> dict[str, Any]: + + params: dict[str, Any] = {} + + json_start_time = start_time.isoformat() + params["start_time"] = json_start_time + + json_end_time = end_time.isoformat() + params["end_time"] = json_end_time + + json_interval: str | Unset = UNSET + if not isinstance(interval, Unset): + json_interval = interval.value + + params["interval"] = json_interval + + 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": "/v1/{workspace_id}/inference-routers/{router_id}/analytics".format( + workspace_id=quote(str(workspace_id), safe=""), + router_id=quote(str(router_id), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouterAnalytics | None: + if response.status_code == 200: + response_200 = InferenceRouterAnalytics.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouterAnalytics]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + start_time: datetime.datetime, + end_time: datetime.datetime, + interval: GetInferenceRouterAnalyticsInterval + | Unset = GetInferenceRouterAnalyticsInterval.DAY, +) -> Response[Error | InferenceRouterAnalytics]: + """Get router usage analytics + + Available only when inference-router analytics is enabled for the deployment. + + Args: + workspace_id (str): + router_id (str): + start_time (datetime.datetime): + end_time (datetime.datetime): + interval (GetInferenceRouterAnalyticsInterval | Unset): Default: + GetInferenceRouterAnalyticsInterval.DAY. + + 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[Error | InferenceRouterAnalytics] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + start_time=start_time, + end_time=end_time, + interval=interval, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + start_time: datetime.datetime, + end_time: datetime.datetime, + interval: GetInferenceRouterAnalyticsInterval + | Unset = GetInferenceRouterAnalyticsInterval.DAY, +) -> Error | InferenceRouterAnalytics | None: + """Get router usage analytics + + Available only when inference-router analytics is enabled for the deployment. + + Args: + workspace_id (str): + router_id (str): + start_time (datetime.datetime): + end_time (datetime.datetime): + interval (GetInferenceRouterAnalyticsInterval | Unset): Default: + GetInferenceRouterAnalyticsInterval.DAY. + + 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: + Error | InferenceRouterAnalytics + """ + + return sync_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + start_time=start_time, + end_time=end_time, + interval=interval, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + start_time: datetime.datetime, + end_time: datetime.datetime, + interval: GetInferenceRouterAnalyticsInterval + | Unset = GetInferenceRouterAnalyticsInterval.DAY, +) -> Response[Error | InferenceRouterAnalytics]: + """Get router usage analytics + + Available only when inference-router analytics is enabled for the deployment. + + Args: + workspace_id (str): + router_id (str): + start_time (datetime.datetime): + end_time (datetime.datetime): + interval (GetInferenceRouterAnalyticsInterval | Unset): Default: + GetInferenceRouterAnalyticsInterval.DAY. + + 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[Error | InferenceRouterAnalytics] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + start_time=start_time, + end_time=end_time, + interval=interval, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + start_time: datetime.datetime, + end_time: datetime.datetime, + interval: GetInferenceRouterAnalyticsInterval + | Unset = GetInferenceRouterAnalyticsInterval.DAY, +) -> Error | InferenceRouterAnalytics | None: + """Get router usage analytics + + Available only when inference-router analytics is enabled for the deployment. + + Args: + workspace_id (str): + router_id (str): + start_time (datetime.datetime): + end_time (datetime.datetime): + interval (GetInferenceRouterAnalyticsInterval | Unset): Default: + GetInferenceRouterAnalyticsInterval.DAY. + + 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: + Error | InferenceRouterAnalytics + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + start_time=start_time, + end_time=end_time, + interval=interval, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/get_inference_router_lane.py b/src/graphn/_generated/api/inference_routers/get_inference_router_lane.py new file mode 100644 index 0000000..1c18ca0 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/get_inference_router_lane.py @@ -0,0 +1,175 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router_lane import InferenceRouterLane +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + lane_id: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/v1/{workspace_id}/inference-router-lanes/{lane_id}".format( + workspace_id=quote(str(workspace_id), safe=""), + lane_id=quote(str(lane_id), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouterLane | None: + if response.status_code == 200: + response_200 = InferenceRouterLane.from_dict(response.json()) + + return response_200 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouterLane]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Error | InferenceRouterLane]: + """Get a workspace custom router lane + + Args: + workspace_id (str): + lane_id (str): + + 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[Error | InferenceRouterLane] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + lane_id=lane_id, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, +) -> Error | InferenceRouterLane | None: + """Get a workspace custom router lane + + Args: + workspace_id (str): + lane_id (str): + + 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: + Error | InferenceRouterLane + """ + + return sync_detailed( + workspace_id=workspace_id, + lane_id=lane_id, + client=client, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Error | InferenceRouterLane]: + """Get a workspace custom router lane + + Args: + workspace_id (str): + lane_id (str): + + 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[Error | InferenceRouterLane] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + lane_id=lane_id, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, +) -> Error | InferenceRouterLane | None: + """Get a workspace custom router lane + + Args: + workspace_id (str): + lane_id (str): + + 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: + Error | InferenceRouterLane + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + lane_id=lane_id, + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/list_inference_router_lanes.py b/src/graphn/_generated/api/inference_routers/list_inference_router_lanes.py new file mode 100644 index 0000000..84439ee --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/list_inference_router_lanes.py @@ -0,0 +1,161 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router_lane_list import InferenceRouterLaneList +from ...types import Response + + +def _get_kwargs( + workspace_id: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "get", + "url": "/v1/{workspace_id}/inference-router-lanes".format( + workspace_id=quote(str(workspace_id), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouterLaneList | None: + if response.status_code == 200: + response_200 = InferenceRouterLaneList.from_dict(response.json()) + + return response_200 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouterLaneList]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Error | InferenceRouterLaneList]: + """List workspace custom router lanes + + Args: + workspace_id (str): + + 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[Error | InferenceRouterLaneList] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + *, + client: AuthenticatedClient | Client, +) -> Error | InferenceRouterLaneList | None: + """List workspace custom router lanes + + Args: + workspace_id (str): + + 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: + Error | InferenceRouterLaneList + """ + + return sync_detailed( + workspace_id=workspace_id, + client=client, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Error | InferenceRouterLaneList]: + """List workspace custom router lanes + + Args: + workspace_id (str): + + 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[Error | InferenceRouterLaneList] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + *, + client: AuthenticatedClient | Client, +) -> Error | InferenceRouterLaneList | None: + """List workspace custom router lanes + + Args: + workspace_id (str): + + 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: + Error | InferenceRouterLaneList + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/list_inference_routers.py b/src/graphn/_generated/api/inference_routers/list_inference_routers.py new file mode 100644 index 0000000..3f61112 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/list_inference_routers.py @@ -0,0 +1,202 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router_list import InferenceRouterList +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + workspace_id: str, + *, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> dict[str, Any]: + + params: dict[str, Any] = {} + + params["limit"] = limit + + params["continue_token"] = continue_token + + 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": "/v1/{workspace_id}/inference-routers".format( + workspace_id=quote(str(workspace_id), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouterList | None: + if response.status_code == 200: + response_200 = InferenceRouterList.from_dict(response.json()) + + return response_200 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = Error.from_dict(response.json()) + + return response_403 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouterList]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> Response[Error | InferenceRouterList]: + """List workspace and platform inference routers + + Args: + workspace_id (str): + limit (int | Unset): Default: 50. + continue_token (str | Unset): + + 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[Error | InferenceRouterList] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + limit=limit, + continue_token=continue_token, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> Error | InferenceRouterList | None: + """List workspace and platform inference routers + + Args: + workspace_id (str): + limit (int | Unset): Default: 50. + continue_token (str | Unset): + + 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: + Error | InferenceRouterList + """ + + return sync_detailed( + workspace_id=workspace_id, + client=client, + limit=limit, + continue_token=continue_token, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> Response[Error | InferenceRouterList]: + """List workspace and platform inference routers + + Args: + workspace_id (str): + limit (int | Unset): Default: 50. + continue_token (str | Unset): + + 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[Error | InferenceRouterList] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + limit=limit, + continue_token=continue_token, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + *, + client: AuthenticatedClient | Client, + limit: int | Unset = 50, + continue_token: str | Unset = UNSET, +) -> Error | InferenceRouterList | None: + """List workspace and platform inference routers + + Args: + workspace_id (str): + limit (int | Unset): Default: 50. + continue_token (str | Unset): + + 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: + Error | InferenceRouterList + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + client=client, + limit=limit, + continue_token=continue_token, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/publish_inference_router.py b/src/graphn/_generated/api/inference_routers/publish_inference_router.py new file mode 100644 index 0000000..8cd5db0 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/publish_inference_router.py @@ -0,0 +1,214 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router import InferenceRouter +from ...models.publish_inference_router_body import PublishInferenceRouterBody +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + router_id: str, + *, + body: PublishInferenceRouterBody, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/{workspace_id}/inference-routers/{router_id}/publish".format( + workspace_id=quote(str(workspace_id), safe=""), + router_id=quote(str(router_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouter | None: + if response.status_code == 202: + response_202 = InferenceRouter.from_dict(response.json()) + + return response_202 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = Error.from_dict(response.json()) + + return response_409 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouter]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + body: PublishInferenceRouterBody, +) -> Response[Error | InferenceRouter]: + """Submit a draft revision for controller activation + + The existing active revision remains routable until acknowledgement. + + Args: + workspace_id (str): + router_id (str): + body (PublishInferenceRouterBody): + + 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[Error | InferenceRouter] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + body: PublishInferenceRouterBody, +) -> Error | InferenceRouter | None: + """Submit a draft revision for controller activation + + The existing active revision remains routable until acknowledgement. + + Args: + workspace_id (str): + router_id (str): + body (PublishInferenceRouterBody): + + 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: + Error | InferenceRouter + """ + + return sync_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + body: PublishInferenceRouterBody, +) -> Response[Error | InferenceRouter]: + """Submit a draft revision for controller activation + + The existing active revision remains routable until acknowledgement. + + Args: + workspace_id (str): + router_id (str): + body (PublishInferenceRouterBody): + + 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[Error | InferenceRouter] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + body: PublishInferenceRouterBody, +) -> Error | InferenceRouter | None: + """Submit a draft revision for controller activation + + The existing active revision remains routable until acknowledgement. + + Args: + workspace_id (str): + router_id (str): + body (PublishInferenceRouterBody): + + 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: + Error | InferenceRouter + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/update_inference_router.py b/src/graphn/_generated/api/inference_routers/update_inference_router.py new file mode 100644 index 0000000..73c6b6b --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/update_inference_router.py @@ -0,0 +1,206 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router import InferenceRouter +from ...models.inference_router_update import InferenceRouterUpdate +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + router_id: str, + *, + body: InferenceRouterUpdate, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "patch", + "url": "/v1/{workspace_id}/inference-routers/{router_id}".format( + workspace_id=quote(str(workspace_id), safe=""), + router_id=quote(str(router_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouter | None: + if response.status_code == 200: + response_200 = InferenceRouter.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = Error.from_dict(response.json()) + + return response_409 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouter]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterUpdate, +) -> Response[Error | InferenceRouter]: + """Create a new immutable draft revision + + Args: + workspace_id (str): + router_id (str): + body (InferenceRouterUpdate): + + 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[Error | InferenceRouter] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterUpdate, +) -> Error | InferenceRouter | None: + """Create a new immutable draft revision + + Args: + workspace_id (str): + router_id (str): + body (InferenceRouterUpdate): + + 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: + Error | InferenceRouter + """ + + return sync_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterUpdate, +) -> Response[Error | InferenceRouter]: + """Create a new immutable draft revision + + Args: + workspace_id (str): + router_id (str): + body (InferenceRouterUpdate): + + 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[Error | InferenceRouter] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterUpdate, +) -> Error | InferenceRouter | None: + """Create a new immutable draft revision + + Args: + workspace_id (str): + router_id (str): + body (InferenceRouterUpdate): + + 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: + Error | InferenceRouter + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/update_inference_router_lane.py b/src/graphn/_generated/api/inference_routers/update_inference_router_lane.py new file mode 100644 index 0000000..54a3084 --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/update_inference_router_lane.py @@ -0,0 +1,218 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router_lane import InferenceRouterLane +from ...models.inference_router_lane_update import InferenceRouterLaneUpdate +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + lane_id: str, + *, + body: InferenceRouterLaneUpdate, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": "patch", + "url": "/v1/{workspace_id}/inference-router-lanes/{lane_id}".format( + workspace_id=quote(str(workspace_id), safe=""), + lane_id=quote(str(lane_id), safe=""), + ), + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + _kwargs["headers"] = headers + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouterLane | None: + if response.status_code == 200: + response_200 = InferenceRouterLane.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if response.status_code == 409: + response_409 = Error.from_dict(response.json()) + + return response_409 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouterLane]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterLaneUpdate, +) -> Response[Error | InferenceRouterLane]: + """Update a workspace custom router lane + + Published router revisions keep the lane definition they were saved with; republish a router to + apply the change to it. + + Args: + workspace_id (str): + lane_id (str): + body (InferenceRouterLaneUpdate): + + 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[Error | InferenceRouterLane] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + lane_id=lane_id, + body=body, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterLaneUpdate, +) -> Error | InferenceRouterLane | None: + """Update a workspace custom router lane + + Published router revisions keep the lane definition they were saved with; republish a router to + apply the change to it. + + Args: + workspace_id (str): + lane_id (str): + body (InferenceRouterLaneUpdate): + + 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: + Error | InferenceRouterLane + """ + + return sync_detailed( + workspace_id=workspace_id, + lane_id=lane_id, + client=client, + body=body, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterLaneUpdate, +) -> Response[Error | InferenceRouterLane]: + """Update a workspace custom router lane + + Published router revisions keep the lane definition they were saved with; republish a router to + apply the change to it. + + Args: + workspace_id (str): + lane_id (str): + body (InferenceRouterLaneUpdate): + + 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[Error | InferenceRouterLane] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + lane_id=lane_id, + body=body, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + lane_id: str, + *, + client: AuthenticatedClient | Client, + body: InferenceRouterLaneUpdate, +) -> Error | InferenceRouterLane | None: + """Update a workspace custom router lane + + Published router revisions keep the lane definition they were saved with; republish a router to + apply the change to it. + + Args: + workspace_id (str): + lane_id (str): + body (InferenceRouterLaneUpdate): + + 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: + Error | InferenceRouterLane + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + lane_id=lane_id, + client=client, + body=body, + ) + ).parsed diff --git a/src/graphn/_generated/api/inference_routers/validate_inference_router.py b/src/graphn/_generated/api/inference_routers/validate_inference_router.py new file mode 100644 index 0000000..248af7c --- /dev/null +++ b/src/graphn/_generated/api/inference_routers/validate_inference_router.py @@ -0,0 +1,180 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.error import Error +from ...models.inference_router_validation import InferenceRouterValidation +from ...types import Response + + +def _get_kwargs( + workspace_id: str, + router_id: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "post", + "url": "/v1/{workspace_id}/inference-routers/{router_id}/validate".format( + workspace_id=quote(str(workspace_id), safe=""), + router_id=quote(str(router_id), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Error | InferenceRouterValidation | None: + if response.status_code == 200: + response_200 = InferenceRouterValidation.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[Error | InferenceRouterValidation]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Error | InferenceRouterValidation]: + """Validate the current draft and derive its target manifest + + Args: + workspace_id (str): + router_id (str): + + 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[Error | InferenceRouterValidation] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Error | InferenceRouterValidation | None: + """Validate the current draft and derive its target manifest + + Args: + workspace_id (str): + router_id (str): + + 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: + Error | InferenceRouterValidation + """ + + return sync_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Response[Error | InferenceRouterValidation]: + """Validate the current draft and derive its target manifest + + Args: + workspace_id (str): + router_id (str): + + 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[Error | InferenceRouterValidation] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + router_id=router_id, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + router_id: str, + *, + client: AuthenticatedClient | Client, +) -> Error | InferenceRouterValidation | None: + """Validate the current draft and derive its target manifest + + Args: + workspace_id (str): + router_id (str): + + 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: + Error | InferenceRouterValidation + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + router_id=router_id, + client=client, + ) + ).parsed diff --git a/src/graphn/_generated/api/knowledgebases/get_knowledgebase_document_media.py b/src/graphn/_generated/api/knowledgebases/get_knowledgebase_document_media.py new file mode 100644 index 0000000..0539707 --- /dev/null +++ b/src/graphn/_generated/api/knowledgebases/get_knowledgebase_document_media.py @@ -0,0 +1,225 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.document_media import DocumentMedia +from ...models.error import Error +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + workspace_id: str, + kb_id: str, + doc_id: str, + *, + index: int | Unset = 0, +) -> dict[str, Any]: + + params: dict[str, Any] = {} + + params["index"] = index + + 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": "/v1/{workspace_id}/knowledgebases/{kb_id}/documents/{doc_id}/media".format( + workspace_id=quote(str(workspace_id), safe=""), + kb_id=quote(str(kb_id), safe=""), + doc_id=quote(str(doc_id), safe=""), + ), + "params": params, + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> DocumentMedia | Error | None: + if response.status_code == 200: + response_200 = DocumentMedia.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = Error.from_dict(response.json()) + + return response_400 + + if response.status_code == 401: + response_401 = Error.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = Error.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = Error.from_dict(response.json()) + + return response_404 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[DocumentMedia | Error]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + workspace_id: str, + kb_id: str, + doc_id: str, + *, + client: AuthenticatedClient | Client, + index: int | Unset = 0, +) -> Response[DocumentMedia | Error]: + """Mint a fresh playable URL for document media + + Args: + workspace_id (str): + kb_id (str): + doc_id (str): + index (int | Unset): Default: 0. + + 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[DocumentMedia | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + kb_id=kb_id, + doc_id=doc_id, + index=index, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + workspace_id: str, + kb_id: str, + doc_id: str, + *, + client: AuthenticatedClient | Client, + index: int | Unset = 0, +) -> DocumentMedia | Error | None: + """Mint a fresh playable URL for document media + + Args: + workspace_id (str): + kb_id (str): + doc_id (str): + index (int | Unset): Default: 0. + + 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: + DocumentMedia | Error + """ + + return sync_detailed( + workspace_id=workspace_id, + kb_id=kb_id, + doc_id=doc_id, + client=client, + index=index, + ).parsed + + +async def asyncio_detailed( + workspace_id: str, + kb_id: str, + doc_id: str, + *, + client: AuthenticatedClient | Client, + index: int | Unset = 0, +) -> Response[DocumentMedia | Error]: + """Mint a fresh playable URL for document media + + Args: + workspace_id (str): + kb_id (str): + doc_id (str): + index (int | Unset): Default: 0. + + 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[DocumentMedia | Error] + """ + + kwargs = _get_kwargs( + workspace_id=workspace_id, + kb_id=kb_id, + doc_id=doc_id, + index=index, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + workspace_id: str, + kb_id: str, + doc_id: str, + *, + client: AuthenticatedClient | Client, + index: int | Unset = 0, +) -> DocumentMedia | Error | None: + """Mint a fresh playable URL for document media + + Args: + workspace_id (str): + kb_id (str): + doc_id (str): + index (int | Unset): Default: 0. + + 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: + DocumentMedia | Error + """ + + return ( + await asyncio_detailed( + workspace_id=workspace_id, + kb_id=kb_id, + doc_id=doc_id, + client=client, + index=index, + ) + ).parsed diff --git a/src/graphn/_generated/api/knowledgebases/list_knowledgebases.py b/src/graphn/_generated/api/knowledgebases/list_knowledgebases.py index 810d5f3..c142c6c 100644 --- a/src/graphn/_generated/api/knowledgebases/list_knowledgebases.py +++ b/src/graphn/_generated/api/knowledgebases/list_knowledgebases.py @@ -8,6 +8,10 @@ from ...client import AuthenticatedClient, Client from ...models.error import Error from ...models.knowledge_base import KnowledgeBase +from ...models.knowledge_base_list_response import KnowledgeBaseListResponse +from ...models.list_knowledgebases_order import ListKnowledgebasesOrder +from ...models.list_knowledgebases_sort import ListKnowledgebasesSort +from ...models.list_knowledgebases_status import ListKnowledgebasesStatus from ...types import UNSET, Response, Unset @@ -16,6 +20,10 @@ def _get_kwargs( *, limit: int | Unset = 50, cursor: str | Unset = UNSET, + q: str | Unset = UNSET, + status: ListKnowledgebasesStatus | Unset = UNSET, + sort: ListKnowledgebasesSort | Unset = ListKnowledgebasesSort.CREATED_AT, + order: ListKnowledgebasesOrder | Unset = ListKnowledgebasesOrder.DESC, ) -> dict[str, Any]: params: dict[str, Any] = {} @@ -24,6 +32,26 @@ def _get_kwargs( params["cursor"] = cursor + params["q"] = q + + json_status: str | Unset = UNSET + if not isinstance(status, Unset): + json_status = status.value + + params["status"] = json_status + + json_sort: str | Unset = UNSET + if not isinstance(sort, Unset): + json_sort = sort.value + + params["sort"] = json_sort + + json_order: str | Unset = UNSET + if not isinstance(order, Unset): + json_order = order.value + + params["order"] = json_order + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} _kwargs: dict[str, Any] = { @@ -39,14 +67,34 @@ def _get_kwargs( def _parse_response( *, client: AuthenticatedClient | Client, response: httpx.Response -) -> Error | list[KnowledgeBase] | None: +) -> Error | KnowledgeBaseListResponse | list[KnowledgeBase] | None: if response.status_code == 200: - response_200 = [] - _response_200 = response.json() - for response_200_item_data in _response_200: - response_200_item = KnowledgeBase.from_dict(response_200_item_data) - response_200.append(response_200_item) + def _parse_response_200( + data: object, + ) -> KnowledgeBaseListResponse | list[KnowledgeBase]: + try: + if not isinstance(data, list): + raise TypeError() + response_200_type_0 = [] + _response_200_type_0 = data + for response_200_type_0_item_data in _response_200_type_0: + response_200_type_0_item = KnowledgeBase.from_dict( + response_200_type_0_item_data + ) + + response_200_type_0.append(response_200_type_0_item) + + return response_200_type_0 + except (TypeError, ValueError, AttributeError, KeyError): + pass + if not isinstance(data, dict): + raise TypeError() + response_200_type_1 = KnowledgeBaseListResponse.from_dict(data) + + return response_200_type_1 + + response_200 = _parse_response_200(response.json()) return response_200 @@ -73,7 +121,7 @@ def _parse_response( def _build_response( *, client: AuthenticatedClient | Client, response: httpx.Response -) -> Response[Error | list[KnowledgeBase]]: +) -> Response[Error | KnowledgeBaseListResponse | list[KnowledgeBase]]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -88,29 +136,41 @@ def sync_detailed( client: AuthenticatedClient | Client, limit: int | Unset = 50, cursor: str | Unset = UNSET, -) -> Response[Error | list[KnowledgeBase]]: + q: str | Unset = UNSET, + status: ListKnowledgebasesStatus | Unset = UNSET, + sort: ListKnowledgebasesSort | Unset = ListKnowledgebasesSort.CREATED_AT, + order: ListKnowledgebasesOrder | Unset = ListKnowledgebasesOrder.DESC, +) -> Response[Error | KnowledgeBaseListResponse | list[KnowledgeBase]]: """List knowledge bases - Default response is a JSON array. When `cursor` is supplied the service may return a paginated - envelope instead. + Default response is a JSON array. When `cursor` or any filter/sort control + is supplied, the service returns a paginated envelope. Args: workspace_id (str): limit (int | Unset): Default: 50. cursor (str | Unset): + q (str | Unset): + status (ListKnowledgebasesStatus | Unset): + sort (ListKnowledgebasesSort | Unset): Default: ListKnowledgebasesSort.CREATED_AT. + order (ListKnowledgebasesOrder | Unset): Default: ListKnowledgebasesOrder.DESC. 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[Error | list[KnowledgeBase]] + Response[Error | KnowledgeBaseListResponse | list[KnowledgeBase]] """ kwargs = _get_kwargs( workspace_id=workspace_id, limit=limit, cursor=cursor, + q=q, + status=status, + sort=sort, + order=order, ) response = client.get_httpx_client().request( @@ -126,23 +186,31 @@ def sync( client: AuthenticatedClient | Client, limit: int | Unset = 50, cursor: str | Unset = UNSET, -) -> Error | list[KnowledgeBase] | None: + q: str | Unset = UNSET, + status: ListKnowledgebasesStatus | Unset = UNSET, + sort: ListKnowledgebasesSort | Unset = ListKnowledgebasesSort.CREATED_AT, + order: ListKnowledgebasesOrder | Unset = ListKnowledgebasesOrder.DESC, +) -> Error | KnowledgeBaseListResponse | list[KnowledgeBase] | None: """List knowledge bases - Default response is a JSON array. When `cursor` is supplied the service may return a paginated - envelope instead. + Default response is a JSON array. When `cursor` or any filter/sort control + is supplied, the service returns a paginated envelope. Args: workspace_id (str): limit (int | Unset): Default: 50. cursor (str | Unset): + q (str | Unset): + status (ListKnowledgebasesStatus | Unset): + sort (ListKnowledgebasesSort | Unset): Default: ListKnowledgebasesSort.CREATED_AT. + order (ListKnowledgebasesOrder | Unset): Default: ListKnowledgebasesOrder.DESC. 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: - Error | list[KnowledgeBase] + Error | KnowledgeBaseListResponse | list[KnowledgeBase] """ return sync_detailed( @@ -150,6 +218,10 @@ def sync( client=client, limit=limit, cursor=cursor, + q=q, + status=status, + sort=sort, + order=order, ).parsed @@ -159,29 +231,41 @@ async def asyncio_detailed( client: AuthenticatedClient | Client, limit: int | Unset = 50, cursor: str | Unset = UNSET, -) -> Response[Error | list[KnowledgeBase]]: + q: str | Unset = UNSET, + status: ListKnowledgebasesStatus | Unset = UNSET, + sort: ListKnowledgebasesSort | Unset = ListKnowledgebasesSort.CREATED_AT, + order: ListKnowledgebasesOrder | Unset = ListKnowledgebasesOrder.DESC, +) -> Response[Error | KnowledgeBaseListResponse | list[KnowledgeBase]]: """List knowledge bases - Default response is a JSON array. When `cursor` is supplied the service may return a paginated - envelope instead. + Default response is a JSON array. When `cursor` or any filter/sort control + is supplied, the service returns a paginated envelope. Args: workspace_id (str): limit (int | Unset): Default: 50. cursor (str | Unset): + q (str | Unset): + status (ListKnowledgebasesStatus | Unset): + sort (ListKnowledgebasesSort | Unset): Default: ListKnowledgebasesSort.CREATED_AT. + order (ListKnowledgebasesOrder | Unset): Default: ListKnowledgebasesOrder.DESC. 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[Error | list[KnowledgeBase]] + Response[Error | KnowledgeBaseListResponse | list[KnowledgeBase]] """ kwargs = _get_kwargs( workspace_id=workspace_id, limit=limit, cursor=cursor, + q=q, + status=status, + sort=sort, + order=order, ) response = await client.get_async_httpx_client().request(**kwargs) @@ -195,23 +279,31 @@ async def asyncio( client: AuthenticatedClient | Client, limit: int | Unset = 50, cursor: str | Unset = UNSET, -) -> Error | list[KnowledgeBase] | None: + q: str | Unset = UNSET, + status: ListKnowledgebasesStatus | Unset = UNSET, + sort: ListKnowledgebasesSort | Unset = ListKnowledgebasesSort.CREATED_AT, + order: ListKnowledgebasesOrder | Unset = ListKnowledgebasesOrder.DESC, +) -> Error | KnowledgeBaseListResponse | list[KnowledgeBase] | None: """List knowledge bases - Default response is a JSON array. When `cursor` is supplied the service may return a paginated - envelope instead. + Default response is a JSON array. When `cursor` or any filter/sort control + is supplied, the service returns a paginated envelope. Args: workspace_id (str): limit (int | Unset): Default: 50. cursor (str | Unset): + q (str | Unset): + status (ListKnowledgebasesStatus | Unset): + sort (ListKnowledgebasesSort | Unset): Default: ListKnowledgebasesSort.CREATED_AT. + order (ListKnowledgebasesOrder | Unset): Default: ListKnowledgebasesOrder.DESC. 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: - Error | list[KnowledgeBase] + Error | KnowledgeBaseListResponse | list[KnowledgeBase] """ return ( @@ -220,5 +312,9 @@ async def asyncio( client=client, limit=limit, cursor=cursor, + q=q, + status=status, + sort=sort, + order=order, ) ).parsed diff --git a/src/graphn/_generated/api/objects/post_object.py b/src/graphn/_generated/api/objects/post_object.py index fcdd9e9..d156891 100644 --- a/src/graphn/_generated/api/objects/post_object.py +++ b/src/graphn/_generated/api/objects/post_object.py @@ -125,12 +125,12 @@ def sync_detailed( upload_id: str | Unset = UNSET, part_number: int | Unset = UNSET, ) -> Response[Error | StoragePostResult]: - r"""MPU init/complete or mint a presigned URL + """MPU init/complete or mint a presigned URL Query-string dispatch: - `?uploads` — initiate multipart upload. - - `?uploadId=` — complete MPU. Body `{ \"parts\":[{\"part_number\":N,\"etag\":\"...\"}] }`. + - `?uploadId=` — complete MPU. Body `{ "parts":[{"part_number":N,"etag":"..."}] }`. - `?type=download&expires=SEC` — presigned GET. - `?type=upload&expires=&max-size=&content-type=` — presigned PUT. - `?type=upload_part&upload_id=&part_number=` — presigned MPU part. @@ -192,12 +192,12 @@ def sync( upload_id: str | Unset = UNSET, part_number: int | Unset = UNSET, ) -> Error | StoragePostResult | None: - r"""MPU init/complete or mint a presigned URL + """MPU init/complete or mint a presigned URL Query-string dispatch: - `?uploads` — initiate multipart upload. - - `?uploadId=` — complete MPU. Body `{ \"parts\":[{\"part_number\":N,\"etag\":\"...\"}] }`. + - `?uploadId=` — complete MPU. Body `{ "parts":[{"part_number":N,"etag":"..."}] }`. - `?type=download&expires=SEC` — presigned GET. - `?type=upload&expires=&max-size=&content-type=` — presigned PUT. - `?type=upload_part&upload_id=&part_number=` — presigned MPU part. @@ -254,12 +254,12 @@ async def asyncio_detailed( upload_id: str | Unset = UNSET, part_number: int | Unset = UNSET, ) -> Response[Error | StoragePostResult]: - r"""MPU init/complete or mint a presigned URL + """MPU init/complete or mint a presigned URL Query-string dispatch: - `?uploads` — initiate multipart upload. - - `?uploadId=` — complete MPU. Body `{ \"parts\":[{\"part_number\":N,\"etag\":\"...\"}] }`. + - `?uploadId=` — complete MPU. Body `{ "parts":[{"part_number":N,"etag":"..."}] }`. - `?type=download&expires=SEC` — presigned GET. - `?type=upload&expires=&max-size=&content-type=` — presigned PUT. - `?type=upload_part&upload_id=&part_number=` — presigned MPU part. @@ -319,12 +319,12 @@ async def asyncio( upload_id: str | Unset = UNSET, part_number: int | Unset = UNSET, ) -> Error | StoragePostResult | None: - r"""MPU init/complete or mint a presigned URL + """MPU init/complete or mint a presigned URL Query-string dispatch: - `?uploads` — initiate multipart upload. - - `?uploadId=` — complete MPU. Body `{ \"parts\":[{\"part_number\":N,\"etag\":\"...\"}] }`. + - `?uploadId=` — complete MPU. Body `{ "parts":[{"part_number":N,"etag":"..."}] }`. - `?type=download&expires=SEC` — presigned GET. - `?type=upload&expires=&max-size=&content-type=` — presigned PUT. - `?type=upload_part&upload_id=&part_number=` — presigned MPU part. diff --git a/src/graphn/_generated/client.py b/src/graphn/_generated/client.py index a5f74f6..08206ec 100644 --- a/src/graphn/_generated/client.py +++ b/src/graphn/_generated/client.py @@ -1,5 +1,5 @@ import ssl -from typing import Any +from typing import Any, Self import httpx from attrs import define, evolve, field @@ -73,7 +73,7 @@ def with_timeout(self, timeout: httpx.Timeout) -> "Client": self._async_client.timeout = timeout return evolve(self, timeout=timeout) - def set_httpx_client(self, client: httpx.Client) -> "Client": + def set_httpx_client(self, client: httpx.Client) -> Self: """Manually set the underlying httpx.Client **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. @@ -95,7 +95,7 @@ def get_httpx_client(self) -> httpx.Client: ) return self._client - def __enter__(self) -> "Client": + def __enter__(self) -> Self: """Enter a context manager for self.client—you cannot enter twice (see httpx docs)""" self.get_httpx_client().__enter__() return self @@ -104,7 +104,7 @@ def __exit__(self, *args: object, **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": + def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> Self: """Manually set the underlying httpx.AsyncClient **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. @@ -126,7 +126,7 @@ def get_async_httpx_client(self) -> httpx.AsyncClient: ) return self._async_client - async def __aenter__(self) -> "Client": + async def __aenter__(self) -> Self: """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)""" await self.get_async_httpx_client().__aenter__() return self @@ -211,7 +211,7 @@ def with_timeout(self, timeout: httpx.Timeout) -> "AuthenticatedClient": self._async_client.timeout = timeout return evolve(self, timeout=timeout) - def set_httpx_client(self, client: httpx.Client) -> "AuthenticatedClient": + def set_httpx_client(self, client: httpx.Client) -> Self: """Manually set the underlying httpx.Client **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. @@ -236,7 +236,7 @@ def get_httpx_client(self) -> httpx.Client: ) return self._client - def __enter__(self) -> "AuthenticatedClient": + def __enter__(self) -> Self: """Enter a context manager for self.client—you cannot enter twice (see httpx docs)""" self.get_httpx_client().__enter__() return self @@ -245,9 +245,7 @@ def __exit__(self, *args: object, **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": + def set_async_httpx_client(self, async_client: httpx.AsyncClient) -> Self: """Manually set the underlying httpx.AsyncClient **NOTE**: This will override any other settings on the client, including cookies, headers, and timeout. @@ -272,7 +270,7 @@ def get_async_httpx_client(self) -> httpx.AsyncClient: ) return self._async_client - async def __aenter__(self) -> "AuthenticatedClient": + async def __aenter__(self) -> Self: """Enter a context manager for underlying httpx.AsyncClient—you cannot enter twice (see httpx docs)""" await self.get_async_httpx_client().__aenter__() return self diff --git a/src/graphn/_generated/models/__init__.py b/src/graphn/_generated/models/__init__.py index 891a795..b96a15b 100644 --- a/src/graphn/_generated/models/__init__.py +++ b/src/graphn/_generated/models/__init__.py @@ -3,6 +3,24 @@ from .admin_billing_grant_request import AdminBillingGrantRequest from .admin_billing_overrides import AdminBillingOverrides from .admin_billing_state import AdminBillingState +from .admin_invoice_create_request import AdminInvoiceCreateRequest +from .admin_invoice_create_response import AdminInvoiceCreateResponse +from .admin_invoice_discount import AdminInvoiceDiscount +from .admin_invoice_discount_request import AdminInvoiceDiscountRequest +from .admin_invoice_discount_request_type import AdminInvoiceDiscountRequestType +from .admin_invoice_discount_response import AdminInvoiceDiscountResponse +from .admin_invoice_preview_request import AdminInvoicePreviewRequest +from .admin_invoice_preview_response import AdminInvoicePreviewResponse +from .admin_invoice_quote import AdminInvoiceQuote +from .admin_invoice_quote_line_item import AdminInvoiceQuoteLineItem +from .admin_invoice_response import AdminInvoiceResponse +from .admin_invoice_revision import AdminInvoiceRevision +from .admin_invoice_revisions_response import AdminInvoiceRevisionsResponse +from .admin_invoice_statement_ref import AdminInvoiceStatementRef +from .admin_invoice_void_request import AdminInvoiceVoidRequest +from .admin_invoice_void_response import AdminInvoiceVoidResponse +from .admin_invoices_response import AdminInvoicesResponse +from .admin_invoices_response_empty_reason import AdminInvoicesResponseEmptyReason from .agent import Agent from .agent_create import AgentCreate from .agent_list import AgentList @@ -58,6 +76,7 @@ from .blueprint import Blueprint from .blueprint_agents_item import BlueprintAgentsItem from .blueprint_deploy_request import BlueprintDeployRequest +from .blueprint_deploy_resource_i_ds import BlueprintDeployResourceIDs from .blueprint_deploy_response import BlueprintDeployResponse from .blueprint_functions_item import BlueprintFunctionsItem from .blueprint_list import BlueprintList @@ -83,6 +102,16 @@ from .chat_message import ChatMessage from .chat_message_role import ChatMessageRole from .chat_message_tool_calls_item import ChatMessageToolCallsItem +from .connection import Connection +from .connection_account_metadata import ConnectionAccountMetadata +from .connection_authorization_challenge import ConnectionAuthorizationChallenge +from .connection_authorization_start import ConnectionAuthorizationStart +from .connection_create import ConnectionCreate +from .connection_create_kind import ConnectionCreateKind +from .connection_kind import ConnectionKind +from .connection_list import ConnectionList +from .connection_status import ConnectionStatus +from .connection_watch_status import ConnectionWatchStatus from .create_billing_setup_intent_response_200 import ( CreateBillingSetupIntentResponse200, ) @@ -98,6 +127,7 @@ from .discover_imported_models_request import DiscoverImportedModelsRequest from .discover_imported_models_response import DiscoverImportedModelsResponse from .discovered_imported_model import DiscoveredImportedModel +from .document_media import DocumentMedia from .embed_request import EmbedRequest from .embed_response import EmbedResponse from .embedding_model import EmbeddingModel @@ -109,6 +139,7 @@ from .function_create import FunctionCreate from .function_create_files import FunctionCreateFiles from .function_create_parameters_schema import FunctionCreateParametersSchema +from .function_create_type import FunctionCreateType from .function_dry_run_request import FunctionDryRunRequest from .function_dry_run_request_files import FunctionDryRunRequestFiles from .function_dry_run_request_input import FunctionDryRunRequestInput @@ -116,6 +147,7 @@ from .function_spec import FunctionSpec from .function_spec_files import FunctionSpecFiles from .function_spec_parameters_schema import FunctionSpecParametersSchema +from .function_spec_type import FunctionSpecType from .function_test_request import FunctionTestRequest from .function_test_request_input import FunctionTestRequestInput from .function_test_response import FunctionTestResponse @@ -124,6 +156,9 @@ from .function_update_parameters_schema import FunctionUpdateParametersSchema from .get_billing_invoice_response_200 import GetBillingInvoiceResponse200 from .get_billing_usage_filter import GetBillingUsageFilter +from .get_inference_router_analytics_interval import GetInferenceRouterAnalyticsInterval +from .google_pub_sub_envelope import GooglePubSubEnvelope +from .google_pub_sub_envelope_message import GooglePubSubEnvelopeMessage from .gpu_hours_response import GpuHoursResponse from .id_list_request import IdListRequest from .imported_model import ImportedModel @@ -132,6 +167,47 @@ from .imported_model_update import ImportedModelUpdate from .inference_error import InferenceError from .inference_error_error import InferenceErrorError +from .inference_router import InferenceRouter +from .inference_router_analytics import InferenceRouterAnalytics +from .inference_router_analytics_breakdown import InferenceRouterAnalyticsBreakdown +from .inference_router_analytics_interval import InferenceRouterAnalyticsInterval +from .inference_router_analytics_metrics import InferenceRouterAnalyticsMetrics +from .inference_router_analytics_point import InferenceRouterAnalyticsPoint +from .inference_router_analytics_shared_candidate_runtime_status import ( + InferenceRouterAnalyticsSharedCandidateRuntimeStatus, +) +from .inference_router_candidate import InferenceRouterCandidate +from .inference_router_config import InferenceRouterConfig +from .inference_router_config_fallback_policy import InferenceRouterConfigFallbackPolicy +from .inference_router_config_preset import InferenceRouterConfigPreset +from .inference_router_create import InferenceRouterCreate +from .inference_router_create_fallback_policy import InferenceRouterCreateFallbackPolicy +from .inference_router_create_preset import InferenceRouterCreatePreset +from .inference_router_lane import InferenceRouterLane +from .inference_router_lane_create import InferenceRouterLaneCreate +from .inference_router_lane_create_match import InferenceRouterLaneCreateMatch +from .inference_router_lane_list import InferenceRouterLaneList +from .inference_router_lane_match import InferenceRouterLaneMatch +from .inference_router_lane_update import InferenceRouterLaneUpdate +from .inference_router_lane_update_match import InferenceRouterLaneUpdateMatch +from .inference_router_list import InferenceRouterList +from .inference_router_revision import InferenceRouterRevision +from .inference_router_revision_shard_placements_item import ( + InferenceRouterRevisionShardPlacementsItem, +) +from .inference_router_revision_shard_placements_item_role import ( + InferenceRouterRevisionShardPlacementsItemRole, +) +from .inference_router_revision_shard_placements_item_state import ( + InferenceRouterRevisionShardPlacementsItemState, +) +from .inference_router_revision_status import InferenceRouterRevisionStatus +from .inference_router_scope import InferenceRouterScope +from .inference_router_status import InferenceRouterStatus +from .inference_router_update import InferenceRouterUpdate +from .inference_router_update_fallback_policy import InferenceRouterUpdateFallbackPolicy +from .inference_router_update_preset import InferenceRouterUpdatePreset +from .inference_router_validation import InferenceRouterValidation from .ingest_item import IngestItem from .ingest_item_input import IngestItemInput from .ingest_item_input_metadata import IngestItemInputMetadata @@ -139,6 +215,12 @@ from .ingest_job import IngestJob from .ingest_job_list import IngestJobList from .ingest_job_summary import IngestJobSummary +from .integration import Integration +from .integration_auth_mode import IntegrationAuthMode +from .integration_capability import IntegrationCapability +from .integration_event import IntegrationEvent +from .integration_kind import IntegrationKind +from .integration_list import IntegrationList from .invitation import Invitation from .invitation_accept_result import InvitationAcceptResult from .invitation_create import InvitationCreate @@ -154,6 +236,7 @@ from .kb_document_metadata import KbDocumentMetadata from .knowledge_base import KnowledgeBase from .knowledge_base_create import KnowledgeBaseCreate +from .knowledge_base_list_response import KnowledgeBaseListResponse from .knowledge_base_stats import KnowledgeBaseStats from .knowledge_base_update import KnowledgeBaseUpdate from .list_billing_invoices_response_200 import ListBillingInvoicesResponse200 @@ -163,7 +246,13 @@ from .list_billing_payment_methods_response_200 import ( ListBillingPaymentMethodsResponse200, ) +from .list_knowledgebases_order import ListKnowledgebasesOrder +from .list_knowledgebases_sort import ListKnowledgebasesSort +from .list_knowledgebases_status import ListKnowledgebasesStatus from .list_tts_voices_response_200 import ListTtsVoicesResponse200 +from .managed_connection_tool_call import ManagedConnectionToolCall +from .managed_connection_tool_call_arguments import ManagedConnectionToolCallArguments +from .managed_connection_tool_result import ManagedConnectionToolResult from .mcp_discover_tools_request import McpDiscoverToolsRequest from .mcp_discover_tools_request_files import McpDiscoverToolsRequestFiles from .mcp_discover_tools_response import McpDiscoverToolsResponse @@ -176,10 +265,13 @@ from .mcp_server_create import McpServerCreate from .mcp_server_create_files import McpServerCreateFiles from .mcp_server_create_secrets import McpServerCreateSecrets +from .mcp_server_create_type import McpServerCreateType from .mcp_server_list import McpServerList from .mcp_server_spec import McpServerSpec from .mcp_server_spec_files import McpServerSpecFiles from .mcp_server_spec_secrets import McpServerSpecSecrets +from .mcp_server_spec_tool_capabilities import McpServerSpecToolCapabilities +from .mcp_server_spec_type import McpServerSpecType from .mcp_server_status import McpServerStatus from .mcp_server_update import McpServerUpdate from .mcp_server_update_files import McpServerUpdateFiles @@ -208,7 +300,14 @@ from .payment_method import PaymentMethod from .post_object_type import PostObjectType from .presigned_url import PresignedURL +from .publish_inference_router_body import PublishInferenceRouterBody from .publish_message import PublishMessage +from .published_router_candidate import PublishedRouterCandidate +from .published_router_custom_lane import PublishedRouterCustomLane +from .published_router_custom_lane_match import PublishedRouterCustomLaneMatch +from .published_router_decision import PublishedRouterDecision +from .published_router_revision import PublishedRouterRevision +from .published_router_revision_state import PublishedRouterRevisionState from .resource_version_ref import ResourceVersionRef from .search_request import SearchRequest from .search_request_metadata_filter import SearchRequestMetadataFilter @@ -257,6 +356,7 @@ UploadKnowledgebaseDocumentFilesBody, ) from .upload_storage_file_body import UploadStorageFileBody +from .usage_day import UsageDay from .validate_model_request import ValidateModelRequest from .validate_model_request_quantization import ValidateModelRequestQuantization from .validate_model_request_weight_source import ValidateModelRequestWeightSource @@ -323,6 +423,24 @@ "AdminBillingGrantRequest", "AdminBillingOverrides", "AdminBillingState", + "AdminInvoiceCreateRequest", + "AdminInvoiceCreateResponse", + "AdminInvoiceDiscount", + "AdminInvoiceDiscountRequest", + "AdminInvoiceDiscountRequestType", + "AdminInvoiceDiscountResponse", + "AdminInvoicePreviewRequest", + "AdminInvoicePreviewResponse", + "AdminInvoiceQuote", + "AdminInvoiceQuoteLineItem", + "AdminInvoiceResponse", + "AdminInvoiceRevision", + "AdminInvoiceRevisionsResponse", + "AdminInvoiceStatementRef", + "AdminInvoiceVoidRequest", + "AdminInvoiceVoidResponse", + "AdminInvoicesResponse", + "AdminInvoicesResponseEmptyReason", "Agent", "AgentCreate", "AgentList", @@ -378,6 +496,7 @@ "Blueprint", "BlueprintAgentsItem", "BlueprintDeployRequest", + "BlueprintDeployResourceIDs", "BlueprintDeployResponse", "BlueprintFunctionsItem", "BlueprintList", @@ -401,6 +520,16 @@ "ChatMessage", "ChatMessageRole", "ChatMessageToolCallsItem", + "Connection", + "ConnectionAccountMetadata", + "ConnectionAuthorizationChallenge", + "ConnectionAuthorizationStart", + "ConnectionCreate", + "ConnectionCreateKind", + "ConnectionKind", + "ConnectionList", + "ConnectionStatus", + "ConnectionWatchStatus", "CreateBillingSetupIntentResponse200", "CustomModel", "CustomModelAccess", @@ -414,6 +543,7 @@ "DiscoverImportedModelsRequest", "DiscoverImportedModelsResponse", "DiscoveredImportedModel", + "DocumentMedia", "EmbedRequest", "EmbedResponse", "EmbeddingModel", @@ -425,6 +555,7 @@ "FunctionCreate", "FunctionCreateFiles", "FunctionCreateParametersSchema", + "FunctionCreateType", "FunctionDryRunRequest", "FunctionDryRunRequestFiles", "FunctionDryRunRequestInput", @@ -432,6 +563,7 @@ "FunctionSpec", "FunctionSpecFiles", "FunctionSpecParametersSchema", + "FunctionSpecType", "FunctionTestRequest", "FunctionTestRequestInput", "FunctionTestResponse", @@ -440,6 +572,9 @@ "FunctionUpdateParametersSchema", "GetBillingInvoiceResponse200", "GetBillingUsageFilter", + "GetInferenceRouterAnalyticsInterval", + "GooglePubSubEnvelope", + "GooglePubSubEnvelopeMessage", "GpuHoursResponse", "IdListRequest", "ImportedModel", @@ -448,6 +583,39 @@ "ImportedModelUpdate", "InferenceError", "InferenceErrorError", + "InferenceRouter", + "InferenceRouterAnalytics", + "InferenceRouterAnalyticsBreakdown", + "InferenceRouterAnalyticsInterval", + "InferenceRouterAnalyticsMetrics", + "InferenceRouterAnalyticsPoint", + "InferenceRouterAnalyticsSharedCandidateRuntimeStatus", + "InferenceRouterCandidate", + "InferenceRouterConfig", + "InferenceRouterConfigFallbackPolicy", + "InferenceRouterConfigPreset", + "InferenceRouterCreate", + "InferenceRouterCreateFallbackPolicy", + "InferenceRouterCreatePreset", + "InferenceRouterLane", + "InferenceRouterLaneCreate", + "InferenceRouterLaneCreateMatch", + "InferenceRouterLaneList", + "InferenceRouterLaneMatch", + "InferenceRouterLaneUpdate", + "InferenceRouterLaneUpdateMatch", + "InferenceRouterList", + "InferenceRouterRevision", + "InferenceRouterRevisionShardPlacementsItem", + "InferenceRouterRevisionShardPlacementsItemRole", + "InferenceRouterRevisionShardPlacementsItemState", + "InferenceRouterRevisionStatus", + "InferenceRouterScope", + "InferenceRouterStatus", + "InferenceRouterUpdate", + "InferenceRouterUpdateFallbackPolicy", + "InferenceRouterUpdatePreset", + "InferenceRouterValidation", "IngestItem", "IngestItemInput", "IngestItemInputMetadata", @@ -455,6 +623,12 @@ "IngestJob", "IngestJobList", "IngestJobSummary", + "Integration", + "IntegrationAuthMode", + "IntegrationCapability", + "IntegrationEvent", + "IntegrationKind", + "IntegrationList", "Invitation", "InvitationAcceptResult", "InvitationCreate", @@ -470,12 +644,19 @@ "KbDocumentMetadata", "KnowledgeBase", "KnowledgeBaseCreate", + "KnowledgeBaseListResponse", "KnowledgeBaseStats", "KnowledgeBaseUpdate", "ListBillingInvoicesResponse200", "ListBillingInvoicesResponse200EmptyReason", "ListBillingPaymentMethodsResponse200", + "ListKnowledgebasesOrder", + "ListKnowledgebasesSort", + "ListKnowledgebasesStatus", "ListTtsVoicesResponse200", + "ManagedConnectionToolCall", + "ManagedConnectionToolCallArguments", + "ManagedConnectionToolResult", "McpDiscoverToolsRequest", "McpDiscoverToolsRequestFiles", "McpDiscoverToolsResponse", @@ -488,10 +669,13 @@ "McpServerCreate", "McpServerCreateFiles", "McpServerCreateSecrets", + "McpServerCreateType", "McpServerList", "McpServerSpec", "McpServerSpecFiles", "McpServerSpecSecrets", + "McpServerSpecToolCapabilities", + "McpServerSpecType", "McpServerStatus", "McpServerUpdate", "McpServerUpdateFiles", @@ -520,7 +704,14 @@ "PaymentMethod", "PostObjectType", "PresignedURL", + "PublishInferenceRouterBody", "PublishMessage", + "PublishedRouterCandidate", + "PublishedRouterCustomLane", + "PublishedRouterCustomLaneMatch", + "PublishedRouterDecision", + "PublishedRouterRevision", + "PublishedRouterRevisionState", "ResourceVersionRef", "SearchRequest", "SearchRequestMetadataFilter", @@ -565,6 +756,7 @@ "UploadDocumentFromURLRequestMetadata", "UploadKnowledgebaseDocumentFilesBody", "UploadStorageFileBody", + "UsageDay", "ValidateModelRequest", "ValidateModelRequestQuantization", "ValidateModelRequestWeightSource", diff --git a/src/graphn/_generated/models/admin_billing_grant_request.py b/src/graphn/_generated/models/admin_billing_grant_request.py index 65a0019..90bcd82 100644 --- a/src/graphn/_generated/models/admin_billing_grant_request.py +++ b/src/graphn/_generated/models/admin_billing_grant_request.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/admin_billing_overrides.py b/src/graphn/_generated/models/admin_billing_overrides.py index db2cbf6..ffb59ee 100644 --- a/src/graphn/_generated/models/admin_billing_overrides.py +++ b/src/graphn/_generated/models/admin_billing_overrides.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset @@ -20,6 +19,7 @@ class AdminBillingOverrides: custom_models_disabled (bool | Unset): allow_negative_balance (bool | Unset): negative_limit_cents (int | Unset): + reserve_est_cents (int | None | Unset): has_purchased (bool | Unset): """ @@ -27,6 +27,7 @@ class AdminBillingOverrides: custom_models_disabled: bool | Unset = UNSET allow_negative_balance: bool | Unset = UNSET negative_limit_cents: int | Unset = UNSET + reserve_est_cents: int | None | Unset = UNSET has_purchased: bool | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -39,6 +40,12 @@ def to_dict(self) -> dict[str, Any]: negative_limit_cents = self.negative_limit_cents + reserve_est_cents: int | None | Unset + if isinstance(self.reserve_est_cents, Unset): + reserve_est_cents = UNSET + else: + reserve_est_cents = self.reserve_est_cents + has_purchased = self.has_purchased field_dict: dict[str, Any] = {} @@ -54,6 +61,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["allowNegativeBalance"] = allow_negative_balance if negative_limit_cents is not UNSET: field_dict["negativeLimitCents"] = negative_limit_cents + if reserve_est_cents is not UNSET: + field_dict["reserveEstCents"] = reserve_est_cents if has_purchased is not UNSET: field_dict["hasPurchased"] = has_purchased @@ -70,6 +79,15 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: negative_limit_cents = d.pop("negativeLimitCents", UNSET) + def _parse_reserve_est_cents(data: object) -> int | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(int | None | Unset, data) + + reserve_est_cents = _parse_reserve_est_cents(d.pop("reserveEstCents", UNSET)) + has_purchased = d.pop("hasPurchased", UNSET) admin_billing_overrides = cls( @@ -77,6 +95,7 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: custom_models_disabled=custom_models_disabled, allow_negative_balance=allow_negative_balance, negative_limit_cents=negative_limit_cents, + reserve_est_cents=reserve_est_cents, has_purchased=has_purchased, ) diff --git a/src/graphn/_generated/models/admin_billing_state.py b/src/graphn/_generated/models/admin_billing_state.py index 07342f8..d240514 100644 --- a/src/graphn/_generated/models/admin_billing_state.py +++ b/src/graphn/_generated/models/admin_billing_state.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset @@ -29,6 +28,8 @@ class AdminBillingState: custom_models_disabled (bool | Unset): allow_negative_balance (bool | Unset): negative_limit_cents (int | Unset): + reserve_est_cents (int | None | Unset): + reserve_est_cents_default (int | Unset): """ org_id: str @@ -44,6 +45,8 @@ class AdminBillingState: custom_models_disabled: bool | Unset = UNSET allow_negative_balance: bool | Unset = UNSET negative_limit_cents: int | Unset = UNSET + reserve_est_cents: int | None | Unset = UNSET + reserve_est_cents_default: int | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: @@ -73,6 +76,14 @@ def to_dict(self) -> dict[str, Any]: negative_limit_cents = self.negative_limit_cents + reserve_est_cents: int | None | Unset + if isinstance(self.reserve_est_cents, Unset): + reserve_est_cents = UNSET + else: + reserve_est_cents = self.reserve_est_cents + + reserve_est_cents_default = self.reserve_est_cents_default + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update( @@ -101,6 +112,10 @@ def to_dict(self) -> dict[str, Any]: field_dict["allowNegativeBalance"] = allow_negative_balance if negative_limit_cents is not UNSET: field_dict["negativeLimitCents"] = negative_limit_cents + if reserve_est_cents is not UNSET: + field_dict["reserveEstCents"] = reserve_est_cents + if reserve_est_cents_default is not UNSET: + field_dict["reserveEstCentsDefault"] = reserve_est_cents_default return field_dict @@ -133,6 +148,17 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: negative_limit_cents = d.pop("negativeLimitCents", UNSET) + def _parse_reserve_est_cents(data: object) -> int | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(int | None | Unset, data) + + reserve_est_cents = _parse_reserve_est_cents(d.pop("reserveEstCents", UNSET)) + + reserve_est_cents_default = d.pop("reserveEstCentsDefault", UNSET) + admin_billing_state = cls( org_id=org_id, billing_account_exists=billing_account_exists, @@ -147,6 +173,8 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: custom_models_disabled=custom_models_disabled, allow_negative_balance=allow_negative_balance, negative_limit_cents=negative_limit_cents, + reserve_est_cents=reserve_est_cents, + reserve_est_cents_default=reserve_est_cents_default, ) admin_billing_state.additional_properties = d diff --git a/src/graphn/_generated/models/admin_invoice_create_request.py b/src/graphn/_generated/models/admin_invoice_create_request.py new file mode 100644 index 0000000..8bf4dde --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_create_request.py @@ -0,0 +1,86 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="AdminInvoiceCreateRequest") + + +@_attrs_define +class AdminInvoiceCreateRequest: + """ + Attributes: + from_ (datetime.datetime): + to (datetime.datetime): + manifest_sha_256 (str): + comment (str): + """ + + from_: datetime.datetime + to: datetime.datetime + manifest_sha_256: str + comment: str + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + from_ = self.from_.isoformat() + + to = self.to.isoformat() + + manifest_sha_256 = self.manifest_sha_256 + + comment = self.comment + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "from": from_, + "to": to, + "manifestSha256": manifest_sha_256, + "comment": comment, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + from_ = datetime.datetime.fromisoformat(d.pop("from")) + + to = datetime.datetime.fromisoformat(d.pop("to")) + + manifest_sha_256 = d.pop("manifestSha256") + + comment = d.pop("comment") + + admin_invoice_create_request = cls( + from_=from_, + to=to, + manifest_sha_256=manifest_sha_256, + comment=comment, + ) + + admin_invoice_create_request.additional_properties = d + return admin_invoice_create_request + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_create_response.py b/src/graphn/_generated/models/admin_invoice_create_response.py new file mode 100644 index 0000000..57ec326 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_create_response.py @@ -0,0 +1,147 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.admin_invoice_quote import AdminInvoiceQuote + from ..models.admin_invoice_statement_ref import AdminInvoiceStatementRef + + +T = TypeVar("T", bound="AdminInvoiceCreateResponse") + + +@_attrs_define +class AdminInvoiceCreateResponse: + """ + Attributes: + period_start (datetime.datetime): + period_end (datetime.datetime): + statement_refs (list[AdminInvoiceStatementRef]): + manifest_sha_256 (str): + quote (AdminInvoiceQuote): + invoice_id (str): + invoice_status (str): + amount_due_cents (int): + hosted_invoice_url (str | Unset): + """ + + period_start: datetime.datetime + period_end: datetime.datetime + statement_refs: list[AdminInvoiceStatementRef] + manifest_sha_256: str + quote: AdminInvoiceQuote + invoice_id: str + invoice_status: str + amount_due_cents: int + hosted_invoice_url: str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + period_start = self.period_start.isoformat() + + period_end = self.period_end.isoformat() + + statement_refs = [] + for statement_refs_item_data in self.statement_refs: + statement_refs_item = statement_refs_item_data.to_dict() + statement_refs.append(statement_refs_item) + + manifest_sha_256 = self.manifest_sha_256 + + quote = self.quote.to_dict() + + invoice_id = self.invoice_id + + invoice_status = self.invoice_status + + amount_due_cents = self.amount_due_cents + + hosted_invoice_url = self.hosted_invoice_url + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "periodStart": period_start, + "periodEnd": period_end, + "statementRefs": statement_refs, + "manifestSha256": manifest_sha_256, + "quote": quote, + "invoiceId": invoice_id, + "invoiceStatus": invoice_status, + "amountDueCents": amount_due_cents, + } + ) + if hosted_invoice_url is not UNSET: + field_dict["hostedInvoiceUrl"] = hosted_invoice_url + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.admin_invoice_quote import AdminInvoiceQuote + from ..models.admin_invoice_statement_ref import AdminInvoiceStatementRef + + d = dict(src_dict) + period_start = datetime.datetime.fromisoformat(d.pop("periodStart")) + + period_end = datetime.datetime.fromisoformat(d.pop("periodEnd")) + + statement_refs = [] + _statement_refs = d.pop("statementRefs") + for statement_refs_item_data in _statement_refs: + statement_refs_item = AdminInvoiceStatementRef.from_dict( + statement_refs_item_data + ) + + statement_refs.append(statement_refs_item) + + manifest_sha_256 = d.pop("manifestSha256") + + quote = AdminInvoiceQuote.from_dict(d.pop("quote")) + + invoice_id = d.pop("invoiceId") + + invoice_status = d.pop("invoiceStatus") + + amount_due_cents = d.pop("amountDueCents") + + hosted_invoice_url = d.pop("hostedInvoiceUrl", UNSET) + + admin_invoice_create_response = cls( + period_start=period_start, + period_end=period_end, + statement_refs=statement_refs, + manifest_sha_256=manifest_sha_256, + quote=quote, + invoice_id=invoice_id, + invoice_status=invoice_status, + amount_due_cents=amount_due_cents, + hosted_invoice_url=hosted_invoice_url, + ) + + admin_invoice_create_response.additional_properties = d + return admin_invoice_create_response + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_discount.py b/src/graphn/_generated/models/admin_invoice_discount.py new file mode 100644 index 0000000..96c02fa --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_discount.py @@ -0,0 +1,162 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="AdminInvoiceDiscount") + + +@_attrs_define +class AdminInvoiceDiscount: + """ + Attributes: + type_ (str): + input_value (int): + discount_cents (int): + reason (str): + actor (str): + idempotency_key (str): + status (str): + original_amount_cents (int): + adjusted_amount_cents (int): + provider_source_id (str | Unset): + provider_result_id (str | Unset): + applied_at (datetime.datetime | Unset): + """ + + type_: str + input_value: int + discount_cents: int + reason: str + actor: str + idempotency_key: str + status: str + original_amount_cents: int + adjusted_amount_cents: int + provider_source_id: str | Unset = UNSET + provider_result_id: str | Unset = UNSET + applied_at: datetime.datetime | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + type_ = self.type_ + + input_value = self.input_value + + discount_cents = self.discount_cents + + reason = self.reason + + actor = self.actor + + idempotency_key = self.idempotency_key + + status = self.status + + original_amount_cents = self.original_amount_cents + + adjusted_amount_cents = self.adjusted_amount_cents + + provider_source_id = self.provider_source_id + + provider_result_id = self.provider_result_id + + applied_at: str | Unset = UNSET + if not isinstance(self.applied_at, Unset): + applied_at = self.applied_at.isoformat() + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "type": type_, + "inputValue": input_value, + "discountCents": discount_cents, + "reason": reason, + "actor": actor, + "idempotencyKey": idempotency_key, + "status": status, + "originalAmountCents": original_amount_cents, + "adjustedAmountCents": adjusted_amount_cents, + } + ) + if provider_source_id is not UNSET: + field_dict["providerSourceId"] = provider_source_id + if provider_result_id is not UNSET: + field_dict["providerResultId"] = provider_result_id + if applied_at is not UNSET: + field_dict["appliedAt"] = applied_at + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + type_ = d.pop("type") + + input_value = d.pop("inputValue") + + discount_cents = d.pop("discountCents") + + reason = d.pop("reason") + + actor = d.pop("actor") + + idempotency_key = d.pop("idempotencyKey") + + status = d.pop("status") + + original_amount_cents = d.pop("originalAmountCents") + + adjusted_amount_cents = d.pop("adjustedAmountCents") + + provider_source_id = d.pop("providerSourceId", UNSET) + + provider_result_id = d.pop("providerResultId", UNSET) + + _applied_at = d.pop("appliedAt", UNSET) + applied_at: datetime.datetime | Unset + if isinstance(_applied_at, Unset): + applied_at = UNSET + else: + applied_at = datetime.datetime.fromisoformat(_applied_at) + + admin_invoice_discount = cls( + type_=type_, + input_value=input_value, + discount_cents=discount_cents, + reason=reason, + actor=actor, + idempotency_key=idempotency_key, + status=status, + original_amount_cents=original_amount_cents, + adjusted_amount_cents=adjusted_amount_cents, + provider_source_id=provider_source_id, + provider_result_id=provider_result_id, + applied_at=applied_at, + ) + + admin_invoice_discount.additional_properties = d + return admin_invoice_discount + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_discount_request.py b/src/graphn/_generated/models/admin_invoice_discount_request.py new file mode 100644 index 0000000..7e4384b --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_discount_request.py @@ -0,0 +1,104 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..models.admin_invoice_discount_request_type import AdminInvoiceDiscountRequestType +from ..types import UNSET, Unset + +T = TypeVar("T", bound="AdminInvoiceDiscountRequest") + + +@_attrs_define +class AdminInvoiceDiscountRequest: + """ + Attributes: + from_ (datetime.datetime): + to (datetime.datetime): + expected_revision (int): + type_ (AdminInvoiceDiscountRequestType): + value (int): Discount input value. For percentage discounts this is basis points + (1..9999 = 0.01%..99.99%). For fixed_amount_cents this is cents. + reason (str): + comment (str): + idempotency_key (str | Unset): + """ + + from_: datetime.datetime + to: datetime.datetime + expected_revision: int + type_: AdminInvoiceDiscountRequestType + value: int + reason: str + comment: str + idempotency_key: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + from_ = self.from_.isoformat() + + to = self.to.isoformat() + + expected_revision = self.expected_revision + + type_ = self.type_.value + + value = self.value + + reason = self.reason + + comment = self.comment + + idempotency_key = self.idempotency_key + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "from": from_, + "to": to, + "expectedRevision": expected_revision, + "type": type_, + "value": value, + "reason": reason, + "comment": comment, + } + ) + if idempotency_key is not UNSET: + field_dict["idempotencyKey"] = idempotency_key + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + from_ = datetime.datetime.fromisoformat(d.pop("from")) + + to = datetime.datetime.fromisoformat(d.pop("to")) + + expected_revision = d.pop("expectedRevision") + + type_ = AdminInvoiceDiscountRequestType(d.pop("type")) + + value = d.pop("value") + + reason = d.pop("reason") + + comment = d.pop("comment") + + idempotency_key = d.pop("idempotencyKey", UNSET) + + admin_invoice_discount_request = cls( + from_=from_, + to=to, + expected_revision=expected_revision, + type_=type_, + value=value, + reason=reason, + comment=comment, + idempotency_key=idempotency_key, + ) + + return admin_invoice_discount_request diff --git a/src/graphn/_generated/models/admin_invoice_discount_request_type.py b/src/graphn/_generated/models/admin_invoice_discount_request_type.py new file mode 100644 index 0000000..1f1f5d5 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_discount_request_type.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class AdminInvoiceDiscountRequestType(StrEnum): + FIXED_AMOUNT_CENTS = "fixed_amount_cents" + PERCENTAGE = "percentage" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/admin_invoice_discount_response.py b/src/graphn/_generated/models/admin_invoice_discount_response.py new file mode 100644 index 0000000..a2579e8 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_discount_response.py @@ -0,0 +1,160 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.admin_invoice_discount import AdminInvoiceDiscount + + +T = TypeVar("T", bound="AdminInvoiceDiscountResponse") + + +@_attrs_define +class AdminInvoiceDiscountResponse: + """ + Attributes: + org_id (str): + period_start (datetime.datetime): + period_end (datetime.datetime): + invoice_id (str): + invoice_status (str): + revision (int): + root_invoice_id (str): + original_amount_cents (int): + adjusted_amount_cents (int): + discount (AdminInvoiceDiscount): + supersedes_invoice_id (str | Unset): + hosted_invoice_url (str | Unset): + """ + + org_id: str + period_start: datetime.datetime + period_end: datetime.datetime + invoice_id: str + invoice_status: str + revision: int + root_invoice_id: str + original_amount_cents: int + adjusted_amount_cents: int + discount: AdminInvoiceDiscount + supersedes_invoice_id: str | Unset = UNSET + hosted_invoice_url: str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + org_id = self.org_id + + period_start = self.period_start.isoformat() + + period_end = self.period_end.isoformat() + + invoice_id = self.invoice_id + + invoice_status = self.invoice_status + + revision = self.revision + + root_invoice_id = self.root_invoice_id + + original_amount_cents = self.original_amount_cents + + adjusted_amount_cents = self.adjusted_amount_cents + + discount = self.discount.to_dict() + + supersedes_invoice_id = self.supersedes_invoice_id + + hosted_invoice_url = self.hosted_invoice_url + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "orgId": org_id, + "periodStart": period_start, + "periodEnd": period_end, + "invoiceId": invoice_id, + "invoiceStatus": invoice_status, + "revision": revision, + "rootInvoiceId": root_invoice_id, + "originalAmountCents": original_amount_cents, + "adjustedAmountCents": adjusted_amount_cents, + "discount": discount, + } + ) + if supersedes_invoice_id is not UNSET: + field_dict["supersedesInvoiceId"] = supersedes_invoice_id + if hosted_invoice_url is not UNSET: + field_dict["hostedInvoiceUrl"] = hosted_invoice_url + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.admin_invoice_discount import AdminInvoiceDiscount + + d = dict(src_dict) + org_id = d.pop("orgId") + + period_start = datetime.datetime.fromisoformat(d.pop("periodStart")) + + period_end = datetime.datetime.fromisoformat(d.pop("periodEnd")) + + invoice_id = d.pop("invoiceId") + + invoice_status = d.pop("invoiceStatus") + + revision = d.pop("revision") + + root_invoice_id = d.pop("rootInvoiceId") + + original_amount_cents = d.pop("originalAmountCents") + + adjusted_amount_cents = d.pop("adjustedAmountCents") + + discount = AdminInvoiceDiscount.from_dict(d.pop("discount")) + + supersedes_invoice_id = d.pop("supersedesInvoiceId", UNSET) + + hosted_invoice_url = d.pop("hostedInvoiceUrl", UNSET) + + admin_invoice_discount_response = cls( + org_id=org_id, + period_start=period_start, + period_end=period_end, + invoice_id=invoice_id, + invoice_status=invoice_status, + revision=revision, + root_invoice_id=root_invoice_id, + original_amount_cents=original_amount_cents, + adjusted_amount_cents=adjusted_amount_cents, + discount=discount, + supersedes_invoice_id=supersedes_invoice_id, + hosted_invoice_url=hosted_invoice_url, + ) + + admin_invoice_discount_response.additional_properties = d + return admin_invoice_discount_response + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_preview_request.py b/src/graphn/_generated/models/admin_invoice_preview_request.py new file mode 100644 index 0000000..3179238 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_preview_request.py @@ -0,0 +1,86 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="AdminInvoicePreviewRequest") + + +@_attrs_define +class AdminInvoicePreviewRequest: + """from and to must both be set or both omitted. + + Attributes: + from_ (datetime.datetime | Unset): + to (datetime.datetime | Unset): + """ + + from_: datetime.datetime | Unset = UNSET + to: datetime.datetime | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + from_: str | Unset = UNSET + if not isinstance(self.from_, Unset): + from_ = self.from_.isoformat() + + to: str | Unset = UNSET + if not isinstance(self.to, Unset): + to = self.to.isoformat() + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({}) + if from_ is not UNSET: + field_dict["from"] = from_ + if to is not UNSET: + field_dict["to"] = to + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + _from_ = d.pop("from", UNSET) + from_: datetime.datetime | Unset + if isinstance(_from_, Unset): + from_ = UNSET + else: + from_ = datetime.datetime.fromisoformat(_from_) + + _to = d.pop("to", UNSET) + to: datetime.datetime | Unset + if isinstance(_to, Unset): + to = UNSET + else: + to = datetime.datetime.fromisoformat(_to) + + admin_invoice_preview_request = cls( + from_=from_, + to=to, + ) + + admin_invoice_preview_request.additional_properties = d + return admin_invoice_preview_request + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_preview_response.py b/src/graphn/_generated/models/admin_invoice_preview_response.py new file mode 100644 index 0000000..7872f29 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_preview_response.py @@ -0,0 +1,112 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +if TYPE_CHECKING: + from ..models.admin_invoice_quote import AdminInvoiceQuote + from ..models.admin_invoice_statement_ref import AdminInvoiceStatementRef + + +T = TypeVar("T", bound="AdminInvoicePreviewResponse") + + +@_attrs_define +class AdminInvoicePreviewResponse: + """ + Attributes: + period_start (datetime.datetime): + period_end (datetime.datetime): + statement_refs (list[AdminInvoiceStatementRef]): + manifest_sha_256 (str): + quote (AdminInvoiceQuote): + """ + + period_start: datetime.datetime + period_end: datetime.datetime + statement_refs: list[AdminInvoiceStatementRef] + manifest_sha_256: str + quote: AdminInvoiceQuote + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + period_start = self.period_start.isoformat() + + period_end = self.period_end.isoformat() + + statement_refs = [] + for statement_refs_item_data in self.statement_refs: + statement_refs_item = statement_refs_item_data.to_dict() + statement_refs.append(statement_refs_item) + + manifest_sha_256 = self.manifest_sha_256 + + quote = self.quote.to_dict() + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "periodStart": period_start, + "periodEnd": period_end, + "statementRefs": statement_refs, + "manifestSha256": manifest_sha_256, + "quote": quote, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.admin_invoice_quote import AdminInvoiceQuote + from ..models.admin_invoice_statement_ref import AdminInvoiceStatementRef + + d = dict(src_dict) + period_start = datetime.datetime.fromisoformat(d.pop("periodStart")) + + period_end = datetime.datetime.fromisoformat(d.pop("periodEnd")) + + statement_refs = [] + _statement_refs = d.pop("statementRefs") + for statement_refs_item_data in _statement_refs: + statement_refs_item = AdminInvoiceStatementRef.from_dict( + statement_refs_item_data + ) + + statement_refs.append(statement_refs_item) + + manifest_sha_256 = d.pop("manifestSha256") + + quote = AdminInvoiceQuote.from_dict(d.pop("quote")) + + admin_invoice_preview_response = cls( + period_start=period_start, + period_end=period_end, + statement_refs=statement_refs, + manifest_sha_256=manifest_sha_256, + quote=quote, + ) + + admin_invoice_preview_response.additional_properties = d + return admin_invoice_preview_response + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_quote.py b/src/graphn/_generated/models/admin_invoice_quote.py new file mode 100644 index 0000000..c7c4e14 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_quote.py @@ -0,0 +1,107 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +if TYPE_CHECKING: + from ..models.admin_invoice_quote_line_item import AdminInvoiceQuoteLineItem + + +T = TypeVar("T", bound="AdminInvoiceQuote") + + +@_attrs_define +class AdminInvoiceQuote: + """ + Attributes: + org_id (str): + customer_id (str): + period (str): + amount_cents (int): + line_items (list[AdminInvoiceQuoteLineItem]): + """ + + org_id: str + customer_id: str + period: str + amount_cents: int + line_items: list[AdminInvoiceQuoteLineItem] + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + org_id = self.org_id + + customer_id = self.customer_id + + period = self.period + + amount_cents = self.amount_cents + + line_items = [] + for line_items_item_data in self.line_items: + line_items_item = line_items_item_data.to_dict() + line_items.append(line_items_item) + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "orgId": org_id, + "customerId": customer_id, + "period": period, + "amountCents": amount_cents, + "lineItems": line_items, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.admin_invoice_quote_line_item import AdminInvoiceQuoteLineItem + + d = dict(src_dict) + org_id = d.pop("orgId") + + customer_id = d.pop("customerId") + + period = d.pop("period") + + amount_cents = d.pop("amountCents") + + line_items = [] + _line_items = d.pop("lineItems") + for line_items_item_data in _line_items: + line_items_item = AdminInvoiceQuoteLineItem.from_dict(line_items_item_data) + + line_items.append(line_items_item) + + admin_invoice_quote = cls( + org_id=org_id, + customer_id=customer_id, + period=period, + amount_cents=amount_cents, + line_items=line_items, + ) + + admin_invoice_quote.additional_properties = d + return admin_invoice_quote + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_quote_line_item.py b/src/graphn/_generated/models/admin_invoice_quote_line_item.py new file mode 100644 index 0000000..b176d44 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_quote_line_item.py @@ -0,0 +1,69 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="AdminInvoiceQuoteLineItem") + + +@_attrs_define +class AdminInvoiceQuoteLineItem: + """ + Attributes: + description (str): + amount_cents (int): + """ + + description: str + amount_cents: int + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + description = self.description + + amount_cents = self.amount_cents + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "description": description, + "amountCents": amount_cents, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + description = d.pop("description") + + amount_cents = d.pop("amountCents") + + admin_invoice_quote_line_item = cls( + description=description, + amount_cents=amount_cents, + ) + + admin_invoice_quote_line_item.additional_properties = d + return admin_invoice_quote_line_item + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_response.py b/src/graphn/_generated/models/admin_invoice_response.py new file mode 100644 index 0000000..74b74ea --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_response.py @@ -0,0 +1,67 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +if TYPE_CHECKING: + from ..models.invoice import Invoice + + +T = TypeVar("T", bound="AdminInvoiceResponse") + + +@_attrs_define +class AdminInvoiceResponse: + """ + Attributes: + invoice (Invoice): + """ + + invoice: Invoice + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + invoice = self.invoice.to_dict() + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "invoice": invoice, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.invoice import Invoice + + d = dict(src_dict) + invoice = Invoice.from_dict(d.pop("invoice")) + + admin_invoice_response = cls( + invoice=invoice, + ) + + admin_invoice_response.additional_properties = d + return admin_invoice_response + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_revision.py b/src/graphn/_generated/models/admin_invoice_revision.py new file mode 100644 index 0000000..8ff0d11 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_revision.py @@ -0,0 +1,159 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.admin_invoice_discount import AdminInvoiceDiscount + + +T = TypeVar("T", bound="AdminInvoiceRevision") + + +@_attrs_define +class AdminInvoiceRevision: + """ + Attributes: + revision (int): + invoice_id (str): + status (str): + root_invoice_id (str): + original_amount_cents (int): + adjusted_amount_cents (int): + created_at (datetime.datetime): + supersedes_invoice_id (str | Unset): + status_updated_at (datetime.datetime | Unset): + discount (AdminInvoiceDiscount | Unset): + """ + + revision: int + invoice_id: str + status: str + root_invoice_id: str + original_amount_cents: int + adjusted_amount_cents: int + created_at: datetime.datetime + supersedes_invoice_id: str | Unset = UNSET + status_updated_at: datetime.datetime | Unset = UNSET + discount: AdminInvoiceDiscount | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + revision = self.revision + + invoice_id = self.invoice_id + + status = self.status + + root_invoice_id = self.root_invoice_id + + original_amount_cents = self.original_amount_cents + + adjusted_amount_cents = self.adjusted_amount_cents + + created_at = self.created_at.isoformat() + + supersedes_invoice_id = self.supersedes_invoice_id + + status_updated_at: str | Unset = UNSET + if not isinstance(self.status_updated_at, Unset): + status_updated_at = self.status_updated_at.isoformat() + + discount: dict[str, Any] | Unset = UNSET + if not isinstance(self.discount, Unset): + discount = self.discount.to_dict() + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "revision": revision, + "invoiceId": invoice_id, + "status": status, + "rootInvoiceId": root_invoice_id, + "originalAmountCents": original_amount_cents, + "adjustedAmountCents": adjusted_amount_cents, + "createdAt": created_at, + } + ) + if supersedes_invoice_id is not UNSET: + field_dict["supersedesInvoiceId"] = supersedes_invoice_id + if status_updated_at is not UNSET: + field_dict["statusUpdatedAt"] = status_updated_at + if discount is not UNSET: + field_dict["discount"] = discount + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.admin_invoice_discount import AdminInvoiceDiscount + + d = dict(src_dict) + revision = d.pop("revision") + + invoice_id = d.pop("invoiceId") + + status = d.pop("status") + + root_invoice_id = d.pop("rootInvoiceId") + + original_amount_cents = d.pop("originalAmountCents") + + adjusted_amount_cents = d.pop("adjustedAmountCents") + + created_at = datetime.datetime.fromisoformat(d.pop("createdAt")) + + supersedes_invoice_id = d.pop("supersedesInvoiceId", UNSET) + + _status_updated_at = d.pop("statusUpdatedAt", UNSET) + status_updated_at: datetime.datetime | Unset + if isinstance(_status_updated_at, Unset): + status_updated_at = UNSET + else: + status_updated_at = datetime.datetime.fromisoformat(_status_updated_at) + + _discount = d.pop("discount", UNSET) + discount: AdminInvoiceDiscount | Unset + if isinstance(_discount, Unset): + discount = UNSET + else: + discount = AdminInvoiceDiscount.from_dict(_discount) + + admin_invoice_revision = cls( + revision=revision, + invoice_id=invoice_id, + status=status, + root_invoice_id=root_invoice_id, + original_amount_cents=original_amount_cents, + adjusted_amount_cents=adjusted_amount_cents, + created_at=created_at, + supersedes_invoice_id=supersedes_invoice_id, + status_updated_at=status_updated_at, + discount=discount, + ) + + admin_invoice_revision.additional_properties = d + return admin_invoice_revision + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_revisions_response.py b/src/graphn/_generated/models/admin_invoice_revisions_response.py new file mode 100644 index 0000000..d9fd382 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_revisions_response.py @@ -0,0 +1,100 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +if TYPE_CHECKING: + from ..models.admin_invoice_revision import AdminInvoiceRevision + + +T = TypeVar("T", bound="AdminInvoiceRevisionsResponse") + + +@_attrs_define +class AdminInvoiceRevisionsResponse: + """ + Attributes: + org_id (str): + period_start (datetime.datetime): + period_end (datetime.datetime): + revisions (list[AdminInvoiceRevision]): + """ + + org_id: str + period_start: datetime.datetime + period_end: datetime.datetime + revisions: list[AdminInvoiceRevision] + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + org_id = self.org_id + + period_start = self.period_start.isoformat() + + period_end = self.period_end.isoformat() + + revisions = [] + for revisions_item_data in self.revisions: + revisions_item = revisions_item_data.to_dict() + revisions.append(revisions_item) + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "orgId": org_id, + "periodStart": period_start, + "periodEnd": period_end, + "revisions": revisions, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.admin_invoice_revision import AdminInvoiceRevision + + d = dict(src_dict) + org_id = d.pop("orgId") + + period_start = datetime.datetime.fromisoformat(d.pop("periodStart")) + + period_end = datetime.datetime.fromisoformat(d.pop("periodEnd")) + + revisions = [] + _revisions = d.pop("revisions") + for revisions_item_data in _revisions: + revisions_item = AdminInvoiceRevision.from_dict(revisions_item_data) + + revisions.append(revisions_item) + + admin_invoice_revisions_response = cls( + org_id=org_id, + period_start=period_start, + period_end=period_end, + revisions=revisions, + ) + + admin_invoice_revisions_response.additional_properties = d + return admin_invoice_revisions_response + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_statement_ref.py b/src/graphn/_generated/models/admin_invoice_statement_ref.py new file mode 100644 index 0000000..ab3f948 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_statement_ref.py @@ -0,0 +1,86 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="AdminInvoiceStatementRef") + + +@_attrs_define +class AdminInvoiceStatementRef: + """ + Attributes: + period_start (datetime.datetime): + period_end (datetime.datetime): + revision (int): + input_fingerprint (str): + """ + + period_start: datetime.datetime + period_end: datetime.datetime + revision: int + input_fingerprint: str + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + period_start = self.period_start.isoformat() + + period_end = self.period_end.isoformat() + + revision = self.revision + + input_fingerprint = self.input_fingerprint + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "periodStart": period_start, + "periodEnd": period_end, + "revision": revision, + "inputFingerprint": input_fingerprint, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + period_start = datetime.datetime.fromisoformat(d.pop("periodStart")) + + period_end = datetime.datetime.fromisoformat(d.pop("periodEnd")) + + revision = d.pop("revision") + + input_fingerprint = d.pop("inputFingerprint") + + admin_invoice_statement_ref = cls( + period_start=period_start, + period_end=period_end, + revision=revision, + input_fingerprint=input_fingerprint, + ) + + admin_invoice_statement_ref.additional_properties = d + return admin_invoice_statement_ref + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_void_request.py b/src/graphn/_generated/models/admin_invoice_void_request.py new file mode 100644 index 0000000..1dbb817 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_void_request.py @@ -0,0 +1,78 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="AdminInvoiceVoidRequest") + + +@_attrs_define +class AdminInvoiceVoidRequest: + """ + Attributes: + from_ (datetime.datetime): + to (datetime.datetime): + comment (str): + """ + + from_: datetime.datetime + to: datetime.datetime + comment: str + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + from_ = self.from_.isoformat() + + to = self.to.isoformat() + + comment = self.comment + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "from": from_, + "to": to, + "comment": comment, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + from_ = datetime.datetime.fromisoformat(d.pop("from")) + + to = datetime.datetime.fromisoformat(d.pop("to")) + + comment = d.pop("comment") + + admin_invoice_void_request = cls( + from_=from_, + to=to, + comment=comment, + ) + + admin_invoice_void_request.additional_properties = d + return admin_invoice_void_request + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoice_void_response.py b/src/graphn/_generated/models/admin_invoice_void_response.py new file mode 100644 index 0000000..ab38546 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoice_void_response.py @@ -0,0 +1,113 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="AdminInvoiceVoidResponse") + + +@_attrs_define +class AdminInvoiceVoidResponse: + """ + Attributes: + org_id (str): + period_start (datetime.datetime): + period_end (datetime.datetime): + invoice_id (str): + invoice_status (str): + amount_due_cents (int): + hosted_invoice_url (str | Unset): + """ + + org_id: str + period_start: datetime.datetime + period_end: datetime.datetime + invoice_id: str + invoice_status: str + amount_due_cents: int + hosted_invoice_url: str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + org_id = self.org_id + + period_start = self.period_start.isoformat() + + period_end = self.period_end.isoformat() + + invoice_id = self.invoice_id + + invoice_status = self.invoice_status + + amount_due_cents = self.amount_due_cents + + hosted_invoice_url = self.hosted_invoice_url + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "orgId": org_id, + "periodStart": period_start, + "periodEnd": period_end, + "invoiceId": invoice_id, + "invoiceStatus": invoice_status, + "amountDueCents": amount_due_cents, + } + ) + if hosted_invoice_url is not UNSET: + field_dict["hostedInvoiceUrl"] = hosted_invoice_url + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + org_id = d.pop("orgId") + + period_start = datetime.datetime.fromisoformat(d.pop("periodStart")) + + period_end = datetime.datetime.fromisoformat(d.pop("periodEnd")) + + invoice_id = d.pop("invoiceId") + + invoice_status = d.pop("invoiceStatus") + + amount_due_cents = d.pop("amountDueCents") + + hosted_invoice_url = d.pop("hostedInvoiceUrl", UNSET) + + admin_invoice_void_response = cls( + org_id=org_id, + period_start=period_start, + period_end=period_end, + invoice_id=invoice_id, + invoice_status=invoice_status, + amount_due_cents=amount_due_cents, + hosted_invoice_url=hosted_invoice_url, + ) + + admin_invoice_void_response.additional_properties = d + return admin_invoice_void_response + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoices_response.py b/src/graphn/_generated/models/admin_invoices_response.py new file mode 100644 index 0000000..9e08aa6 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoices_response.py @@ -0,0 +1,96 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.admin_invoices_response_empty_reason import ( + AdminInvoicesResponseEmptyReason, +) +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.invoice import Invoice + + +T = TypeVar("T", bound="AdminInvoicesResponse") + + +@_attrs_define +class AdminInvoicesResponse: + """ + Attributes: + invoices (list[Invoice]): + empty_reason (AdminInvoicesResponseEmptyReason | Unset): + """ + + invoices: list[Invoice] + empty_reason: AdminInvoicesResponseEmptyReason | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + invoices = [] + for invoices_item_data in self.invoices: + invoices_item = invoices_item_data.to_dict() + invoices.append(invoices_item) + + empty_reason: str | Unset = UNSET + if not isinstance(self.empty_reason, Unset): + empty_reason = self.empty_reason.value + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "invoices": invoices, + } + ) + if empty_reason is not UNSET: + field_dict["emptyReason"] = empty_reason + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.invoice import Invoice + + d = dict(src_dict) + invoices = [] + _invoices = d.pop("invoices") + for invoices_item_data in _invoices: + invoices_item = Invoice.from_dict(invoices_item_data) + + invoices.append(invoices_item) + + _empty_reason = d.pop("emptyReason", UNSET) + empty_reason: AdminInvoicesResponseEmptyReason | Unset + if isinstance(_empty_reason, Unset): + empty_reason = UNSET + else: + empty_reason = AdminInvoicesResponseEmptyReason(_empty_reason) + + admin_invoices_response = cls( + invoices=invoices, + empty_reason=empty_reason, + ) + + admin_invoices_response.additional_properties = d + return admin_invoices_response + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/admin_invoices_response_empty_reason.py b/src/graphn/_generated/models/admin_invoices_response_empty_reason.py new file mode 100644 index 0000000..4ad2382 --- /dev/null +++ b/src/graphn/_generated/models/admin_invoices_response_empty_reason.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class AdminInvoicesResponseEmptyReason(StrEnum): + NO_BILLING_HISTORY = "no_billing_history" + STATEMENTS_NOT_GENERATED_YET = "statements_not_generated_yet" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/agent.py b/src/graphn/_generated/models/agent.py index 094a9e1..bf89830 100644 --- a/src/graphn/_generated/models/agent.py +++ b/src/graphn/_generated/models/agent.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/agent_create.py b/src/graphn/_generated/models/agent_create.py index 8a0d71e..f2c2048 100644 --- a/src/graphn/_generated/models/agent_create.py +++ b/src/graphn/_generated/models/agent_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/agent_list.py b/src/graphn/_generated/models/agent_list.py index c2eee74..8eb436c 100644 --- a/src/graphn/_generated/models/agent_list.py +++ b/src/graphn/_generated/models/agent_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/agent_run_request.py b/src/graphn/_generated/models/agent_run_request.py index 4f88448..ce169d6 100644 --- a/src/graphn/_generated/models/agent_run_request.py +++ b/src/graphn/_generated/models/agent_run_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="AgentRunRequest") diff --git a/src/graphn/_generated/models/agent_spec.py b/src/graphn/_generated/models/agent_spec.py index 2a9f3e1..bb5897f 100644 --- a/src/graphn/_generated/models/agent_spec.py +++ b/src/graphn/_generated/models/agent_spec.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/agent_spec_output_schema.py b/src/graphn/_generated/models/agent_spec_output_schema.py index 9517ee4..3c732b3 100644 --- a/src/graphn/_generated/models/agent_spec_output_schema.py +++ b/src/graphn/_generated/models/agent_spec_output_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AgentSpecOutputSchema") @_attrs_define class AgentSpecOutputSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/agent_update.py b/src/graphn/_generated/models/agent_update.py index 221a3ca..f03ad67 100644 --- a/src/graphn/_generated/models/agent_update.py +++ b/src/graphn/_generated/models/agent_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/api_key.py b/src/graphn/_generated/models/api_key.py index b83077c..e6d3917 100644 --- a/src/graphn/_generated/models/api_key.py +++ b/src/graphn/_generated/models/api_key.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/api_key_create.py b/src/graphn/_generated/models/api_key_create.py index 14ef23a..c92e218 100644 --- a/src/graphn/_generated/models/api_key_create.py +++ b/src/graphn/_generated/models/api_key_create.py @@ -2,10 +2,9 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/api_key_created.py b/src/graphn/_generated/models/api_key_created.py index bb2003e..6956a97 100644 --- a/src/graphn/_generated/models/api_key_created.py +++ b/src/graphn/_generated/models/api_key_created.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/api_key_list.py b/src/graphn/_generated/models/api_key_list.py index a9d7406..1b4d373 100644 --- a/src/graphn/_generated/models/api_key_list.py +++ b/src/graphn/_generated/models/api_key_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/architecture_info.py b/src/graphn/_generated/models/architecture_info.py index 25f7128..7bf8c99 100644 --- a/src/graphn/_generated/models/architecture_info.py +++ b/src/graphn/_generated/models/architecture_info.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="ArchitectureInfo") diff --git a/src/graphn/_generated/models/async_run.py b/src/graphn/_generated/models/async_run.py index 57dd9c3..cdf97a6 100644 --- a/src/graphn/_generated/models/async_run.py +++ b/src/graphn/_generated/models/async_run.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/async_run_error.py b/src/graphn/_generated/models/async_run_error.py index fa5a603..2a158ae 100644 --- a/src/graphn/_generated/models/async_run_error.py +++ b/src/graphn/_generated/models/async_run_error.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AsyncRunError") @_attrs_define class AsyncRunError: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/async_run_list.py b/src/graphn/_generated/models/async_run_list.py index c83d4ee..3be1262 100644 --- a/src/graphn/_generated/models/async_run_list.py +++ b/src/graphn/_generated/models/async_run_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/async_run_metadata.py b/src/graphn/_generated/models/async_run_metadata.py index a73e059..6c18e59 100644 --- a/src/graphn/_generated/models/async_run_metadata.py +++ b/src/graphn/_generated/models/async_run_metadata.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AsyncRunMetadata") @_attrs_define class AsyncRunMetadata: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/async_run_output.py b/src/graphn/_generated/models/async_run_output.py index 8d2cbf1..bea5ce9 100644 --- a/src/graphn/_generated/models/async_run_output.py +++ b/src/graphn/_generated/models/async_run_output.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AsyncRunOutput") @_attrs_define class AsyncRunOutput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/async_run_result_error.py b/src/graphn/_generated/models/async_run_result_error.py index 542e8e9..ef5de2c 100644 --- a/src/graphn/_generated/models/async_run_result_error.py +++ b/src/graphn/_generated/models/async_run_result_error.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AsyncRunResultError") @_attrs_define class AsyncRunResultError: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/async_run_usage.py b/src/graphn/_generated/models/async_run_usage.py index 204abe9..34439ca 100644 --- a/src/graphn/_generated/models/async_run_usage.py +++ b/src/graphn/_generated/models/async_run_usage.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AsyncRunUsage") @_attrs_define class AsyncRunUsage: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/async_submit_request.py b/src/graphn/_generated/models/async_submit_request.py index 8463369..51936d0 100644 --- a/src/graphn/_generated/models/async_submit_request.py +++ b/src/graphn/_generated/models/async_submit_request.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/async_submit_request_input.py b/src/graphn/_generated/models/async_submit_request_input.py index ea18600..6798370 100644 --- a/src/graphn/_generated/models/async_submit_request_input.py +++ b/src/graphn/_generated/models/async_submit_request_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AsyncSubmitRequestInput") @_attrs_define class AsyncSubmitRequestInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/async_submit_request_metadata.py b/src/graphn/_generated/models/async_submit_request_metadata.py index 5de2c7e..38fe66b 100644 --- a/src/graphn/_generated/models/async_submit_request_metadata.py +++ b/src/graphn/_generated/models/async_submit_request_metadata.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AsyncSubmitRequestMetadata") @_attrs_define class AsyncSubmitRequestMetadata: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/async_submit_request_parameters.py b/src/graphn/_generated/models/async_submit_request_parameters.py index 004db9b..eca2d78 100644 --- a/src/graphn/_generated/models/async_submit_request_parameters.py +++ b/src/graphn/_generated/models/async_submit_request_parameters.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AsyncSubmitRequestParameters") @_attrs_define class AsyncSubmitRequestParameters: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/async_submit_response.py b/src/graphn/_generated/models/async_submit_response.py index e7a8ebe..d0434aa 100644 --- a/src/graphn/_generated/models/async_submit_response.py +++ b/src/graphn/_generated/models/async_submit_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="AsyncSubmitResponse") diff --git a/src/graphn/_generated/models/batch.py b/src/graphn/_generated/models/batch.py index 11ce583..73c4015 100644 --- a/src/graphn/_generated/models/batch.py +++ b/src/graphn/_generated/models/batch.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/batch_document_result.py b/src/graphn/_generated/models/batch_document_result.py index 3e53762..6189b3d 100644 --- a/src/graphn/_generated/models/batch_document_result.py +++ b/src/graphn/_generated/models/batch_document_result.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/batch_documents_response.py b/src/graphn/_generated/models/batch_documents_response.py index 2356aaa..f774e1b 100644 --- a/src/graphn/_generated/models/batch_documents_response.py +++ b/src/graphn/_generated/models/batch_documents_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.batch_document_result import BatchDocumentResult diff --git a/src/graphn/_generated/models/batch_file_ref.py b/src/graphn/_generated/models/batch_file_ref.py index 6b206f4..8fe2691 100644 --- a/src/graphn/_generated/models/batch_file_ref.py +++ b/src/graphn/_generated/models/batch_file_ref.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="BatchFileRef") diff --git a/src/graphn/_generated/models/batch_input_item.py b/src/graphn/_generated/models/batch_input_item.py index f6cc7c4..1e76dfc 100644 --- a/src/graphn/_generated/models/batch_input_item.py +++ b/src/graphn/_generated/models/batch_input_item.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/batch_input_item_input.py b/src/graphn/_generated/models/batch_input_item_input.py index 01a1b2d..394be68 100644 --- a/src/graphn/_generated/models/batch_input_item_input.py +++ b/src/graphn/_generated/models/batch_input_item_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BatchInputItemInput") @_attrs_define class BatchInputItemInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/batch_item.py b/src/graphn/_generated/models/batch_item.py index 742d766..9c56d60 100644 --- a/src/graphn/_generated/models/batch_item.py +++ b/src/graphn/_generated/models/batch_item.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/batch_item_error.py b/src/graphn/_generated/models/batch_item_error.py index 0f20295..36bdc18 100644 --- a/src/graphn/_generated/models/batch_item_error.py +++ b/src/graphn/_generated/models/batch_item_error.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BatchItemError") @_attrs_define class BatchItemError: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/batch_item_list.py b/src/graphn/_generated/models/batch_item_list.py index bd3d8d6..2e062da 100644 --- a/src/graphn/_generated/models/batch_item_list.py +++ b/src/graphn/_generated/models/batch_item_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/batch_item_output.py b/src/graphn/_generated/models/batch_item_output.py index 60f8842..5fbf052 100644 --- a/src/graphn/_generated/models/batch_item_output.py +++ b/src/graphn/_generated/models/batch_item_output.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BatchItemOutput") @_attrs_define class BatchItemOutput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/batch_knowledgebase_result.py b/src/graphn/_generated/models/batch_knowledgebase_result.py index eec0e0f..f7cd3ea 100644 --- a/src/graphn/_generated/models/batch_knowledgebase_result.py +++ b/src/graphn/_generated/models/batch_knowledgebase_result.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/batch_knowledgebases_response.py b/src/graphn/_generated/models/batch_knowledgebases_response.py index 82636d2..1fe7123 100644 --- a/src/graphn/_generated/models/batch_knowledgebases_response.py +++ b/src/graphn/_generated/models/batch_knowledgebases_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.batch_knowledgebase_result import BatchKnowledgebaseResult diff --git a/src/graphn/_generated/models/batch_list.py b/src/graphn/_generated/models/batch_list.py index 4fd8286..057fcc6 100644 --- a/src/graphn/_generated/models/batch_list.py +++ b/src/graphn/_generated/models/batch_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/batch_request_counts.py b/src/graphn/_generated/models/batch_request_counts.py index d9653b5..31c14d8 100644 --- a/src/graphn/_generated/models/batch_request_counts.py +++ b/src/graphn/_generated/models/batch_request_counts.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="BatchRequestCounts") diff --git a/src/graphn/_generated/models/batch_submit_request.py b/src/graphn/_generated/models/batch_submit_request.py index 6e8f018..0429223 100644 --- a/src/graphn/_generated/models/batch_submit_request.py +++ b/src/graphn/_generated/models/batch_submit_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/batch_submit_request_metadata.py b/src/graphn/_generated/models/batch_submit_request_metadata.py index 16f8c71..8997e12 100644 --- a/src/graphn/_generated/models/batch_submit_request_metadata.py +++ b/src/graphn/_generated/models/batch_submit_request_metadata.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BatchSubmitRequestMetadata") @_attrs_define class BatchSubmitRequestMetadata: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/batch_submit_request_parameters.py b/src/graphn/_generated/models/batch_submit_request_parameters.py index fdf8018..3c7b9fc 100644 --- a/src/graphn/_generated/models/batch_submit_request_parameters.py +++ b/src/graphn/_generated/models/batch_submit_request_parameters.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BatchSubmitRequestParameters") @_attrs_define class BatchSubmitRequestParameters: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/batch_submit_response.py b/src/graphn/_generated/models/batch_submit_response.py index 8354bba..ab663e8 100644 --- a/src/graphn/_generated/models/batch_submit_response.py +++ b/src/graphn/_generated/models/batch_submit_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.batch_request_counts import BatchRequestCounts diff --git a/src/graphn/_generated/models/batch_update_item.py b/src/graphn/_generated/models/batch_update_item.py index b569eac..ed42ed6 100644 --- a/src/graphn/_generated/models/batch_update_item.py +++ b/src/graphn/_generated/models/batch_update_item.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/batch_update_knowledgebases_request.py b/src/graphn/_generated/models/batch_update_knowledgebases_request.py index eeb19e8..1197725 100644 --- a/src/graphn/_generated/models/batch_update_knowledgebases_request.py +++ b/src/graphn/_generated/models/batch_update_knowledgebases_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self if TYPE_CHECKING: from ..models.batch_update_item import BatchUpdateItem diff --git a/src/graphn/_generated/models/billing_account.py b/src/graphn/_generated/models/billing_account.py index 439b1ee..e509d03 100644 --- a/src/graphn/_generated/models/billing_account.py +++ b/src/graphn/_generated/models/billing_account.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/billing_entitlements.py b/src/graphn/_generated/models/billing_entitlements.py index 7f472c9..3d1cc69 100644 --- a/src/graphn/_generated/models/billing_entitlements.py +++ b/src/graphn/_generated/models/billing_entitlements.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/billing_grant_result.py b/src/graphn/_generated/models/billing_grant_result.py index eb70b7a..529c719 100644 --- a/src/graphn/_generated/models/billing_grant_result.py +++ b/src/graphn/_generated/models/billing_grant_result.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.billing_grant_result_new_status import BillingGrantResultNewStatus from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/billing_grant_result_new_status.py b/src/graphn/_generated/models/billing_grant_result_new_status.py index 1718f72..3836dff 100644 --- a/src/graphn/_generated/models/billing_grant_result_new_status.py +++ b/src/graphn/_generated/models/billing_grant_result_new_status.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class BillingGrantResultNewStatus(str, Enum): +class BillingGrantResultNewStatus(StrEnum): LOW = "low" OK = "ok" OUT_OF_BALANCE = "out_of_balance" diff --git a/src/graphn/_generated/models/billing_settings_update.py b/src/graphn/_generated/models/billing_settings_update.py index 963b403..53105e4 100644 --- a/src/graphn/_generated/models/billing_settings_update.py +++ b/src/graphn/_generated/models/billing_settings_update.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/billing_top_up_request.py b/src/graphn/_generated/models/billing_top_up_request.py index f788a39..09b186f 100644 --- a/src/graphn/_generated/models/billing_top_up_request.py +++ b/src/graphn/_generated/models/billing_top_up_request.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BillingTopUpRequest") diff --git a/src/graphn/_generated/models/billing_usage.py b/src/graphn/_generated/models/billing_usage.py index c6ffdcc..40bb134 100644 --- a/src/graphn/_generated/models/billing_usage.py +++ b/src/graphn/_generated/models/billing_usage.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.billing_usage_time_series_item import BillingUsageTimeSeriesItem diff --git a/src/graphn/_generated/models/billing_usage_time_series_item.py b/src/graphn/_generated/models/billing_usage_time_series_item.py index 91d3c73..eea03a7 100644 --- a/src/graphn/_generated/models/billing_usage_time_series_item.py +++ b/src/graphn/_generated/models/billing_usage_time_series_item.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BillingUsageTimeSeriesItem") diff --git a/src/graphn/_generated/models/blueprint.py b/src/graphn/_generated/models/blueprint.py index f327f10..e1b8cc8 100644 --- a/src/graphn/_generated/models/blueprint.py +++ b/src/graphn/_generated/models/blueprint.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/blueprint_agents_item.py b/src/graphn/_generated/models/blueprint_agents_item.py index 80f04ba..b4c6dbf 100644 --- a/src/graphn/_generated/models/blueprint_agents_item.py +++ b/src/graphn/_generated/models/blueprint_agents_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BlueprintAgentsItem") @_attrs_define class BlueprintAgentsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/blueprint_deploy_request.py b/src/graphn/_generated/models/blueprint_deploy_request.py index b6c7762..19e49ef 100644 --- a/src/graphn/_generated/models/blueprint_deploy_request.py +++ b/src/graphn/_generated/models/blueprint_deploy_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="BlueprintDeployRequest") diff --git a/src/graphn/_generated/models/blueprint_deploy_resource_i_ds.py b/src/graphn/_generated/models/blueprint_deploy_resource_i_ds.py new file mode 100644 index 0000000..217208a --- /dev/null +++ b/src/graphn/_generated/models/blueprint_deploy_resource_i_ds.py @@ -0,0 +1,58 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define + +T = TypeVar("T", bound="BlueprintDeployResourceIDs") + + +@_attrs_define +class BlueprintDeployResourceIDs: + """ + Attributes: + agents (list[str]): + functions (list[str]): + mcp_servers (list[str]): + """ + + agents: list[str] + functions: list[str] + mcp_servers: list[str] + + def to_dict(self) -> dict[str, Any]: + agents = self.agents + + functions = self.functions + + mcp_servers = self.mcp_servers + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "agents": agents, + "functions": functions, + "mcp_servers": mcp_servers, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + agents = cast(list[str], d.pop("agents")) + + functions = cast(list[str], d.pop("functions")) + + mcp_servers = cast(list[str], d.pop("mcp_servers")) + + blueprint_deploy_resource_i_ds = cls( + agents=agents, + functions=functions, + mcp_servers=mcp_servers, + ) + + return blueprint_deploy_resource_i_ds diff --git a/src/graphn/_generated/models/blueprint_deploy_response.py b/src/graphn/_generated/models/blueprint_deploy_response.py index da8ecd1..7f2e34a 100644 --- a/src/graphn/_generated/models/blueprint_deploy_response.py +++ b/src/graphn/_generated/models/blueprint_deploy_response.py @@ -1,10 +1,13 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self + +if TYPE_CHECKING: + from ..models.blueprint_deploy_resource_i_ds import BlueprintDeployResourceIDs + T = TypeVar("T", bound="BlueprintDeployResponse") @@ -15,22 +18,27 @@ class BlueprintDeployResponse: Attributes: workflow_id (str): name (str): + resource_ids (BlueprintDeployResourceIDs): """ workflow_id: str name: str + resource_ids: BlueprintDeployResourceIDs def to_dict(self) -> dict[str, Any]: workflow_id = self.workflow_id name = self.name + resource_ids = self.resource_ids.to_dict() + field_dict: dict[str, Any] = {} field_dict.update( { "workflow_id": workflow_id, "name": name, + "resource_ids": resource_ids, } ) @@ -38,14 +46,19 @@ def to_dict(self) -> dict[str, Any]: @classmethod def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.blueprint_deploy_resource_i_ds import BlueprintDeployResourceIDs + d = dict(src_dict) workflow_id = d.pop("workflow_id") name = d.pop("name") + resource_ids = BlueprintDeployResourceIDs.from_dict(d.pop("resource_ids")) + blueprint_deploy_response = cls( workflow_id=workflow_id, name=name, + resource_ids=resource_ids, ) return blueprint_deploy_response diff --git a/src/graphn/_generated/models/blueprint_functions_item.py b/src/graphn/_generated/models/blueprint_functions_item.py index 7825d4f..77a1a1c 100644 --- a/src/graphn/_generated/models/blueprint_functions_item.py +++ b/src/graphn/_generated/models/blueprint_functions_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BlueprintFunctionsItem") @_attrs_define class BlueprintFunctionsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/blueprint_list.py b/src/graphn/_generated/models/blueprint_list.py index 55fec75..7c04fa3 100644 --- a/src/graphn/_generated/models/blueprint_list.py +++ b/src/graphn/_generated/models/blueprint_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.blueprint_summary import BlueprintSummary diff --git a/src/graphn/_generated/models/blueprint_mcp_servers_item.py b/src/graphn/_generated/models/blueprint_mcp_servers_item.py index 77654eb..c7f5e13 100644 --- a/src/graphn/_generated/models/blueprint_mcp_servers_item.py +++ b/src/graphn/_generated/models/blueprint_mcp_servers_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BlueprintMcpServersItem") @_attrs_define class BlueprintMcpServersItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/blueprint_summary.py b/src/graphn/_generated/models/blueprint_summary.py index 9108ffe..332ce4a 100644 --- a/src/graphn/_generated/models/blueprint_summary.py +++ b/src/graphn/_generated/models/blueprint_summary.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/builtin_function_info.py b/src/graphn/_generated/models/builtin_function_info.py index 7378fef..fb0a674 100644 --- a/src/graphn/_generated/models/builtin_function_info.py +++ b/src/graphn/_generated/models/builtin_function_info.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/builtin_function_info_parameters_schema.py b/src/graphn/_generated/models/builtin_function_info_parameters_schema.py index 59c0ec0..435e663 100644 --- a/src/graphn/_generated/models/builtin_function_info_parameters_schema.py +++ b/src/graphn/_generated/models/builtin_function_info_parameters_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BuiltinFunctionInfoParametersSchema") @_attrs_define class BuiltinFunctionInfoParametersSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/builtin_function_list.py b/src/graphn/_generated/models/builtin_function_list.py index b5ee439..9d111c0 100644 --- a/src/graphn/_generated/models/builtin_function_list.py +++ b/src/graphn/_generated/models/builtin_function_list.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self if TYPE_CHECKING: from ..models.builtin_function_list_functions import BuiltinFunctionListFunctions diff --git a/src/graphn/_generated/models/builtin_function_list_functions.py b/src/graphn/_generated/models/builtin_function_list_functions.py index b04bf99..d3b9574 100644 --- a/src/graphn/_generated/models/builtin_function_list_functions.py +++ b/src/graphn/_generated/models/builtin_function_list_functions.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.builtin_function_info import BuiltinFunctionInfo @@ -16,8 +15,6 @@ @_attrs_define class BuiltinFunctionListFunctions: - """ """ - additional_properties: dict[str, BuiltinFunctionInfo] = _attrs_field( init=False, factory=dict ) diff --git a/src/graphn/_generated/models/bundle_resource_item.py b/src/graphn/_generated/models/bundle_resource_item.py index 8e756c7..25c3072 100644 --- a/src/graphn/_generated/models/bundle_resource_item.py +++ b/src/graphn/_generated/models/bundle_resource_item.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/bundle_resource_item_spec.py b/src/graphn/_generated/models/bundle_resource_item_spec.py index b4c7041..5cb34dd 100644 --- a/src/graphn/_generated/models/bundle_resource_item_spec.py +++ b/src/graphn/_generated/models/bundle_resource_item_spec.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="BundleResourceItemSpec") @_attrs_define class BundleResourceItemSpec: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/capability.py b/src/graphn/_generated/models/capability.py index 93d1bf1..8fbc55e 100644 --- a/src/graphn/_generated/models/capability.py +++ b/src/graphn/_generated/models/capability.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class Capability(str, Enum): +class Capability(StrEnum): EMBEDDING = "embedding" REASONING = "reasoning" TOOL_CALLING = "tool_calling" diff --git a/src/graphn/_generated/models/chat_completion_request.py b/src/graphn/_generated/models/chat_completion_request.py index 22ff744..73e59d5 100644 --- a/src/graphn/_generated/models/chat_completion_request.py +++ b/src/graphn/_generated/models/chat_completion_request.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar, cast +from typing import TYPE_CHECKING, Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/chat_completion_request_response_format.py b/src/graphn/_generated/models/chat_completion_request_response_format.py index 410722a..dda4b2f 100644 --- a/src/graphn/_generated/models/chat_completion_request_response_format.py +++ b/src/graphn/_generated/models/chat_completion_request_response_format.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="ChatCompletionRequestResponseFormat") @_attrs_define class ChatCompletionRequestResponseFormat: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/chat_completion_request_tool_choice_type_1.py b/src/graphn/_generated/models/chat_completion_request_tool_choice_type_1.py index c18fd49..53d24ef 100644 --- a/src/graphn/_generated/models/chat_completion_request_tool_choice_type_1.py +++ b/src/graphn/_generated/models/chat_completion_request_tool_choice_type_1.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="ChatCompletionRequestToolChoiceType1") @_attrs_define class ChatCompletionRequestToolChoiceType1: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/chat_completion_request_tools_item.py b/src/graphn/_generated/models/chat_completion_request_tools_item.py index 45d7211..72edfbf 100644 --- a/src/graphn/_generated/models/chat_completion_request_tools_item.py +++ b/src/graphn/_generated/models/chat_completion_request_tools_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="ChatCompletionRequestToolsItem") @_attrs_define class ChatCompletionRequestToolsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/chat_completion_response.py b/src/graphn/_generated/models/chat_completion_response.py index ae53044..15a784f 100644 --- a/src/graphn/_generated/models/chat_completion_response.py +++ b/src/graphn/_generated/models/chat_completion_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.chat_completion_response_object import ChatCompletionResponseObject from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/chat_completion_response_choices_item.py b/src/graphn/_generated/models/chat_completion_response_choices_item.py index c015fb6..bac2d83 100644 --- a/src/graphn/_generated/models/chat_completion_response_choices_item.py +++ b/src/graphn/_generated/models/chat_completion_response_choices_item.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar, cast +from typing import TYPE_CHECKING, Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/chat_completion_response_object.py b/src/graphn/_generated/models/chat_completion_response_object.py index 08946cc..f9fef28 100644 --- a/src/graphn/_generated/models/chat_completion_response_object.py +++ b/src/graphn/_generated/models/chat_completion_response_object.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class ChatCompletionResponseObject(str, Enum): +class ChatCompletionResponseObject(StrEnum): CHAT_COMPLETION = "chat.completion" def __str__(self) -> str: diff --git a/src/graphn/_generated/models/chat_completion_response_usage.py b/src/graphn/_generated/models/chat_completion_response_usage.py index a9e24e0..38c85af 100644 --- a/src/graphn/_generated/models/chat_completion_response_usage.py +++ b/src/graphn/_generated/models/chat_completion_response_usage.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/chat_message.py b/src/graphn/_generated/models/chat_message.py index d1d4829..873402e 100644 --- a/src/graphn/_generated/models/chat_message.py +++ b/src/graphn/_generated/models/chat_message.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.chat_message_role import ChatMessageRole from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/chat_message_role.py b/src/graphn/_generated/models/chat_message_role.py index b9757ff..c08faf9 100644 --- a/src/graphn/_generated/models/chat_message_role.py +++ b/src/graphn/_generated/models/chat_message_role.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class ChatMessageRole(str, Enum): +class ChatMessageRole(StrEnum): ASSISTANT = "assistant" SYSTEM = "system" TOOL = "tool" diff --git a/src/graphn/_generated/models/chat_message_tool_calls_item.py b/src/graphn/_generated/models/chat_message_tool_calls_item.py index 55417dc..bf521ec 100644 --- a/src/graphn/_generated/models/chat_message_tool_calls_item.py +++ b/src/graphn/_generated/models/chat_message_tool_calls_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="ChatMessageToolCallsItem") @_attrs_define class ChatMessageToolCallsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/connection.py b/src/graphn/_generated/models/connection.py new file mode 100644 index 0000000..aeb7e38 --- /dev/null +++ b/src/graphn/_generated/models/connection.py @@ -0,0 +1,254 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar, cast + +from attrs import define as _attrs_define + +from ..models.connection_kind import ConnectionKind +from ..models.connection_status import ConnectionStatus +from ..models.connection_watch_status import ConnectionWatchStatus +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.connection_account_metadata import ConnectionAccountMetadata + + +T = TypeVar("T", bound="Connection") + + +@_attrs_define +class Connection: + """Workspace-owned authorization metadata. OAuth client secrets, access + tokens, refresh tokens, PKCE data, and account hashes are never returned. + + Attributes: + id (str): + workspace_id (str): + name (str): + kind (ConnectionKind): + provider_id (str): + status (ConnectionStatus): + granted_capabilities (list[str]): + granted_scopes (list[str]): + watch_status (ConnectionWatchStatus): + created_at (datetime.datetime): + updated_at (datetime.datetime): + resource_id (str | Unset): + account_label (str | Unset): + account_metadata (ConnectionAccountMetadata | Unset): + credential_expires_at (datetime.datetime | Unset): + last_validated_at (datetime.datetime | Unset): + last_error_code (str | Unset): + last_error_message (str | Unset): + watch_expires_at (datetime.datetime | Unset): + last_event_at (datetime.datetime | Unset): + """ + + id: str + workspace_id: str + name: str + kind: ConnectionKind + provider_id: str + status: ConnectionStatus + granted_capabilities: list[str] + granted_scopes: list[str] + watch_status: ConnectionWatchStatus + created_at: datetime.datetime + updated_at: datetime.datetime + resource_id: str | Unset = UNSET + account_label: str | Unset = UNSET + account_metadata: ConnectionAccountMetadata | Unset = UNSET + credential_expires_at: datetime.datetime | Unset = UNSET + last_validated_at: datetime.datetime | Unset = UNSET + last_error_code: str | Unset = UNSET + last_error_message: str | Unset = UNSET + watch_expires_at: datetime.datetime | Unset = UNSET + last_event_at: datetime.datetime | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + id = self.id + + workspace_id = self.workspace_id + + name = self.name + + kind = self.kind.value + + provider_id = self.provider_id + + status = self.status.value + + granted_capabilities = self.granted_capabilities + + granted_scopes = self.granted_scopes + + watch_status = self.watch_status.value + + created_at = self.created_at.isoformat() + + updated_at = self.updated_at.isoformat() + + resource_id = self.resource_id + + account_label = self.account_label + + account_metadata: dict[str, Any] | Unset = UNSET + if not isinstance(self.account_metadata, Unset): + account_metadata = self.account_metadata.to_dict() + + credential_expires_at: str | Unset = UNSET + if not isinstance(self.credential_expires_at, Unset): + credential_expires_at = self.credential_expires_at.isoformat() + + last_validated_at: str | Unset = UNSET + if not isinstance(self.last_validated_at, Unset): + last_validated_at = self.last_validated_at.isoformat() + + last_error_code = self.last_error_code + + last_error_message = self.last_error_message + + watch_expires_at: str | Unset = UNSET + if not isinstance(self.watch_expires_at, Unset): + watch_expires_at = self.watch_expires_at.isoformat() + + last_event_at: str | Unset = UNSET + if not isinstance(self.last_event_at, Unset): + last_event_at = self.last_event_at.isoformat() + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "id": id, + "workspace_id": workspace_id, + "name": name, + "kind": kind, + "provider_id": provider_id, + "status": status, + "granted_capabilities": granted_capabilities, + "granted_scopes": granted_scopes, + "watch_status": watch_status, + "created_at": created_at, + "updated_at": updated_at, + } + ) + if resource_id is not UNSET: + field_dict["resource_id"] = resource_id + if account_label is not UNSET: + field_dict["account_label"] = account_label + if account_metadata is not UNSET: + field_dict["account_metadata"] = account_metadata + if credential_expires_at is not UNSET: + field_dict["credential_expires_at"] = credential_expires_at + if last_validated_at is not UNSET: + field_dict["last_validated_at"] = last_validated_at + if last_error_code is not UNSET: + field_dict["last_error_code"] = last_error_code + if last_error_message is not UNSET: + field_dict["last_error_message"] = last_error_message + if watch_expires_at is not UNSET: + field_dict["watch_expires_at"] = watch_expires_at + if last_event_at is not UNSET: + field_dict["last_event_at"] = last_event_at + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.connection_account_metadata import ConnectionAccountMetadata + + d = dict(src_dict) + id = d.pop("id") + + workspace_id = d.pop("workspace_id") + + name = d.pop("name") + + kind = ConnectionKind(d.pop("kind")) + + provider_id = d.pop("provider_id") + + status = ConnectionStatus(d.pop("status")) + + granted_capabilities = cast(list[str], d.pop("granted_capabilities")) + + granted_scopes = cast(list[str], d.pop("granted_scopes")) + + watch_status = ConnectionWatchStatus(d.pop("watch_status")) + + created_at = datetime.datetime.fromisoformat(d.pop("created_at")) + + updated_at = datetime.datetime.fromisoformat(d.pop("updated_at")) + + resource_id = d.pop("resource_id", UNSET) + + account_label = d.pop("account_label", UNSET) + + _account_metadata = d.pop("account_metadata", UNSET) + account_metadata: ConnectionAccountMetadata | Unset + if isinstance(_account_metadata, Unset): + account_metadata = UNSET + else: + account_metadata = ConnectionAccountMetadata.from_dict(_account_metadata) + + _credential_expires_at = d.pop("credential_expires_at", UNSET) + credential_expires_at: datetime.datetime | Unset + if isinstance(_credential_expires_at, Unset): + credential_expires_at = UNSET + else: + credential_expires_at = datetime.datetime.fromisoformat( + _credential_expires_at + ) + + _last_validated_at = d.pop("last_validated_at", UNSET) + last_validated_at: datetime.datetime | Unset + if isinstance(_last_validated_at, Unset): + last_validated_at = UNSET + else: + last_validated_at = datetime.datetime.fromisoformat(_last_validated_at) + + last_error_code = d.pop("last_error_code", UNSET) + + last_error_message = d.pop("last_error_message", UNSET) + + _watch_expires_at = d.pop("watch_expires_at", UNSET) + watch_expires_at: datetime.datetime | Unset + if isinstance(_watch_expires_at, Unset): + watch_expires_at = UNSET + else: + watch_expires_at = datetime.datetime.fromisoformat(_watch_expires_at) + + _last_event_at = d.pop("last_event_at", UNSET) + last_event_at: datetime.datetime | Unset + if isinstance(_last_event_at, Unset): + last_event_at = UNSET + else: + last_event_at = datetime.datetime.fromisoformat(_last_event_at) + + connection = cls( + id=id, + workspace_id=workspace_id, + name=name, + kind=kind, + provider_id=provider_id, + status=status, + granted_capabilities=granted_capabilities, + granted_scopes=granted_scopes, + watch_status=watch_status, + created_at=created_at, + updated_at=updated_at, + resource_id=resource_id, + account_label=account_label, + account_metadata=account_metadata, + credential_expires_at=credential_expires_at, + last_validated_at=last_validated_at, + last_error_code=last_error_code, + last_error_message=last_error_message, + watch_expires_at=watch_expires_at, + last_event_at=last_event_at, + ) + + return connection diff --git a/src/graphn/_generated/models/connection_account_metadata.py b/src/graphn/_generated/models/connection_account_metadata.py new file mode 100644 index 0000000..db4fa0b --- /dev/null +++ b/src/graphn/_generated/models/connection_account_metadata.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="ConnectionAccountMetadata") + + +@_attrs_define +class ConnectionAccountMetadata: + additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + connection_account_metadata = cls() + + connection_account_metadata.additional_properties = d + return connection_account_metadata + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> str: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: str) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/connection_authorization_challenge.py b/src/graphn/_generated/models/connection_authorization_challenge.py new file mode 100644 index 0000000..7e99892 --- /dev/null +++ b/src/graphn/_generated/models/connection_authorization_challenge.py @@ -0,0 +1,51 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define + +T = TypeVar("T", bound="ConnectionAuthorizationChallenge") + + +@_attrs_define +class ConnectionAuthorizationChallenge: + """ + Attributes: + authorization_url (str): + expires_at (datetime.datetime): + """ + + authorization_url: str + expires_at: datetime.datetime + + def to_dict(self) -> dict[str, Any]: + authorization_url = self.authorization_url + + expires_at = self.expires_at.isoformat() + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "authorization_url": authorization_url, + "expires_at": expires_at, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + authorization_url = d.pop("authorization_url") + + expires_at = datetime.datetime.fromisoformat(d.pop("expires_at")) + + connection_authorization_challenge = cls( + authorization_url=authorization_url, + expires_at=expires_at, + ) + + return connection_authorization_challenge diff --git a/src/graphn/_generated/models/connection_authorization_start.py b/src/graphn/_generated/models/connection_authorization_start.py new file mode 100644 index 0000000..6f9acbd --- /dev/null +++ b/src/graphn/_generated/models/connection_authorization_start.py @@ -0,0 +1,53 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="ConnectionAuthorizationStart") + + +@_attrs_define +class ConnectionAuthorizationStart: + """ + Attributes: + return_path (str | Unset): Relative path on the configured GraphN web origin. Default: '/settings/connections'. + requested_capabilities (list[str] | Unset): + """ + + return_path: str | Unset = "/settings/connections" + requested_capabilities: list[str] | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + return_path = self.return_path + + requested_capabilities: list[str] | Unset = UNSET + if not isinstance(self.requested_capabilities, Unset): + requested_capabilities = self.requested_capabilities + + field_dict: dict[str, Any] = {} + + field_dict.update({}) + if return_path is not UNSET: + field_dict["return_path"] = return_path + if requested_capabilities is not UNSET: + field_dict["requested_capabilities"] = requested_capabilities + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + return_path = d.pop("return_path", UNSET) + + requested_capabilities = cast(list[str], d.pop("requested_capabilities", UNSET)) + + connection_authorization_start = cls( + return_path=return_path, + requested_capabilities=requested_capabilities, + ) + + return connection_authorization_start diff --git a/src/graphn/_generated/models/connection_create.py b/src/graphn/_generated/models/connection_create.py new file mode 100644 index 0000000..158e1b6 --- /dev/null +++ b/src/graphn/_generated/models/connection_create.py @@ -0,0 +1,70 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..models.connection_create_kind import ConnectionCreateKind +from ..types import UNSET, Unset + +T = TypeVar("T", bound="ConnectionCreate") + + +@_attrs_define +class ConnectionCreate: + """ + Attributes: + name (str): + kind (ConnectionCreateKind): + provider_id (str): + resource_id (str | Unset): Optional linked MCP resource ID. + """ + + name: str + kind: ConnectionCreateKind + provider_id: str + resource_id: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + name = self.name + + kind = self.kind.value + + provider_id = self.provider_id + + resource_id = self.resource_id + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "name": name, + "kind": kind, + "provider_id": provider_id, + } + ) + if resource_id is not UNSET: + field_dict["resource_id"] = resource_id + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + name = d.pop("name") + + kind = ConnectionCreateKind(d.pop("kind")) + + provider_id = d.pop("provider_id") + + resource_id = d.pop("resource_id", UNSET) + + connection_create = cls( + name=name, + kind=kind, + provider_id=provider_id, + resource_id=resource_id, + ) + + return connection_create diff --git a/src/graphn/_generated/models/connection_create_kind.py b/src/graphn/_generated/models/connection_create_kind.py new file mode 100644 index 0000000..aa6df55 --- /dev/null +++ b/src/graphn/_generated/models/connection_create_kind.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class ConnectionCreateKind(StrEnum): + MCP = "mcp" + NATIVE = "native" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/connection_kind.py b/src/graphn/_generated/models/connection_kind.py new file mode 100644 index 0000000..2b710f9 --- /dev/null +++ b/src/graphn/_generated/models/connection_kind.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class ConnectionKind(StrEnum): + MCP = "mcp" + NATIVE = "native" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/connection_list.py b/src/graphn/_generated/models/connection_list.py new file mode 100644 index 0000000..68dfe89 --- /dev/null +++ b/src/graphn/_generated/models/connection_list.py @@ -0,0 +1,75 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.connection import Connection + + +T = TypeVar("T", bound="ConnectionList") + + +@_attrs_define +class ConnectionList: + """ + Attributes: + items (list[Connection]): + count (int): + continue_token (str | Unset): + """ + + items: list[Connection] + count: int + continue_token: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + items = [] + for items_item_data in self.items: + items_item = items_item_data.to_dict() + items.append(items_item) + + count = self.count + + continue_token = self.continue_token + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "items": items, + "count": count, + } + ) + if continue_token is not UNSET: + field_dict["continue_token"] = continue_token + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.connection import Connection + + d = dict(src_dict) + items = [] + _items = d.pop("items") + for items_item_data in _items: + items_item = Connection.from_dict(items_item_data) + + items.append(items_item) + + count = d.pop("count") + + continue_token = d.pop("continue_token", UNSET) + + connection_list = cls( + items=items, + count=count, + continue_token=continue_token, + ) + + return connection_list diff --git a/src/graphn/_generated/models/connection_status.py b/src/graphn/_generated/models/connection_status.py new file mode 100644 index 0000000..56ee362 --- /dev/null +++ b/src/graphn/_generated/models/connection_status.py @@ -0,0 +1,12 @@ +from enum import StrEnum + + +class ConnectionStatus(StrEnum): + ACTIVE = "active" + ERROR = "error" + NEEDS_REAUTH = "needs_reauth" + PENDING = "pending" + REVOKED = "revoked" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/connection_watch_status.py b/src/graphn/_generated/models/connection_watch_status.py new file mode 100644 index 0000000..425de99 --- /dev/null +++ b/src/graphn/_generated/models/connection_watch_status.py @@ -0,0 +1,11 @@ +from enum import StrEnum + + +class ConnectionWatchStatus(StrEnum): + ACTIVE = "active" + DISABLED = "disabled" + ERROR = "error" + PENDING = "pending" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/create_billing_setup_intent_response_200.py b/src/graphn/_generated/models/create_billing_setup_intent_response_200.py index 5010416..8d175dd 100644 --- a/src/graphn/_generated/models/create_billing_setup_intent_response_200.py +++ b/src/graphn/_generated/models/create_billing_setup_intent_response_200.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="CreateBillingSetupIntentResponse200") diff --git a/src/graphn/_generated/models/custom_model.py b/src/graphn/_generated/models/custom_model.py index 9dfcb9d..0c31546 100644 --- a/src/graphn/_generated/models/custom_model.py +++ b/src/graphn/_generated/models/custom_model.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.capability import Capability from ..models.custom_model_artifact_type import CustomModelArtifactType diff --git a/src/graphn/_generated/models/custom_model_access.py b/src/graphn/_generated/models/custom_model_access.py index cdd8efe..92dd676 100644 --- a/src/graphn/_generated/models/custom_model_access.py +++ b/src/graphn/_generated/models/custom_model_access.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="CustomModelAccess") diff --git a/src/graphn/_generated/models/custom_model_artifact_type.py b/src/graphn/_generated/models/custom_model_artifact_type.py index f2adb23..4ed4f85 100644 --- a/src/graphn/_generated/models/custom_model_artifact_type.py +++ b/src/graphn/_generated/models/custom_model_artifact_type.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class CustomModelArtifactType(str, Enum): +class CustomModelArtifactType(StrEnum): BASE = "base" LORA = "lora" diff --git a/src/graphn/_generated/models/custom_model_create.py b/src/graphn/_generated/models/custom_model_create.py index 6445de4..9fd03ab 100644 --- a/src/graphn/_generated/models/custom_model_create.py +++ b/src/graphn/_generated/models/custom_model_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..models.capability import Capability from ..models.custom_model_create_quantization import CustomModelCreateQuantization diff --git a/src/graphn/_generated/models/custom_model_create_quantization.py b/src/graphn/_generated/models/custom_model_create_quantization.py index 03fc5cd..2981e0d 100644 --- a/src/graphn/_generated/models/custom_model_create_quantization.py +++ b/src/graphn/_generated/models/custom_model_create_quantization.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class CustomModelCreateQuantization(str, Enum): +class CustomModelCreateQuantization(StrEnum): AWQ = "awq" FP8 = "fp8" GGUF = "gguf" diff --git a/src/graphn/_generated/models/custom_model_list.py b/src/graphn/_generated/models/custom_model_list.py index df1821d..3df915c 100644 --- a/src/graphn/_generated/models/custom_model_list.py +++ b/src/graphn/_generated/models/custom_model_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/custom_model_quantization.py b/src/graphn/_generated/models/custom_model_quantization.py index acf37b7..10b4c22 100644 --- a/src/graphn/_generated/models/custom_model_quantization.py +++ b/src/graphn/_generated/models/custom_model_quantization.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class CustomModelQuantization(str, Enum): +class CustomModelQuantization(StrEnum): AWQ = "awq" FP8 = "fp8" GGUF = "gguf" diff --git a/src/graphn/_generated/models/custom_model_status.py b/src/graphn/_generated/models/custom_model_status.py index c870d51..f41dc5a 100644 --- a/src/graphn/_generated/models/custom_model_status.py +++ b/src/graphn/_generated/models/custom_model_status.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class CustomModelStatus(str, Enum): +class CustomModelStatus(StrEnum): DELETING = "deleting" DEPLOYING = "deploying" FAILED = "failed" diff --git a/src/graphn/_generated/models/custom_model_update.py b/src/graphn/_generated/models/custom_model_update.py index c8ccf80..97eb84c 100644 --- a/src/graphn/_generated/models/custom_model_update.py +++ b/src/graphn/_generated/models/custom_model_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/discover_imported_models_request.py b/src/graphn/_generated/models/discover_imported_models_request.py index f53d521..1d80028 100644 --- a/src/graphn/_generated/models/discover_imported_models_request.py +++ b/src/graphn/_generated/models/discover_imported_models_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="DiscoverImportedModelsRequest") diff --git a/src/graphn/_generated/models/discover_imported_models_response.py b/src/graphn/_generated/models/discover_imported_models_response.py index b1397b5..ecf5eae 100644 --- a/src/graphn/_generated/models/discover_imported_models_response.py +++ b/src/graphn/_generated/models/discover_imported_models_response.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self if TYPE_CHECKING: from ..models.discovered_imported_model import DiscoveredImportedModel diff --git a/src/graphn/_generated/models/discovered_imported_model.py b/src/graphn/_generated/models/discovered_imported_model.py index b1254f7..c121872 100644 --- a/src/graphn/_generated/models/discovered_imported_model.py +++ b/src/graphn/_generated/models/discovered_imported_model.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="DiscoveredImportedModel") diff --git a/src/graphn/_generated/models/document_media.py b/src/graphn/_generated/models/document_media.py new file mode 100644 index 0000000..c480aee --- /dev/null +++ b/src/graphn/_generated/models/document_media.py @@ -0,0 +1,70 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="DocumentMedia") + + +@_attrs_define +class DocumentMedia: + """ + Attributes: + url (str): + expires_at (datetime.datetime): + expires_in (int): + content_type (str | Unset): + """ + + url: str + expires_at: datetime.datetime + expires_in: int + content_type: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + url = self.url + + expires_at = self.expires_at.isoformat() + + expires_in = self.expires_in + + content_type = self.content_type + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "url": url, + "expires_at": expires_at, + "expires_in": expires_in, + } + ) + if content_type is not UNSET: + field_dict["content_type"] = content_type + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + url = d.pop("url") + + expires_at = datetime.datetime.fromisoformat(d.pop("expires_at")) + + expires_in = d.pop("expires_in") + + content_type = d.pop("content_type", UNSET) + + document_media = cls( + url=url, + expires_at=expires_at, + expires_in=expires_in, + content_type=content_type, + ) + + return document_media diff --git a/src/graphn/_generated/models/embed_request.py b/src/graphn/_generated/models/embed_request.py index 288aa75..2d52f8c 100644 --- a/src/graphn/_generated/models/embed_request.py +++ b/src/graphn/_generated/models/embed_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/embed_response.py b/src/graphn/_generated/models/embed_response.py index a21f59b..624018a 100644 --- a/src/graphn/_generated/models/embed_response.py +++ b/src/graphn/_generated/models/embed_response.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="EmbedResponse") diff --git a/src/graphn/_generated/models/embedding_model.py b/src/graphn/_generated/models/embedding_model.py index 669b5c8..c931881 100644 --- a/src/graphn/_generated/models/embedding_model.py +++ b/src/graphn/_generated/models/embedding_model.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/embedding_model_list.py b/src/graphn/_generated/models/embedding_model_list.py index ae0f939..b1ce809 100644 --- a/src/graphn/_generated/models/embedding_model_list.py +++ b/src/graphn/_generated/models/embedding_model_list.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self if TYPE_CHECKING: from ..models.embedding_model import EmbeddingModel diff --git a/src/graphn/_generated/models/error.py b/src/graphn/_generated/models/error.py index 3c08f2f..01da0f2 100644 --- a/src/graphn/_generated/models/error.py +++ b/src/graphn/_generated/models/error.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="Error") diff --git a/src/graphn/_generated/models/execution.py b/src/graphn/_generated/models/execution.py index 60d702d..d26882f 100644 --- a/src/graphn/_generated/models/execution.py +++ b/src/graphn/_generated/models/execution.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/free_grant_result.py b/src/graphn/_generated/models/free_grant_result.py index 76a53a3..aab9d58 100644 --- a/src/graphn/_generated/models/free_grant_result.py +++ b/src/graphn/_generated/models/free_grant_result.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FreeGrantResult") diff --git a/src/graphn/_generated/models/function.py b/src/graphn/_generated/models/function.py index f46c2d7..569eae7 100644 --- a/src/graphn/_generated/models/function.py +++ b/src/graphn/_generated/models/function.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/function_create.py b/src/graphn/_generated/models/function_create.py index ec2c04b..0c6aed7 100644 --- a/src/graphn/_generated/models/function_create.py +++ b/src/graphn/_generated/models/function_create.py @@ -1,11 +1,11 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self +from ..models.function_create_type import FunctionCreateType from ..types import UNSET, Unset if TYPE_CHECKING: @@ -23,7 +23,7 @@ class FunctionCreate: """ Attributes: name (str): - type_ (str | Unset): + type_ (FunctionCreateType | Unset): description (str | Unset): files (FunctionCreateFiles | Unset): parameters_schema (FunctionCreateParametersSchema | Unset): @@ -33,7 +33,7 @@ class FunctionCreate: """ name: str - type_: str | Unset = UNSET + type_: FunctionCreateType | Unset = UNSET description: str | Unset = UNSET files: FunctionCreateFiles | Unset = UNSET parameters_schema: FunctionCreateParametersSchema | Unset = UNSET @@ -44,7 +44,9 @@ class FunctionCreate: def to_dict(self) -> dict[str, Any]: name = self.name - type_ = self.type_ + type_: str | Unset = UNSET + if not isinstance(self.type_, Unset): + type_ = self.type_.value description = self.description @@ -96,7 +98,12 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: d = dict(src_dict) name = d.pop("name") - type_ = d.pop("type", UNSET) + _type_ = d.pop("type", UNSET) + type_: FunctionCreateType | Unset + if isinstance(_type_, Unset): + type_ = UNSET + else: + type_ = FunctionCreateType(_type_) description = d.pop("description", UNSET) diff --git a/src/graphn/_generated/models/function_create_files.py b/src/graphn/_generated/models/function_create_files.py index f66edcc..90b1b1f 100644 --- a/src/graphn/_generated/models/function_create_files.py +++ b/src/graphn/_generated/models/function_create_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FunctionCreateFiles") @_attrs_define class FunctionCreateFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/function_create_parameters_schema.py b/src/graphn/_generated/models/function_create_parameters_schema.py index 1a4ff0c..b3ed288 100644 --- a/src/graphn/_generated/models/function_create_parameters_schema.py +++ b/src/graphn/_generated/models/function_create_parameters_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FunctionCreateParametersSchema") @_attrs_define class FunctionCreateParametersSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/function_create_type.py b/src/graphn/_generated/models/function_create_type.py new file mode 100644 index 0000000..e04fa81 --- /dev/null +++ b/src/graphn/_generated/models/function_create_type.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class FunctionCreateType(StrEnum): + BUILTIN = "builtin" + CUSTOM = "custom" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/function_dry_run_request.py b/src/graphn/_generated/models/function_dry_run_request.py index ca9aa20..cd85387 100644 --- a/src/graphn/_generated/models/function_dry_run_request.py +++ b/src/graphn/_generated/models/function_dry_run_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/function_dry_run_request_files.py b/src/graphn/_generated/models/function_dry_run_request_files.py index 5272a3c..70e66e2 100644 --- a/src/graphn/_generated/models/function_dry_run_request_files.py +++ b/src/graphn/_generated/models/function_dry_run_request_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FunctionDryRunRequestFiles") @_attrs_define class FunctionDryRunRequestFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/function_dry_run_request_input.py b/src/graphn/_generated/models/function_dry_run_request_input.py index fdbf446..a0853b6 100644 --- a/src/graphn/_generated/models/function_dry_run_request_input.py +++ b/src/graphn/_generated/models/function_dry_run_request_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FunctionDryRunRequestInput") @_attrs_define class FunctionDryRunRequestInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/function_list.py b/src/graphn/_generated/models/function_list.py index f0d2523..b36c257 100644 --- a/src/graphn/_generated/models/function_list.py +++ b/src/graphn/_generated/models/function_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/function_spec.py b/src/graphn/_generated/models/function_spec.py index a602fcb..42bc88f 100644 --- a/src/graphn/_generated/models/function_spec.py +++ b/src/graphn/_generated/models/function_spec.py @@ -1,12 +1,12 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self +from ..models.function_spec_type import FunctionSpecType from ..types import UNSET, Unset if TYPE_CHECKING: @@ -21,7 +21,7 @@ class FunctionSpec: """ Attributes: - type_ (str | Unset): + type_ (FunctionSpecType | Unset): description (str | Unset): files (FunctionSpecFiles | Unset): parameters_schema (FunctionSpecParametersSchema | Unset): @@ -29,7 +29,7 @@ class FunctionSpec: memory_mb (int | Unset): """ - type_: str | Unset = UNSET + type_: FunctionSpecType | Unset = UNSET description: str | Unset = UNSET files: FunctionSpecFiles | Unset = UNSET parameters_schema: FunctionSpecParametersSchema | Unset = UNSET @@ -38,7 +38,9 @@ class FunctionSpec: additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: - type_ = self.type_ + type_: str | Unset = UNSET + if not isinstance(self.type_, Unset): + type_ = self.type_.value description = self.description @@ -80,7 +82,12 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: ) d = dict(src_dict) - type_ = d.pop("type", UNSET) + _type_ = d.pop("type", UNSET) + type_: FunctionSpecType | Unset + if isinstance(_type_, Unset): + type_ = UNSET + else: + type_ = FunctionSpecType(_type_) description = d.pop("description", UNSET) diff --git a/src/graphn/_generated/models/function_spec_files.py b/src/graphn/_generated/models/function_spec_files.py index e7a85f9..0f16332 100644 --- a/src/graphn/_generated/models/function_spec_files.py +++ b/src/graphn/_generated/models/function_spec_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FunctionSpecFiles") @_attrs_define class FunctionSpecFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/function_spec_parameters_schema.py b/src/graphn/_generated/models/function_spec_parameters_schema.py index c047214..c970d7e 100644 --- a/src/graphn/_generated/models/function_spec_parameters_schema.py +++ b/src/graphn/_generated/models/function_spec_parameters_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FunctionSpecParametersSchema") @_attrs_define class FunctionSpecParametersSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/function_spec_type.py b/src/graphn/_generated/models/function_spec_type.py new file mode 100644 index 0000000..a89802d --- /dev/null +++ b/src/graphn/_generated/models/function_spec_type.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class FunctionSpecType(StrEnum): + BUILTIN = "builtin" + CUSTOM = "custom" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/function_test_request.py b/src/graphn/_generated/models/function_test_request.py index 48661d1..3afdcf6 100644 --- a/src/graphn/_generated/models/function_test_request.py +++ b/src/graphn/_generated/models/function_test_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/function_test_request_input.py b/src/graphn/_generated/models/function_test_request_input.py index 0f84f14..e020718 100644 --- a/src/graphn/_generated/models/function_test_request_input.py +++ b/src/graphn/_generated/models/function_test_request_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FunctionTestRequestInput") @_attrs_define class FunctionTestRequestInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/function_test_response.py b/src/graphn/_generated/models/function_test_response.py index f44adbe..e062ca0 100644 --- a/src/graphn/_generated/models/function_test_response.py +++ b/src/graphn/_generated/models/function_test_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/function_update.py b/src/graphn/_generated/models/function_update.py index 6a5118e..aecea85 100644 --- a/src/graphn/_generated/models/function_update.py +++ b/src/graphn/_generated/models/function_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/function_update_files.py b/src/graphn/_generated/models/function_update_files.py index 725c18b..69c8c1d 100644 --- a/src/graphn/_generated/models/function_update_files.py +++ b/src/graphn/_generated/models/function_update_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FunctionUpdateFiles") @_attrs_define class FunctionUpdateFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/function_update_parameters_schema.py b/src/graphn/_generated/models/function_update_parameters_schema.py index 723bf4e..23f1731 100644 --- a/src/graphn/_generated/models/function_update_parameters_schema.py +++ b/src/graphn/_generated/models/function_update_parameters_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="FunctionUpdateParametersSchema") @_attrs_define class FunctionUpdateParametersSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/get_billing_invoice_response_200.py b/src/graphn/_generated/models/get_billing_invoice_response_200.py index 455d6fa..0e0839d 100644 --- a/src/graphn/_generated/models/get_billing_invoice_response_200.py +++ b/src/graphn/_generated/models/get_billing_invoice_response_200.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.invoice import Invoice diff --git a/src/graphn/_generated/models/get_billing_usage_filter.py b/src/graphn/_generated/models/get_billing_usage_filter.py index 54e0ac0..4d01926 100644 --- a/src/graphn/_generated/models/get_billing_usage_filter.py +++ b/src/graphn/_generated/models/get_billing_usage_filter.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class GetBillingUsageFilter(str, Enum): +class GetBillingUsageFilter(StrEnum): ONE_DAY = "ONE_DAY" ONE_YEAR = "ONE_YEAR" SEVEN_DAY = "SEVEN_DAY" diff --git a/src/graphn/_generated/models/get_inference_router_analytics_interval.py b/src/graphn/_generated/models/get_inference_router_analytics_interval.py new file mode 100644 index 0000000..b7bd9ce --- /dev/null +++ b/src/graphn/_generated/models/get_inference_router_analytics_interval.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class GetInferenceRouterAnalyticsInterval(StrEnum): + DAY = "day" + HOUR = "hour" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/google_pub_sub_envelope.py b/src/graphn/_generated/models/google_pub_sub_envelope.py new file mode 100644 index 0000000..0957261 --- /dev/null +++ b/src/graphn/_generated/models/google_pub_sub_envelope.py @@ -0,0 +1,75 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +if TYPE_CHECKING: + from ..models.google_pub_sub_envelope_message import GooglePubSubEnvelopeMessage + + +T = TypeVar("T", bound="GooglePubSubEnvelope") + + +@_attrs_define +class GooglePubSubEnvelope: + """ + Attributes: + subscription (str): + message (GooglePubSubEnvelopeMessage): + """ + + subscription: str + message: GooglePubSubEnvelopeMessage + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + subscription = self.subscription + + message = self.message.to_dict() + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "subscription": subscription, + "message": message, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.google_pub_sub_envelope_message import GooglePubSubEnvelopeMessage + + d = dict(src_dict) + subscription = d.pop("subscription") + + message = GooglePubSubEnvelopeMessage.from_dict(d.pop("message")) + + google_pub_sub_envelope = cls( + subscription=subscription, + message=message, + ) + + google_pub_sub_envelope.additional_properties = d + return google_pub_sub_envelope + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/google_pub_sub_envelope_message.py b/src/graphn/_generated/models/google_pub_sub_envelope_message.py new file mode 100644 index 0000000..591dcfd --- /dev/null +++ b/src/graphn/_generated/models/google_pub_sub_envelope_message.py @@ -0,0 +1,69 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="GooglePubSubEnvelopeMessage") + + +@_attrs_define +class GooglePubSubEnvelopeMessage: + """ + Attributes: + data (str): Base64-encoded Gmail notification JSON. + message_id (str): + """ + + data: str + message_id: str + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + data = self.data + + message_id = self.message_id + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "data": data, + "messageId": message_id, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + data = d.pop("data") + + message_id = d.pop("messageId") + + google_pub_sub_envelope_message = cls( + data=data, + message_id=message_id, + ) + + google_pub_sub_envelope_message.additional_properties = d + return google_pub_sub_envelope_message + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/gpu_hours_response.py b/src/graphn/_generated/models/gpu_hours_response.py index b743bca..ce741f7 100644 --- a/src/graphn/_generated/models/gpu_hours_response.py +++ b/src/graphn/_generated/models/gpu_hours_response.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="GpuHoursResponse") diff --git a/src/graphn/_generated/models/id_list_request.py b/src/graphn/_generated/models/id_list_request.py index de9b180..ebb4d74 100644 --- a/src/graphn/_generated/models/id_list_request.py +++ b/src/graphn/_generated/models/id_list_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="IdListRequest") diff --git a/src/graphn/_generated/models/imported_model.py b/src/graphn/_generated/models/imported_model.py index 037644d..b655062 100644 --- a/src/graphn/_generated/models/imported_model.py +++ b/src/graphn/_generated/models/imported_model.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/imported_model_create.py b/src/graphn/_generated/models/imported_model_create.py index f5c3938..e573e64 100644 --- a/src/graphn/_generated/models/imported_model_create.py +++ b/src/graphn/_generated/models/imported_model_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/imported_model_list.py b/src/graphn/_generated/models/imported_model_list.py index 97439aa..85b04f8 100644 --- a/src/graphn/_generated/models/imported_model_list.py +++ b/src/graphn/_generated/models/imported_model_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/imported_model_update.py b/src/graphn/_generated/models/imported_model_update.py index fbd0f8f..d8f1ac8 100644 --- a/src/graphn/_generated/models/imported_model_update.py +++ b/src/graphn/_generated/models/imported_model_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/inference_error.py b/src/graphn/_generated/models/inference_error.py index 6a2929f..d8b4247 100644 --- a/src/graphn/_generated/models/inference_error.py +++ b/src/graphn/_generated/models/inference_error.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/inference_error_error.py b/src/graphn/_generated/models/inference_error_error.py index d3ca67e..0521a5d 100644 --- a/src/graphn/_generated/models/inference_error_error.py +++ b/src/graphn/_generated/models/inference_error_error.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/inference_router.py b/src/graphn/_generated/models/inference_router.py new file mode 100644 index 0000000..bcd01d4 --- /dev/null +++ b/src/graphn/_generated/models/inference_router.py @@ -0,0 +1,236 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.inference_router_scope import InferenceRouterScope +from ..models.inference_router_status import InferenceRouterStatus +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.inference_router_revision import InferenceRouterRevision + + +T = TypeVar("T", bound="InferenceRouter") + + +@_attrs_define +class InferenceRouter: + """ + Attributes: + id (str): `ir_...` for workspace routers; `auto` for the immutable platform adapter. + name (str): + display_name (str): + scope (InferenceRouterScope): + status (InferenceRouterStatus): + created_at (datetime.datetime): + updated_at (datetime.datetime): + workspace_id (str | Unset): + owner_id (str | Unset): + draft_revision (InferenceRouterRevision | None | Unset): + pending_revision (InferenceRouterRevision | None | Unset): + active_revision (InferenceRouterRevision | None | Unset): + """ + + id: str + name: str + display_name: str + scope: InferenceRouterScope + status: InferenceRouterStatus + created_at: datetime.datetime + updated_at: datetime.datetime + workspace_id: str | Unset = UNSET + owner_id: str | Unset = UNSET + draft_revision: InferenceRouterRevision | None | Unset = UNSET + pending_revision: InferenceRouterRevision | None | Unset = UNSET + active_revision: InferenceRouterRevision | None | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + from ..models.inference_router_revision import InferenceRouterRevision + + id = self.id + + name = self.name + + display_name = self.display_name + + scope = self.scope.value + + status = self.status.value + + created_at = self.created_at.isoformat() + + updated_at = self.updated_at.isoformat() + + workspace_id = self.workspace_id + + owner_id = self.owner_id + + draft_revision: dict[str, Any] | None | Unset + if isinstance(self.draft_revision, Unset): + draft_revision = UNSET + elif isinstance(self.draft_revision, InferenceRouterRevision): + draft_revision = self.draft_revision.to_dict() + else: + draft_revision = self.draft_revision + + pending_revision: dict[str, Any] | None | Unset + if isinstance(self.pending_revision, Unset): + pending_revision = UNSET + elif isinstance(self.pending_revision, InferenceRouterRevision): + pending_revision = self.pending_revision.to_dict() + else: + pending_revision = self.pending_revision + + active_revision: dict[str, Any] | None | Unset + if isinstance(self.active_revision, Unset): + active_revision = UNSET + elif isinstance(self.active_revision, InferenceRouterRevision): + active_revision = self.active_revision.to_dict() + else: + active_revision = self.active_revision + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "id": id, + "name": name, + "display_name": display_name, + "scope": scope, + "status": status, + "created_at": created_at, + "updated_at": updated_at, + } + ) + if workspace_id is not UNSET: + field_dict["workspace_id"] = workspace_id + if owner_id is not UNSET: + field_dict["owner_id"] = owner_id + if draft_revision is not UNSET: + field_dict["draft_revision"] = draft_revision + if pending_revision is not UNSET: + field_dict["pending_revision"] = pending_revision + if active_revision is not UNSET: + field_dict["active_revision"] = active_revision + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router_revision import InferenceRouterRevision + + d = dict(src_dict) + id = d.pop("id") + + name = d.pop("name") + + display_name = d.pop("display_name") + + scope = InferenceRouterScope(d.pop("scope")) + + status = InferenceRouterStatus(d.pop("status")) + + created_at = datetime.datetime.fromisoformat(d.pop("created_at")) + + updated_at = datetime.datetime.fromisoformat(d.pop("updated_at")) + + workspace_id = d.pop("workspace_id", UNSET) + + owner_id = d.pop("owner_id", UNSET) + + def _parse_draft_revision( + data: object, + ) -> InferenceRouterRevision | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + draft_revision_type_1 = InferenceRouterRevision.from_dict(data) + + return draft_revision_type_1 + except (TypeError, ValueError, AttributeError, KeyError): + pass + return cast(InferenceRouterRevision | None | Unset, data) + + draft_revision = _parse_draft_revision(d.pop("draft_revision", UNSET)) + + def _parse_pending_revision( + data: object, + ) -> InferenceRouterRevision | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + pending_revision_type_1 = InferenceRouterRevision.from_dict(data) + + return pending_revision_type_1 + except (TypeError, ValueError, AttributeError, KeyError): + pass + return cast(InferenceRouterRevision | None | Unset, data) + + pending_revision = _parse_pending_revision(d.pop("pending_revision", UNSET)) + + def _parse_active_revision( + data: object, + ) -> InferenceRouterRevision | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + active_revision_type_1 = InferenceRouterRevision.from_dict(data) + + return active_revision_type_1 + except (TypeError, ValueError, AttributeError, KeyError): + pass + return cast(InferenceRouterRevision | None | Unset, data) + + active_revision = _parse_active_revision(d.pop("active_revision", UNSET)) + + inference_router = cls( + id=id, + name=name, + display_name=display_name, + scope=scope, + status=status, + created_at=created_at, + updated_at=updated_at, + workspace_id=workspace_id, + owner_id=owner_id, + draft_revision=draft_revision, + pending_revision=pending_revision, + active_revision=active_revision, + ) + + inference_router.additional_properties = d + return inference_router + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_analytics.py b/src/graphn/_generated/models/inference_router_analytics.py new file mode 100644 index 0000000..44946f5 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_analytics.py @@ -0,0 +1,291 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.inference_router_analytics_interval import ( + InferenceRouterAnalyticsInterval, +) +from ..models.inference_router_analytics_shared_candidate_runtime_status import ( + InferenceRouterAnalyticsSharedCandidateRuntimeStatus, +) + +if TYPE_CHECKING: + from ..models.inference_router_analytics_breakdown import ( + InferenceRouterAnalyticsBreakdown, + ) + from ..models.inference_router_analytics_metrics import ( + InferenceRouterAnalyticsMetrics, + ) + from ..models.inference_router_analytics_point import InferenceRouterAnalyticsPoint + + +T = TypeVar("T", bound="InferenceRouterAnalytics") + + +@_attrs_define +class InferenceRouterAnalytics: + """ + Attributes: + router_id (str): + interval (InferenceRouterAnalyticsInterval): + summary (InferenceRouterAnalyticsMetrics): + time_series (list[InferenceRouterAnalyticsPoint]): + model_breakdown (list[InferenceRouterAnalyticsBreakdown]): + decision_breakdown (list[InferenceRouterAnalyticsBreakdown]): + status_breakdown (list[InferenceRouterAnalyticsBreakdown]): + shard_breakdown (list[InferenceRouterAnalyticsBreakdown]): Requests attributed to the shard that served them, + which differs from the router's primary placement after a failover or during a shard migration. + shared_candidate_runtime_status (InferenceRouterAnalyticsSharedCandidateRuntimeStatus): + shared_candidate_runtime_refs_total (int): + shared_candidate_runtime_refs_included (int): + coverage_from (datetime.datetime | None): Earliest complete analytics bucket available from DynamoDB. + coverage_through (datetime.datetime | None): Exclusive end of complete analytics buckets proven by the ingestion + frontier. + complete (bool): True only when the requested range is fully inside analytics coverage. + """ + + router_id: str + interval: InferenceRouterAnalyticsInterval + summary: InferenceRouterAnalyticsMetrics + time_series: list[InferenceRouterAnalyticsPoint] + model_breakdown: list[InferenceRouterAnalyticsBreakdown] + decision_breakdown: list[InferenceRouterAnalyticsBreakdown] + status_breakdown: list[InferenceRouterAnalyticsBreakdown] + shard_breakdown: list[InferenceRouterAnalyticsBreakdown] + shared_candidate_runtime_status: ( + InferenceRouterAnalyticsSharedCandidateRuntimeStatus + ) + shared_candidate_runtime_refs_total: int + shared_candidate_runtime_refs_included: int + coverage_from: datetime.datetime | None + coverage_through: datetime.datetime | None + complete: bool + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + router_id = self.router_id + + interval = self.interval.value + + summary = self.summary.to_dict() + + time_series = [] + for time_series_item_data in self.time_series: + time_series_item = time_series_item_data.to_dict() + time_series.append(time_series_item) + + model_breakdown = [] + for model_breakdown_item_data in self.model_breakdown: + model_breakdown_item = model_breakdown_item_data.to_dict() + model_breakdown.append(model_breakdown_item) + + decision_breakdown = [] + for decision_breakdown_item_data in self.decision_breakdown: + decision_breakdown_item = decision_breakdown_item_data.to_dict() + decision_breakdown.append(decision_breakdown_item) + + status_breakdown = [] + for status_breakdown_item_data in self.status_breakdown: + status_breakdown_item = status_breakdown_item_data.to_dict() + status_breakdown.append(status_breakdown_item) + + shard_breakdown = [] + for shard_breakdown_item_data in self.shard_breakdown: + shard_breakdown_item = shard_breakdown_item_data.to_dict() + shard_breakdown.append(shard_breakdown_item) + + shared_candidate_runtime_status = self.shared_candidate_runtime_status.value + + shared_candidate_runtime_refs_total = self.shared_candidate_runtime_refs_total + + shared_candidate_runtime_refs_included = ( + self.shared_candidate_runtime_refs_included + ) + + coverage_from: None | str + if isinstance(self.coverage_from, datetime.datetime): + coverage_from = self.coverage_from.isoformat() + else: + coverage_from = self.coverage_from + + coverage_through: None | str + if isinstance(self.coverage_through, datetime.datetime): + coverage_through = self.coverage_through.isoformat() + else: + coverage_through = self.coverage_through + + complete = self.complete + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "router_id": router_id, + "interval": interval, + "summary": summary, + "time_series": time_series, + "model_breakdown": model_breakdown, + "decision_breakdown": decision_breakdown, + "status_breakdown": status_breakdown, + "shard_breakdown": shard_breakdown, + "shared_candidate_runtime_status": shared_candidate_runtime_status, + "shared_candidate_runtime_refs_total": shared_candidate_runtime_refs_total, + "shared_candidate_runtime_refs_included": shared_candidate_runtime_refs_included, + "coverage_from": coverage_from, + "coverage_through": coverage_through, + "complete": complete, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router_analytics_breakdown import ( + InferenceRouterAnalyticsBreakdown, + ) + from ..models.inference_router_analytics_metrics import ( + InferenceRouterAnalyticsMetrics, + ) + from ..models.inference_router_analytics_point import ( + InferenceRouterAnalyticsPoint, + ) + + d = dict(src_dict) + router_id = d.pop("router_id") + + interval = InferenceRouterAnalyticsInterval(d.pop("interval")) + + summary = InferenceRouterAnalyticsMetrics.from_dict(d.pop("summary")) + + time_series = [] + _time_series = d.pop("time_series") + for time_series_item_data in _time_series: + time_series_item = InferenceRouterAnalyticsPoint.from_dict( + time_series_item_data + ) + + time_series.append(time_series_item) + + model_breakdown = [] + _model_breakdown = d.pop("model_breakdown") + for model_breakdown_item_data in _model_breakdown: + model_breakdown_item = InferenceRouterAnalyticsBreakdown.from_dict( + model_breakdown_item_data + ) + + model_breakdown.append(model_breakdown_item) + + decision_breakdown = [] + _decision_breakdown = d.pop("decision_breakdown") + for decision_breakdown_item_data in _decision_breakdown: + decision_breakdown_item = InferenceRouterAnalyticsBreakdown.from_dict( + decision_breakdown_item_data + ) + + decision_breakdown.append(decision_breakdown_item) + + status_breakdown = [] + _status_breakdown = d.pop("status_breakdown") + for status_breakdown_item_data in _status_breakdown: + status_breakdown_item = InferenceRouterAnalyticsBreakdown.from_dict( + status_breakdown_item_data + ) + + status_breakdown.append(status_breakdown_item) + + shard_breakdown = [] + _shard_breakdown = d.pop("shard_breakdown") + for shard_breakdown_item_data in _shard_breakdown: + shard_breakdown_item = InferenceRouterAnalyticsBreakdown.from_dict( + shard_breakdown_item_data + ) + + shard_breakdown.append(shard_breakdown_item) + + shared_candidate_runtime_status = ( + InferenceRouterAnalyticsSharedCandidateRuntimeStatus( + d.pop("shared_candidate_runtime_status") + ) + ) + + shared_candidate_runtime_refs_total = d.pop( + "shared_candidate_runtime_refs_total" + ) + + shared_candidate_runtime_refs_included = d.pop( + "shared_candidate_runtime_refs_included" + ) + + def _parse_coverage_from(data: object) -> datetime.datetime | None: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + coverage_from_type_0 = datetime.datetime.fromisoformat(data) + + return coverage_from_type_0 + except (TypeError, ValueError, AttributeError, KeyError): + pass + return cast(datetime.datetime | None, data) + + coverage_from = _parse_coverage_from(d.pop("coverage_from")) + + def _parse_coverage_through(data: object) -> datetime.datetime | None: + if data is None: + return data + try: + if not isinstance(data, str): + raise TypeError() + coverage_through_type_0 = datetime.datetime.fromisoformat(data) + + return coverage_through_type_0 + except (TypeError, ValueError, AttributeError, KeyError): + pass + return cast(datetime.datetime | None, data) + + coverage_through = _parse_coverage_through(d.pop("coverage_through")) + + complete = d.pop("complete") + + inference_router_analytics = cls( + router_id=router_id, + interval=interval, + summary=summary, + time_series=time_series, + model_breakdown=model_breakdown, + decision_breakdown=decision_breakdown, + status_breakdown=status_breakdown, + shard_breakdown=shard_breakdown, + shared_candidate_runtime_status=shared_candidate_runtime_status, + shared_candidate_runtime_refs_total=shared_candidate_runtime_refs_total, + shared_candidate_runtime_refs_included=shared_candidate_runtime_refs_included, + coverage_from=coverage_from, + coverage_through=coverage_through, + complete=complete, + ) + + inference_router_analytics.additional_properties = d + return inference_router_analytics + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_analytics_breakdown.py b/src/graphn/_generated/models/inference_router_analytics_breakdown.py new file mode 100644 index 0000000..e4fd93e --- /dev/null +++ b/src/graphn/_generated/models/inference_router_analytics_breakdown.py @@ -0,0 +1,99 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.inference_router_analytics_metrics import ( + InferenceRouterAnalyticsMetrics, + ) + + +T = TypeVar("T", bound="InferenceRouterAnalyticsBreakdown") + + +@_attrs_define +class InferenceRouterAnalyticsBreakdown: + """ + Attributes: + key (str): + metrics (InferenceRouterAnalyticsMetrics): + model_ref (str | Unset): + model_source (str | Unset): + """ + + key: str + metrics: InferenceRouterAnalyticsMetrics + model_ref: str | Unset = UNSET + model_source: str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + key = self.key + + metrics = self.metrics.to_dict() + + model_ref = self.model_ref + + model_source = self.model_source + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "key": key, + "metrics": metrics, + } + ) + if model_ref is not UNSET: + field_dict["model_ref"] = model_ref + if model_source is not UNSET: + field_dict["model_source"] = model_source + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router_analytics_metrics import ( + InferenceRouterAnalyticsMetrics, + ) + + d = dict(src_dict) + key = d.pop("key") + + metrics = InferenceRouterAnalyticsMetrics.from_dict(d.pop("metrics")) + + model_ref = d.pop("model_ref", UNSET) + + model_source = d.pop("model_source", UNSET) + + inference_router_analytics_breakdown = cls( + key=key, + metrics=metrics, + model_ref=model_ref, + model_source=model_source, + ) + + inference_router_analytics_breakdown.additional_properties = d + return inference_router_analytics_breakdown + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_analytics_interval.py b/src/graphn/_generated/models/inference_router_analytics_interval.py new file mode 100644 index 0000000..fd9ffeb --- /dev/null +++ b/src/graphn/_generated/models/inference_router_analytics_interval.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class InferenceRouterAnalyticsInterval(StrEnum): + DAY = "day" + HOUR = "hour" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_analytics_metrics.py b/src/graphn/_generated/models/inference_router_analytics_metrics.py new file mode 100644 index 0000000..d3d2ca0 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_analytics_metrics.py @@ -0,0 +1,194 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="InferenceRouterAnalyticsMetrics") + + +@_attrs_define +class InferenceRouterAnalyticsMetrics: + """ + Attributes: + requests (int): + input_tokens (float): + output_tokens (float): + total_tokens (float): + success_count (int): + error_count (int): + duration_ms_sum (float): + average_latency_ms (float): + estimated_cost (float | None): Sum of event-provided estimated_cost_usd; no local rates are applied. + shared_candidate_gpu_seconds (float | None): Shared runtime for historically selected custom models, not router- + attributed cost. + approximate_p50_latency_ms (float | None | Unset): + approximate_p95_latency_ms (float | None | Unset): + """ + + requests: int + input_tokens: float + output_tokens: float + total_tokens: float + success_count: int + error_count: int + duration_ms_sum: float + average_latency_ms: float + estimated_cost: float | None + shared_candidate_gpu_seconds: float | None + approximate_p50_latency_ms: float | None | Unset = UNSET + approximate_p95_latency_ms: float | None | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + requests = self.requests + + input_tokens = self.input_tokens + + output_tokens = self.output_tokens + + total_tokens = self.total_tokens + + success_count = self.success_count + + error_count = self.error_count + + duration_ms_sum = self.duration_ms_sum + + average_latency_ms = self.average_latency_ms + + estimated_cost: float | None + estimated_cost = self.estimated_cost + + shared_candidate_gpu_seconds: float | None + shared_candidate_gpu_seconds = self.shared_candidate_gpu_seconds + + approximate_p50_latency_ms: float | None | Unset + if isinstance(self.approximate_p50_latency_ms, Unset): + approximate_p50_latency_ms = UNSET + else: + approximate_p50_latency_ms = self.approximate_p50_latency_ms + + approximate_p95_latency_ms: float | None | Unset + if isinstance(self.approximate_p95_latency_ms, Unset): + approximate_p95_latency_ms = UNSET + else: + approximate_p95_latency_ms = self.approximate_p95_latency_ms + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "requests": requests, + "input_tokens": input_tokens, + "output_tokens": output_tokens, + "total_tokens": total_tokens, + "success_count": success_count, + "error_count": error_count, + "duration_ms_sum": duration_ms_sum, + "average_latency_ms": average_latency_ms, + "estimated_cost": estimated_cost, + "shared_candidate_gpu_seconds": shared_candidate_gpu_seconds, + } + ) + if approximate_p50_latency_ms is not UNSET: + field_dict["approximate_p50_latency_ms"] = approximate_p50_latency_ms + if approximate_p95_latency_ms is not UNSET: + field_dict["approximate_p95_latency_ms"] = approximate_p95_latency_ms + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + requests = d.pop("requests") + + input_tokens = d.pop("input_tokens") + + output_tokens = d.pop("output_tokens") + + total_tokens = d.pop("total_tokens") + + success_count = d.pop("success_count") + + error_count = d.pop("error_count") + + duration_ms_sum = d.pop("duration_ms_sum") + + average_latency_ms = d.pop("average_latency_ms") + + def _parse_estimated_cost(data: object) -> float | None: + if data is None: + return data + return cast(float | None, data) + + estimated_cost = _parse_estimated_cost(d.pop("estimated_cost")) + + def _parse_shared_candidate_gpu_seconds(data: object) -> float | None: + if data is None: + return data + return cast(float | None, data) + + shared_candidate_gpu_seconds = _parse_shared_candidate_gpu_seconds( + d.pop("shared_candidate_gpu_seconds") + ) + + def _parse_approximate_p50_latency_ms(data: object) -> float | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(float | None | Unset, data) + + approximate_p50_latency_ms = _parse_approximate_p50_latency_ms( + d.pop("approximate_p50_latency_ms", UNSET) + ) + + def _parse_approximate_p95_latency_ms(data: object) -> float | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(float | None | Unset, data) + + approximate_p95_latency_ms = _parse_approximate_p95_latency_ms( + d.pop("approximate_p95_latency_ms", UNSET) + ) + + inference_router_analytics_metrics = cls( + requests=requests, + input_tokens=input_tokens, + output_tokens=output_tokens, + total_tokens=total_tokens, + success_count=success_count, + error_count=error_count, + duration_ms_sum=duration_ms_sum, + average_latency_ms=average_latency_ms, + estimated_cost=estimated_cost, + shared_candidate_gpu_seconds=shared_candidate_gpu_seconds, + approximate_p50_latency_ms=approximate_p50_latency_ms, + approximate_p95_latency_ms=approximate_p95_latency_ms, + ) + + inference_router_analytics_metrics.additional_properties = d + return inference_router_analytics_metrics + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_analytics_point.py b/src/graphn/_generated/models/inference_router_analytics_point.py new file mode 100644 index 0000000..b07dcc2 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_analytics_point.py @@ -0,0 +1,80 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +if TYPE_CHECKING: + from ..models.inference_router_analytics_metrics import ( + InferenceRouterAnalyticsMetrics, + ) + + +T = TypeVar("T", bound="InferenceRouterAnalyticsPoint") + + +@_attrs_define +class InferenceRouterAnalyticsPoint: + """ + Attributes: + timestamp (datetime.datetime): + metrics (InferenceRouterAnalyticsMetrics): + """ + + timestamp: datetime.datetime + metrics: InferenceRouterAnalyticsMetrics + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + timestamp = self.timestamp.isoformat() + + metrics = self.metrics.to_dict() + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "timestamp": timestamp, + "metrics": metrics, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router_analytics_metrics import ( + InferenceRouterAnalyticsMetrics, + ) + + d = dict(src_dict) + timestamp = datetime.datetime.fromisoformat(d.pop("timestamp")) + + metrics = InferenceRouterAnalyticsMetrics.from_dict(d.pop("metrics")) + + inference_router_analytics_point = cls( + timestamp=timestamp, + metrics=metrics, + ) + + inference_router_analytics_point.additional_properties = d + return inference_router_analytics_point + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_analytics_shared_candidate_runtime_status.py b/src/graphn/_generated/models/inference_router_analytics_shared_candidate_runtime_status.py new file mode 100644 index 0000000..da55f98 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_analytics_shared_candidate_runtime_status.py @@ -0,0 +1,10 @@ +from enum import StrEnum + + +class InferenceRouterAnalyticsSharedCandidateRuntimeStatus(StrEnum): + COMPLETE = "complete" + DEGRADED = "degraded" + NOT_APPLICABLE = "not_applicable" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_candidate.py b/src/graphn/_generated/models/inference_router_candidate.py new file mode 100644 index 0000000..342cca7 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_candidate.py @@ -0,0 +1,66 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define + +T = TypeVar("T", bound="InferenceRouterCandidate") + + +@_attrs_define +class InferenceRouterCandidate: + """ + Attributes: + target (str): Unprefixed built-in alias or `custom:cm_...` logical reference. + lanes (list[str]): + weight (int): + order (int): + """ + + target: str + lanes: list[str] + weight: int + order: int + + def to_dict(self) -> dict[str, Any]: + target = self.target + + lanes = self.lanes + + weight = self.weight + + order = self.order + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "target": target, + "lanes": lanes, + "weight": weight, + "order": order, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + target = d.pop("target") + + lanes = cast(list[str], d.pop("lanes")) + + weight = d.pop("weight") + + order = d.pop("order") + + inference_router_candidate = cls( + target=target, + lanes=lanes, + weight=weight, + order=order, + ) + + return inference_router_candidate diff --git a/src/graphn/_generated/models/inference_router_config.py b/src/graphn/_generated/models/inference_router_config.py new file mode 100644 index 0000000..f11fa69 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_config.py @@ -0,0 +1,90 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..models.inference_router_config_fallback_policy import ( + InferenceRouterConfigFallbackPolicy, +) +from ..models.inference_router_config_preset import InferenceRouterConfigPreset +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.inference_router_candidate import InferenceRouterCandidate + + +T = TypeVar("T", bound="InferenceRouterConfig") + + +@_attrs_define +class InferenceRouterConfig: + """ + Attributes: + preset (InferenceRouterConfigPreset): + candidates (list[InferenceRouterCandidate]): + fallback_policy (InferenceRouterConfigFallbackPolicy | Unset): What callers get when no shard can classify the + request. `degraded_general` serves the highest-weight general candidate without classification, trading routing + quality for availability. Default: InferenceRouterConfigFallbackPolicy.FAIL_CLOSED. + """ + + preset: InferenceRouterConfigPreset + candidates: list[InferenceRouterCandidate] + fallback_policy: InferenceRouterConfigFallbackPolicy | Unset = ( + InferenceRouterConfigFallbackPolicy.FAIL_CLOSED + ) + + def to_dict(self) -> dict[str, Any]: + preset = self.preset.value + + candidates = [] + for candidates_item_data in self.candidates: + candidates_item = candidates_item_data.to_dict() + candidates.append(candidates_item) + + fallback_policy: str | Unset = UNSET + if not isinstance(self.fallback_policy, Unset): + fallback_policy = self.fallback_policy.value + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "preset": preset, + "candidates": candidates, + } + ) + if fallback_policy is not UNSET: + field_dict["fallback_policy"] = fallback_policy + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router_candidate import InferenceRouterCandidate + + d = dict(src_dict) + preset = InferenceRouterConfigPreset(d.pop("preset")) + + candidates = [] + _candidates = d.pop("candidates") + for candidates_item_data in _candidates: + candidates_item = InferenceRouterCandidate.from_dict(candidates_item_data) + + candidates.append(candidates_item) + + _fallback_policy = d.pop("fallback_policy", UNSET) + fallback_policy: InferenceRouterConfigFallbackPolicy | Unset + if isinstance(_fallback_policy, Unset): + fallback_policy = UNSET + else: + fallback_policy = InferenceRouterConfigFallbackPolicy(_fallback_policy) + + inference_router_config = cls( + preset=preset, + candidates=candidates, + fallback_policy=fallback_policy, + ) + + return inference_router_config diff --git a/src/graphn/_generated/models/inference_router_config_fallback_policy.py b/src/graphn/_generated/models/inference_router_config_fallback_policy.py new file mode 100644 index 0000000..9b69ca3 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_config_fallback_policy.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class InferenceRouterConfigFallbackPolicy(StrEnum): + DEGRADED_GENERAL = "degraded_general" + FAIL_CLOSED = "fail_closed" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_config_preset.py b/src/graphn/_generated/models/inference_router_config_preset.py new file mode 100644 index 0000000..0bf9a7d --- /dev/null +++ b/src/graphn/_generated/models/inference_router_config_preset.py @@ -0,0 +1,8 @@ +from enum import StrEnum + + +class InferenceRouterConfigPreset(StrEnum): + BALANCED = "balanced" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_create.py b/src/graphn/_generated/models/inference_router_create.py new file mode 100644 index 0000000..0ac38f2 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_create.py @@ -0,0 +1,106 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..models.inference_router_create_fallback_policy import ( + InferenceRouterCreateFallbackPolicy, +) +from ..models.inference_router_create_preset import InferenceRouterCreatePreset +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.inference_router_candidate import InferenceRouterCandidate + + +T = TypeVar("T", bound="InferenceRouterCreate") + + +@_attrs_define +class InferenceRouterCreate: + """ + Attributes: + name (str): + preset (InferenceRouterCreatePreset): + candidates (list[InferenceRouterCandidate]): + display_name (str | Unset): + fallback_policy (InferenceRouterCreateFallbackPolicy | Unset): Default: + InferenceRouterCreateFallbackPolicy.FAIL_CLOSED. + """ + + name: str + preset: InferenceRouterCreatePreset + candidates: list[InferenceRouterCandidate] + display_name: str | Unset = UNSET + fallback_policy: InferenceRouterCreateFallbackPolicy | Unset = ( + InferenceRouterCreateFallbackPolicy.FAIL_CLOSED + ) + + def to_dict(self) -> dict[str, Any]: + name = self.name + + preset = self.preset.value + + candidates = [] + for candidates_item_data in self.candidates: + candidates_item = candidates_item_data.to_dict() + candidates.append(candidates_item) + + display_name = self.display_name + + fallback_policy: str | Unset = UNSET + if not isinstance(self.fallback_policy, Unset): + fallback_policy = self.fallback_policy.value + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "name": name, + "preset": preset, + "candidates": candidates, + } + ) + if display_name is not UNSET: + field_dict["display_name"] = display_name + if fallback_policy is not UNSET: + field_dict["fallback_policy"] = fallback_policy + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router_candidate import InferenceRouterCandidate + + d = dict(src_dict) + name = d.pop("name") + + preset = InferenceRouterCreatePreset(d.pop("preset")) + + candidates = [] + _candidates = d.pop("candidates") + for candidates_item_data in _candidates: + candidates_item = InferenceRouterCandidate.from_dict(candidates_item_data) + + candidates.append(candidates_item) + + display_name = d.pop("display_name", UNSET) + + _fallback_policy = d.pop("fallback_policy", UNSET) + fallback_policy: InferenceRouterCreateFallbackPolicy | Unset + if isinstance(_fallback_policy, Unset): + fallback_policy = UNSET + else: + fallback_policy = InferenceRouterCreateFallbackPolicy(_fallback_policy) + + inference_router_create = cls( + name=name, + preset=preset, + candidates=candidates, + display_name=display_name, + fallback_policy=fallback_policy, + ) + + return inference_router_create diff --git a/src/graphn/_generated/models/inference_router_create_fallback_policy.py b/src/graphn/_generated/models/inference_router_create_fallback_policy.py new file mode 100644 index 0000000..bfb56ae --- /dev/null +++ b/src/graphn/_generated/models/inference_router_create_fallback_policy.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class InferenceRouterCreateFallbackPolicy(StrEnum): + DEGRADED_GENERAL = "degraded_general" + FAIL_CLOSED = "fail_closed" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_create_preset.py b/src/graphn/_generated/models/inference_router_create_preset.py new file mode 100644 index 0000000..a627fd6 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_create_preset.py @@ -0,0 +1,8 @@ +from enum import StrEnum + + +class InferenceRouterCreatePreset(StrEnum): + BALANCED = "balanced" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_lane.py b/src/graphn/_generated/models/inference_router_lane.py new file mode 100644 index 0000000..b575d86 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_lane.py @@ -0,0 +1,140 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.inference_router_lane_match import InferenceRouterLaneMatch +from ..types import UNSET, Unset + +T = TypeVar("T", bound="InferenceRouterLane") + + +@_attrs_define +class InferenceRouterLane: + """ + Attributes: + id (str): + reference (str): The value to put in a router candidate's `lanes`. + display_name (str): + match (InferenceRouterLaneMatch): + phrases (list[str]): + version (int): + used_by (list[str]): IDs of routers whose draft, pending, active, or draining revision references this lane. A + previous revision keeps draining from its shard for a while after a newer one activates, so a router can stay + listed (and DELETE can stay 409) after its current revisions have dropped the lane. + created_at (datetime.datetime): + updated_at (datetime.datetime): + description (str | Unset): + """ + + id: str + reference: str + display_name: str + match: InferenceRouterLaneMatch + phrases: list[str] + version: int + used_by: list[str] + created_at: datetime.datetime + updated_at: datetime.datetime + description: str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + id = self.id + + reference = self.reference + + display_name = self.display_name + + match = self.match.value + + phrases = self.phrases + + version = self.version + + used_by = self.used_by + + created_at = self.created_at.isoformat() + + updated_at = self.updated_at.isoformat() + + description = self.description + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "id": id, + "reference": reference, + "display_name": display_name, + "match": match, + "phrases": phrases, + "version": version, + "used_by": used_by, + "created_at": created_at, + "updated_at": updated_at, + } + ) + if description is not UNSET: + field_dict["description"] = description + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + id = d.pop("id") + + reference = d.pop("reference") + + display_name = d.pop("display_name") + + match = InferenceRouterLaneMatch(d.pop("match")) + + phrases = cast(list[str], d.pop("phrases")) + + version = d.pop("version") + + used_by = cast(list[str], d.pop("used_by")) + + created_at = datetime.datetime.fromisoformat(d.pop("created_at")) + + updated_at = datetime.datetime.fromisoformat(d.pop("updated_at")) + + description = d.pop("description", UNSET) + + inference_router_lane = cls( + id=id, + reference=reference, + display_name=display_name, + match=match, + phrases=phrases, + version=version, + used_by=used_by, + created_at=created_at, + updated_at=updated_at, + description=description, + ) + + inference_router_lane.additional_properties = d + return inference_router_lane + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_lane_create.py b/src/graphn/_generated/models/inference_router_lane_create.py new file mode 100644 index 0000000..93b12c7 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_lane_create.py @@ -0,0 +1,79 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define + +from ..models.inference_router_lane_create_match import InferenceRouterLaneCreateMatch +from ..types import UNSET, Unset + +T = TypeVar("T", bound="InferenceRouterLaneCreate") + + +@_attrs_define +class InferenceRouterLaneCreate: + """ + Attributes: + display_name (str): + phrases (list[str]): + description (str | Unset): + match (InferenceRouterLaneCreateMatch | Unset): `any` matches when one phrase appears; `all` requires every + phrase. Default: InferenceRouterLaneCreateMatch.ANY. + """ + + display_name: str + phrases: list[str] + description: str | Unset = UNSET + match: InferenceRouterLaneCreateMatch | Unset = InferenceRouterLaneCreateMatch.ANY + + def to_dict(self) -> dict[str, Any]: + display_name = self.display_name + + phrases = self.phrases + + description = self.description + + match: str | Unset = UNSET + if not isinstance(self.match, Unset): + match = self.match.value + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "display_name": display_name, + "phrases": phrases, + } + ) + if description is not UNSET: + field_dict["description"] = description + if match is not UNSET: + field_dict["match"] = match + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + display_name = d.pop("display_name") + + phrases = cast(list[str], d.pop("phrases")) + + description = d.pop("description", UNSET) + + _match = d.pop("match", UNSET) + match: InferenceRouterLaneCreateMatch | Unset + if isinstance(_match, Unset): + match = UNSET + else: + match = InferenceRouterLaneCreateMatch(_match) + + inference_router_lane_create = cls( + display_name=display_name, + phrases=phrases, + description=description, + match=match, + ) + + return inference_router_lane_create diff --git a/src/graphn/_generated/models/inference_router_lane_create_match.py b/src/graphn/_generated/models/inference_router_lane_create_match.py new file mode 100644 index 0000000..75c565f --- /dev/null +++ b/src/graphn/_generated/models/inference_router_lane_create_match.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class InferenceRouterLaneCreateMatch(StrEnum): + ALL = "all" + ANY = "any" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_lane_list.py b/src/graphn/_generated/models/inference_router_lane_list.py new file mode 100644 index 0000000..aaf55b6 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_lane_list.py @@ -0,0 +1,83 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +if TYPE_CHECKING: + from ..models.inference_router_lane import InferenceRouterLane + + +T = TypeVar("T", bound="InferenceRouterLaneList") + + +@_attrs_define +class InferenceRouterLaneList: + """ + Attributes: + items (list[InferenceRouterLane]): + total (int): + """ + + items: list[InferenceRouterLane] + total: int + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + items = [] + for items_item_data in self.items: + items_item = items_item_data.to_dict() + items.append(items_item) + + total = self.total + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "items": items, + "total": total, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router_lane import InferenceRouterLane + + d = dict(src_dict) + items = [] + _items = d.pop("items") + for items_item_data in _items: + items_item = InferenceRouterLane.from_dict(items_item_data) + + items.append(items_item) + + total = d.pop("total") + + inference_router_lane_list = cls( + items=items, + total=total, + ) + + inference_router_lane_list.additional_properties = d + return inference_router_lane_list + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_lane_match.py b/src/graphn/_generated/models/inference_router_lane_match.py new file mode 100644 index 0000000..7617638 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_lane_match.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class InferenceRouterLaneMatch(StrEnum): + ALL = "all" + ANY = "any" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_lane_update.py b/src/graphn/_generated/models/inference_router_lane_update.py new file mode 100644 index 0000000..285ee2a --- /dev/null +++ b/src/graphn/_generated/models/inference_router_lane_update.py @@ -0,0 +1,90 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define + +from ..models.inference_router_lane_update_match import InferenceRouterLaneUpdateMatch +from ..types import UNSET, Unset + +T = TypeVar("T", bound="InferenceRouterLaneUpdate") + + +@_attrs_define +class InferenceRouterLaneUpdate: + """ + Attributes: + expected_version (int): + display_name (str | Unset): + description (str | Unset): + match (InferenceRouterLaneUpdateMatch | Unset): + phrases (list[str] | Unset): + """ + + expected_version: int + display_name: str | Unset = UNSET + description: str | Unset = UNSET + match: InferenceRouterLaneUpdateMatch | Unset = UNSET + phrases: list[str] | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + expected_version = self.expected_version + + display_name = self.display_name + + description = self.description + + match: str | Unset = UNSET + if not isinstance(self.match, Unset): + match = self.match.value + + phrases: list[str] | Unset = UNSET + if not isinstance(self.phrases, Unset): + phrases = self.phrases + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "expected_version": expected_version, + } + ) + if display_name is not UNSET: + field_dict["display_name"] = display_name + if description is not UNSET: + field_dict["description"] = description + if match is not UNSET: + field_dict["match"] = match + if phrases is not UNSET: + field_dict["phrases"] = phrases + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + expected_version = d.pop("expected_version") + + display_name = d.pop("display_name", UNSET) + + description = d.pop("description", UNSET) + + _match = d.pop("match", UNSET) + match: InferenceRouterLaneUpdateMatch | Unset + if isinstance(_match, Unset): + match = UNSET + else: + match = InferenceRouterLaneUpdateMatch(_match) + + phrases = cast(list[str], d.pop("phrases", UNSET)) + + inference_router_lane_update = cls( + expected_version=expected_version, + display_name=display_name, + description=description, + match=match, + phrases=phrases, + ) + + return inference_router_lane_update diff --git a/src/graphn/_generated/models/inference_router_lane_update_match.py b/src/graphn/_generated/models/inference_router_lane_update_match.py new file mode 100644 index 0000000..bbcb29a --- /dev/null +++ b/src/graphn/_generated/models/inference_router_lane_update_match.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class InferenceRouterLaneUpdateMatch(StrEnum): + ALL = "all" + ANY = "any" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_list.py b/src/graphn/_generated/models/inference_router_list.py new file mode 100644 index 0000000..49937bd --- /dev/null +++ b/src/graphn/_generated/models/inference_router_list.py @@ -0,0 +1,94 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.inference_router import InferenceRouter + + +T = TypeVar("T", bound="InferenceRouterList") + + +@_attrs_define +class InferenceRouterList: + """ + Attributes: + items (list[InferenceRouter]): + total (int): + continue_token (str | Unset): + """ + + items: list[InferenceRouter] + total: int + continue_token: str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + items = [] + for items_item_data in self.items: + items_item = items_item_data.to_dict() + items.append(items_item) + + total = self.total + + continue_token = self.continue_token + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "items": items, + "total": total, + } + ) + if continue_token is not UNSET: + field_dict["continue_token"] = continue_token + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router import InferenceRouter + + d = dict(src_dict) + items = [] + _items = d.pop("items") + for items_item_data in _items: + items_item = InferenceRouter.from_dict(items_item_data) + + items.append(items_item) + + total = d.pop("total") + + continue_token = d.pop("continue_token", UNSET) + + inference_router_list = cls( + items=items, + total=total, + continue_token=continue_token, + ) + + inference_router_list.additional_properties = d + return inference_router_list + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_revision.py b/src/graphn/_generated/models/inference_router_revision.py new file mode 100644 index 0000000..ce3e123 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_revision.py @@ -0,0 +1,181 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.inference_router_revision_status import InferenceRouterRevisionStatus +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.inference_router_config import InferenceRouterConfig + from ..models.inference_router_revision_shard_placements_item import ( + InferenceRouterRevisionShardPlacementsItem, + ) + from ..models.published_router_custom_lane import PublishedRouterCustomLane + + +T = TypeVar("T", bound="InferenceRouterRevision") + + +@_attrs_define +class InferenceRouterRevision: + """ + Attributes: + number (int): + status (InferenceRouterRevisionStatus): + config (InferenceRouterConfig): + manifest_hash (str): + created_at (datetime.datetime): + updated_at (datetime.datetime): + shard_placements (list[InferenceRouterRevisionShardPlacementsItem] | Unset): Shards carrying this revision. A + revision has one `primary` placement; a second `migrating` placement exists only while the revision is being + moved to another shard. + custom_lanes (list[PublishedRouterCustomLane] | Unset): The custom lane definitions this revision was saved + with. Compare against the current lanes to tell when a router needs republishing. + error_message (str | Unset): + """ + + number: int + status: InferenceRouterRevisionStatus + config: InferenceRouterConfig + manifest_hash: str + created_at: datetime.datetime + updated_at: datetime.datetime + shard_placements: list[InferenceRouterRevisionShardPlacementsItem] | Unset = UNSET + custom_lanes: list[PublishedRouterCustomLane] | Unset = UNSET + error_message: str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + number = self.number + + status = self.status.value + + config = self.config.to_dict() + + manifest_hash = self.manifest_hash + + created_at = self.created_at.isoformat() + + updated_at = self.updated_at.isoformat() + + shard_placements: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.shard_placements, Unset): + shard_placements = [] + for shard_placements_item_data in self.shard_placements: + shard_placements_item = shard_placements_item_data.to_dict() + shard_placements.append(shard_placements_item) + + custom_lanes: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.custom_lanes, Unset): + custom_lanes = [] + for custom_lanes_item_data in self.custom_lanes: + custom_lanes_item = custom_lanes_item_data.to_dict() + custom_lanes.append(custom_lanes_item) + + error_message = self.error_message + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "number": number, + "status": status, + "config": config, + "manifest_hash": manifest_hash, + "created_at": created_at, + "updated_at": updated_at, + } + ) + if shard_placements is not UNSET: + field_dict["shard_placements"] = shard_placements + if custom_lanes is not UNSET: + field_dict["custom_lanes"] = custom_lanes + if error_message is not UNSET: + field_dict["error_message"] = error_message + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router_config import InferenceRouterConfig + from ..models.inference_router_revision_shard_placements_item import ( + InferenceRouterRevisionShardPlacementsItem, + ) + from ..models.published_router_custom_lane import PublishedRouterCustomLane + + d = dict(src_dict) + number = d.pop("number") + + status = InferenceRouterRevisionStatus(d.pop("status")) + + config = InferenceRouterConfig.from_dict(d.pop("config")) + + manifest_hash = d.pop("manifest_hash") + + created_at = datetime.datetime.fromisoformat(d.pop("created_at")) + + updated_at = datetime.datetime.fromisoformat(d.pop("updated_at")) + + _shard_placements = d.pop("shard_placements", UNSET) + shard_placements: list[InferenceRouterRevisionShardPlacementsItem] | Unset = ( + UNSET + ) + if _shard_placements is not UNSET: + shard_placements = [] + for shard_placements_item_data in _shard_placements: + shard_placements_item = ( + InferenceRouterRevisionShardPlacementsItem.from_dict( + shard_placements_item_data + ) + ) + + shard_placements.append(shard_placements_item) + + _custom_lanes = d.pop("custom_lanes", UNSET) + custom_lanes: list[PublishedRouterCustomLane] | Unset = UNSET + if _custom_lanes is not UNSET: + custom_lanes = [] + for custom_lanes_item_data in _custom_lanes: + custom_lanes_item = PublishedRouterCustomLane.from_dict( + custom_lanes_item_data + ) + + custom_lanes.append(custom_lanes_item) + + error_message = d.pop("error_message", UNSET) + + inference_router_revision = cls( + number=number, + status=status, + config=config, + manifest_hash=manifest_hash, + created_at=created_at, + updated_at=updated_at, + shard_placements=shard_placements, + custom_lanes=custom_lanes, + error_message=error_message, + ) + + inference_router_revision.additional_properties = d + return inference_router_revision + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_revision_shard_placements_item.py b/src/graphn/_generated/models/inference_router_revision_shard_placements_item.py new file mode 100644 index 0000000..cb2e567 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_revision_shard_placements_item.py @@ -0,0 +1,92 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.inference_router_revision_shard_placements_item_role import ( + InferenceRouterRevisionShardPlacementsItemRole, +) +from ..models.inference_router_revision_shard_placements_item_state import ( + InferenceRouterRevisionShardPlacementsItemState, +) + +T = TypeVar("T", bound="InferenceRouterRevisionShardPlacementsItem") + + +@_attrs_define +class InferenceRouterRevisionShardPlacementsItem: + """ + Attributes: + shard_id (str): + alias (str): + role (InferenceRouterRevisionShardPlacementsItemRole): + state (InferenceRouterRevisionShardPlacementsItemState): + """ + + shard_id: str + alias: str + role: InferenceRouterRevisionShardPlacementsItemRole + state: InferenceRouterRevisionShardPlacementsItemState + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + shard_id = self.shard_id + + alias = self.alias + + role = self.role.value + + state = self.state.value + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "shard_id": shard_id, + "alias": alias, + "role": role, + "state": state, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + shard_id = d.pop("shard_id") + + alias = d.pop("alias") + + role = InferenceRouterRevisionShardPlacementsItemRole(d.pop("role")) + + state = InferenceRouterRevisionShardPlacementsItemState(d.pop("state")) + + inference_router_revision_shard_placements_item = cls( + shard_id=shard_id, + alias=alias, + role=role, + state=state, + ) + + inference_router_revision_shard_placements_item.additional_properties = d + return inference_router_revision_shard_placements_item + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/inference_router_revision_shard_placements_item_role.py b/src/graphn/_generated/models/inference_router_revision_shard_placements_item_role.py new file mode 100644 index 0000000..957edd7 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_revision_shard_placements_item_role.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class InferenceRouterRevisionShardPlacementsItemRole(StrEnum): + MIGRATING = "migrating" + PRIMARY = "primary" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_revision_shard_placements_item_state.py b/src/graphn/_generated/models/inference_router_revision_shard_placements_item_state.py new file mode 100644 index 0000000..ca28dac --- /dev/null +++ b/src/graphn/_generated/models/inference_router_revision_shard_placements_item_state.py @@ -0,0 +1,10 @@ +from enum import StrEnum + + +class InferenceRouterRevisionShardPlacementsItemState(StrEnum): + ACTIVE = "active" + ASSIGNED = "assigned" + DRAINING = "draining" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_revision_status.py b/src/graphn/_generated/models/inference_router_revision_status.py new file mode 100644 index 0000000..6e13d6b --- /dev/null +++ b/src/graphn/_generated/models/inference_router_revision_status.py @@ -0,0 +1,11 @@ +from enum import StrEnum + + +class InferenceRouterRevisionStatus(StrEnum): + ACTIVE = "active" + DRAFT = "draft" + FAILED = "failed" + PENDING = "pending" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_scope.py b/src/graphn/_generated/models/inference_router_scope.py new file mode 100644 index 0000000..3011f4f --- /dev/null +++ b/src/graphn/_generated/models/inference_router_scope.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class InferenceRouterScope(StrEnum): + PLATFORM = "platform" + WORKSPACE = "workspace" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_status.py b/src/graphn/_generated/models/inference_router_status.py new file mode 100644 index 0000000..12ce5fe --- /dev/null +++ b/src/graphn/_generated/models/inference_router_status.py @@ -0,0 +1,13 @@ +from enum import StrEnum + + +class InferenceRouterStatus(StrEnum): + ACTIVE = "active" + DELETED = "deleted" + DELETING = "deleting" + DRAFT = "draft" + FAILED = "failed" + PENDING = "pending" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_update.py b/src/graphn/_generated/models/inference_router_update.py new file mode 100644 index 0000000..51e0bbb --- /dev/null +++ b/src/graphn/_generated/models/inference_router_update.py @@ -0,0 +1,118 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..models.inference_router_update_fallback_policy import ( + InferenceRouterUpdateFallbackPolicy, +) +from ..models.inference_router_update_preset import InferenceRouterUpdatePreset +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.inference_router_candidate import InferenceRouterCandidate + + +T = TypeVar("T", bound="InferenceRouterUpdate") + + +@_attrs_define +class InferenceRouterUpdate: + """ + Attributes: + expected_revision (int): + display_name (str | Unset): + preset (InferenceRouterUpdatePreset | Unset): + candidates (list[InferenceRouterCandidate] | Unset): + fallback_policy (InferenceRouterUpdateFallbackPolicy | Unset): + """ + + expected_revision: int + display_name: str | Unset = UNSET + preset: InferenceRouterUpdatePreset | Unset = UNSET + candidates: list[InferenceRouterCandidate] | Unset = UNSET + fallback_policy: InferenceRouterUpdateFallbackPolicy | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + expected_revision = self.expected_revision + + display_name = self.display_name + + preset: str | Unset = UNSET + if not isinstance(self.preset, Unset): + preset = self.preset.value + + candidates: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.candidates, Unset): + candidates = [] + for candidates_item_data in self.candidates: + candidates_item = candidates_item_data.to_dict() + candidates.append(candidates_item) + + fallback_policy: str | Unset = UNSET + if not isinstance(self.fallback_policy, Unset): + fallback_policy = self.fallback_policy.value + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "expected_revision": expected_revision, + } + ) + if display_name is not UNSET: + field_dict["display_name"] = display_name + if preset is not UNSET: + field_dict["preset"] = preset + if candidates is not UNSET: + field_dict["candidates"] = candidates + if fallback_policy is not UNSET: + field_dict["fallback_policy"] = fallback_policy + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.inference_router_candidate import InferenceRouterCandidate + + d = dict(src_dict) + expected_revision = d.pop("expected_revision") + + display_name = d.pop("display_name", UNSET) + + _preset = d.pop("preset", UNSET) + preset: InferenceRouterUpdatePreset | Unset + if isinstance(_preset, Unset): + preset = UNSET + else: + preset = InferenceRouterUpdatePreset(_preset) + + _candidates = d.pop("candidates", UNSET) + candidates: list[InferenceRouterCandidate] | Unset = UNSET + if _candidates is not UNSET: + candidates = [] + for candidates_item_data in _candidates: + candidates_item = InferenceRouterCandidate.from_dict( + candidates_item_data + ) + + candidates.append(candidates_item) + + _fallback_policy = d.pop("fallback_policy", UNSET) + fallback_policy: InferenceRouterUpdateFallbackPolicy | Unset + if isinstance(_fallback_policy, Unset): + fallback_policy = UNSET + else: + fallback_policy = InferenceRouterUpdateFallbackPolicy(_fallback_policy) + + inference_router_update = cls( + expected_revision=expected_revision, + display_name=display_name, + preset=preset, + candidates=candidates, + fallback_policy=fallback_policy, + ) + + return inference_router_update diff --git a/src/graphn/_generated/models/inference_router_update_fallback_policy.py b/src/graphn/_generated/models/inference_router_update_fallback_policy.py new file mode 100644 index 0000000..0b5b775 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_update_fallback_policy.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class InferenceRouterUpdateFallbackPolicy(StrEnum): + DEGRADED_GENERAL = "degraded_general" + FAIL_CLOSED = "fail_closed" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_update_preset.py b/src/graphn/_generated/models/inference_router_update_preset.py new file mode 100644 index 0000000..dccd1ac --- /dev/null +++ b/src/graphn/_generated/models/inference_router_update_preset.py @@ -0,0 +1,8 @@ +from enum import StrEnum + + +class InferenceRouterUpdatePreset(StrEnum): + BALANCED = "balanced" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/inference_router_validation.py b/src/graphn/_generated/models/inference_router_validation.py new file mode 100644 index 0000000..3089040 --- /dev/null +++ b/src/graphn/_generated/models/inference_router_validation.py @@ -0,0 +1,77 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="InferenceRouterValidation") + + +@_attrs_define +class InferenceRouterValidation: + """ + Attributes: + valid (bool): + manifest (str): + manifest_hash (str): + """ + + valid: bool + manifest: str + manifest_hash: str + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + valid = self.valid + + manifest = self.manifest + + manifest_hash = self.manifest_hash + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "valid": valid, + "manifest": manifest, + "manifest_hash": manifest_hash, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + valid = d.pop("valid") + + manifest = d.pop("manifest") + + manifest_hash = d.pop("manifest_hash") + + inference_router_validation = cls( + valid=valid, + manifest=manifest, + manifest_hash=manifest_hash, + ) + + inference_router_validation.additional_properties = d + return inference_router_validation + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/ingest_item.py b/src/graphn/_generated/models/ingest_item.py index 4fe8a1f..d2a2b2a 100644 --- a/src/graphn/_generated/models/ingest_item.py +++ b/src/graphn/_generated/models/ingest_item.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/ingest_item_input.py b/src/graphn/_generated/models/ingest_item_input.py index 18f1c8c..4752456 100644 --- a/src/graphn/_generated/models/ingest_item_input.py +++ b/src/graphn/_generated/models/ingest_item_input.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/ingest_item_input_metadata.py b/src/graphn/_generated/models/ingest_item_input_metadata.py index 76e7306..138bd17 100644 --- a/src/graphn/_generated/models/ingest_item_input_metadata.py +++ b/src/graphn/_generated/models/ingest_item_input_metadata.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="IngestItemInputMetadata") @_attrs_define class IngestItemInputMetadata: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/ingest_item_list.py b/src/graphn/_generated/models/ingest_item_list.py index debce5e..82a8dea 100644 --- a/src/graphn/_generated/models/ingest_item_list.py +++ b/src/graphn/_generated/models/ingest_item_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/ingest_job.py b/src/graphn/_generated/models/ingest_job.py index ac3cf9a..c2fffcd 100644 --- a/src/graphn/_generated/models/ingest_job.py +++ b/src/graphn/_generated/models/ingest_job.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/ingest_job_list.py b/src/graphn/_generated/models/ingest_job_list.py index ae4e5e2..14d13f4 100644 --- a/src/graphn/_generated/models/ingest_job_list.py +++ b/src/graphn/_generated/models/ingest_job_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/ingest_job_summary.py b/src/graphn/_generated/models/ingest_job_summary.py index 7ae0bb2..16eb0b7 100644 --- a/src/graphn/_generated/models/ingest_job_summary.py +++ b/src/graphn/_generated/models/ingest_job_summary.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="IngestJobSummary") diff --git a/src/graphn/_generated/models/integration.py b/src/graphn/_generated/models/integration.py new file mode 100644 index 0000000..7018cc5 --- /dev/null +++ b/src/graphn/_generated/models/integration.py @@ -0,0 +1,119 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..models.integration_auth_mode import IntegrationAuthMode +from ..models.integration_kind import IntegrationKind +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.integration_capability import IntegrationCapability + from ..models.integration_event import IntegrationEvent + + +T = TypeVar("T", bound="Integration") + + +@_attrs_define +class Integration: + """ + Attributes: + id (str): + display_name (str): + kind (IntegrationKind): + auth_mode (IntegrationAuthMode): + capabilities (list[IntegrationCapability]): + events (list[IntegrationEvent]): + description (str | Unset): + """ + + id: str + display_name: str + kind: IntegrationKind + auth_mode: IntegrationAuthMode + capabilities: list[IntegrationCapability] + events: list[IntegrationEvent] + description: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + id = self.id + + display_name = self.display_name + + kind = self.kind.value + + auth_mode = self.auth_mode.value + + capabilities = [] + for capabilities_item_data in self.capabilities: + capabilities_item = capabilities_item_data.to_dict() + capabilities.append(capabilities_item) + + events = [] + for events_item_data in self.events: + events_item = events_item_data.to_dict() + events.append(events_item) + + description = self.description + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "id": id, + "display_name": display_name, + "kind": kind, + "auth_mode": auth_mode, + "capabilities": capabilities, + "events": events, + } + ) + if description is not UNSET: + field_dict["description"] = description + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.integration_capability import IntegrationCapability + from ..models.integration_event import IntegrationEvent + + d = dict(src_dict) + id = d.pop("id") + + display_name = d.pop("display_name") + + kind = IntegrationKind(d.pop("kind")) + + auth_mode = IntegrationAuthMode(d.pop("auth_mode")) + + capabilities = [] + _capabilities = d.pop("capabilities") + for capabilities_item_data in _capabilities: + capabilities_item = IntegrationCapability.from_dict(capabilities_item_data) + + capabilities.append(capabilities_item) + + events = [] + _events = d.pop("events") + for events_item_data in _events: + events_item = IntegrationEvent.from_dict(events_item_data) + + events.append(events_item) + + description = d.pop("description", UNSET) + + integration = cls( + id=id, + display_name=display_name, + kind=kind, + auth_mode=auth_mode, + capabilities=capabilities, + events=events, + description=description, + ) + + return integration diff --git a/src/graphn/_generated/models/integration_auth_mode.py b/src/graphn/_generated/models/integration_auth_mode.py new file mode 100644 index 0000000..28bc3c0 --- /dev/null +++ b/src/graphn/_generated/models/integration_auth_mode.py @@ -0,0 +1,8 @@ +from enum import StrEnum + + +class IntegrationAuthMode(StrEnum): + OAUTH2 = "oauth2" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/integration_capability.py b/src/graphn/_generated/models/integration_capability.py new file mode 100644 index 0000000..ffea9bf --- /dev/null +++ b/src/graphn/_generated/models/integration_capability.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="IntegrationCapability") + + +@_attrs_define +class IntegrationCapability: + """ + Attributes: + id (str): + display_name (str): + description (str | Unset): + """ + + id: str + display_name: str + description: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + id = self.id + + display_name = self.display_name + + description = self.description + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "id": id, + "display_name": display_name, + } + ) + if description is not UNSET: + field_dict["description"] = description + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + id = d.pop("id") + + display_name = d.pop("display_name") + + description = d.pop("description", UNSET) + + integration_capability = cls( + id=id, + display_name=display_name, + description=description, + ) + + return integration_capability diff --git a/src/graphn/_generated/models/integration_event.py b/src/graphn/_generated/models/integration_event.py new file mode 100644 index 0000000..3e00dc5 --- /dev/null +++ b/src/graphn/_generated/models/integration_event.py @@ -0,0 +1,70 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="IntegrationEvent") + + +@_attrs_define +class IntegrationEvent: + """ + Attributes: + id (str): + display_name (str): + description (str | Unset): + capability (str | Unset): + """ + + id: str + display_name: str + description: str | Unset = UNSET + capability: str | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + id = self.id + + display_name = self.display_name + + description = self.description + + capability = self.capability + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "id": id, + "display_name": display_name, + } + ) + if description is not UNSET: + field_dict["description"] = description + if capability is not UNSET: + field_dict["capability"] = capability + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + id = d.pop("id") + + display_name = d.pop("display_name") + + description = d.pop("description", UNSET) + + capability = d.pop("capability", UNSET) + + integration_event = cls( + id=id, + display_name=display_name, + description=description, + capability=capability, + ) + + return integration_event diff --git a/src/graphn/_generated/models/integration_kind.py b/src/graphn/_generated/models/integration_kind.py new file mode 100644 index 0000000..ad216bd --- /dev/null +++ b/src/graphn/_generated/models/integration_kind.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class IntegrationKind(StrEnum): + MCP = "mcp" + NATIVE = "native" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/integration_list.py b/src/graphn/_generated/models/integration_list.py new file mode 100644 index 0000000..744db5b --- /dev/null +++ b/src/graphn/_generated/models/integration_list.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define + +if TYPE_CHECKING: + from ..models.integration import Integration + + +T = TypeVar("T", bound="IntegrationList") + + +@_attrs_define +class IntegrationList: + """ + Attributes: + items (list[Integration]): + count (int): + """ + + items: list[Integration] + count: int + + def to_dict(self) -> dict[str, Any]: + items = [] + for items_item_data in self.items: + items_item = items_item_data.to_dict() + items.append(items_item) + + count = self.count + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "items": items, + "count": count, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.integration import Integration + + d = dict(src_dict) + items = [] + _items = d.pop("items") + for items_item_data in _items: + items_item = Integration.from_dict(items_item_data) + + items.append(items_item) + + count = d.pop("count") + + integration_list = cls( + items=items, + count=count, + ) + + return integration_list diff --git a/src/graphn/_generated/models/invitation.py b/src/graphn/_generated/models/invitation.py index ba348e7..8b0827e 100644 --- a/src/graphn/_generated/models/invitation.py +++ b/src/graphn/_generated/models/invitation.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.invitation_role import InvitationRole from ..models.invitation_scope_type import InvitationScopeType diff --git a/src/graphn/_generated/models/invitation_accept_result.py b/src/graphn/_generated/models/invitation_accept_result.py index d218fe5..b698799 100644 --- a/src/graphn/_generated/models/invitation_accept_result.py +++ b/src/graphn/_generated/models/invitation_accept_result.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="InvitationAcceptResult") diff --git a/src/graphn/_generated/models/invitation_create.py b/src/graphn/_generated/models/invitation_create.py index fa29dae..0be838f 100644 --- a/src/graphn/_generated/models/invitation_create.py +++ b/src/graphn/_generated/models/invitation_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self from ..models.invitation_create_role import InvitationCreateRole from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/invitation_create_role.py b/src/graphn/_generated/models/invitation_create_role.py index c0e3494..bc247a6 100644 --- a/src/graphn/_generated/models/invitation_create_role.py +++ b/src/graphn/_generated/models/invitation_create_role.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class InvitationCreateRole(str, Enum): +class InvitationCreateRole(StrEnum): ADMIN = "admin" MEMBER = "member" OWNER = "owner" diff --git a/src/graphn/_generated/models/invitation_list.py b/src/graphn/_generated/models/invitation_list.py index 72fa2bf..b3b009f 100644 --- a/src/graphn/_generated/models/invitation_list.py +++ b/src/graphn/_generated/models/invitation_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.invitation import Invitation diff --git a/src/graphn/_generated/models/invitation_role.py b/src/graphn/_generated/models/invitation_role.py index f6d46cb..e7ffe07 100644 --- a/src/graphn/_generated/models/invitation_role.py +++ b/src/graphn/_generated/models/invitation_role.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class InvitationRole(str, Enum): +class InvitationRole(StrEnum): ADMIN = "admin" MEMBER = "member" OWNER = "owner" diff --git a/src/graphn/_generated/models/invitation_scope_type.py b/src/graphn/_generated/models/invitation_scope_type.py index 6c9feb8..0710ab4 100644 --- a/src/graphn/_generated/models/invitation_scope_type.py +++ b/src/graphn/_generated/models/invitation_scope_type.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class InvitationScopeType(str, Enum): +class InvitationScopeType(StrEnum): ORG = "org" WORKSPACE = "workspace" diff --git a/src/graphn/_generated/models/invitation_status.py b/src/graphn/_generated/models/invitation_status.py index c9a945a..26713e8 100644 --- a/src/graphn/_generated/models/invitation_status.py +++ b/src/graphn/_generated/models/invitation_status.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class InvitationStatus(str, Enum): +class InvitationStatus(StrEnum): ACCEPTED = "accepted" DECLINED = "declined" EXPIRED = "expired" diff --git a/src/graphn/_generated/models/invoice.py b/src/graphn/_generated/models/invoice.py index 8ecd2e5..a4aeb1c 100644 --- a/src/graphn/_generated/models/invoice.py +++ b/src/graphn/_generated/models/invoice.py @@ -2,15 +2,18 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.invoice_status import InvoiceStatus from ..types import UNSET, Unset +if TYPE_CHECKING: + from ..models.usage_day import UsageDay + + T = TypeVar("T", bound="Invoice") @@ -21,35 +24,46 @@ class Invoice: id (str): number (str): status (InvoiceStatus): - amount_due (int): currency (str): created (int): period_start (datetime.datetime): period_end (datetime.datetime): + amount_due (int | Unset): Compatibility field for legacy invoice clients. For prepaid statements this is + max(-closingCents, 0), not a collections balance with payment terms. It is omitted when statement figures could + not be read; an explicit 0 means the amount due is known to be zero. opening_cents (int | Unset): usage_cents (int | Unset): credits_cents (int | Unset): + credited_cents (int | Unset): + debited_cents (int | Unset): closing_cents (int | Unset): - hosted_invoice_url (str | Unset): + revision (int | Unset): + usage_by_day (list[UsageDay] | Unset): + hosted_invoice_url (str | Unset): Stripe-hosted invoice page URL. Statement-backed responses leave this empty. invoice_pdf (str | Unset): - invoice_document_url (str | Unset): + invoice_preview_url (str | Unset): Inline-renderable statement URL. For statement rows this is a separately + signed URL with inline content disposition; it may be empty when no preview artifact exists. """ id: str number: str status: InvoiceStatus - amount_due: int currency: str created: int period_start: datetime.datetime period_end: datetime.datetime + amount_due: int | Unset = UNSET opening_cents: int | Unset = UNSET usage_cents: int | Unset = UNSET credits_cents: int | Unset = UNSET + credited_cents: int | Unset = UNSET + debited_cents: int | Unset = UNSET closing_cents: int | Unset = UNSET + revision: int | Unset = UNSET + usage_by_day: list[UsageDay] | Unset = UNSET hosted_invoice_url: str | Unset = UNSET invoice_pdf: str | Unset = UNSET - invoice_document_url: str | Unset = UNSET + invoice_preview_url: str | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: @@ -59,8 +73,6 @@ def to_dict(self) -> dict[str, Any]: status = self.status.value - amount_due = self.amount_due - currency = self.currency created = self.created @@ -69,19 +81,34 @@ def to_dict(self) -> dict[str, Any]: period_end = self.period_end.isoformat() + amount_due = self.amount_due + opening_cents = self.opening_cents usage_cents = self.usage_cents credits_cents = self.credits_cents + credited_cents = self.credited_cents + + debited_cents = self.debited_cents + closing_cents = self.closing_cents + revision = self.revision + + usage_by_day: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.usage_by_day, Unset): + usage_by_day = [] + for usage_by_day_item_data in self.usage_by_day: + usage_by_day_item = usage_by_day_item_data.to_dict() + usage_by_day.append(usage_by_day_item) + hosted_invoice_url = self.hosted_invoice_url invoice_pdf = self.invoice_pdf - invoice_document_url = self.invoice_document_url + invoice_preview_url = self.invoice_preview_url field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) @@ -90,32 +117,43 @@ def to_dict(self) -> dict[str, Any]: "id": id, "number": number, "status": status, - "amountDue": amount_due, "currency": currency, "created": created, "periodStart": period_start, "periodEnd": period_end, } ) + if amount_due is not UNSET: + field_dict["amountDue"] = amount_due if opening_cents is not UNSET: field_dict["openingCents"] = opening_cents if usage_cents is not UNSET: field_dict["usageCents"] = usage_cents if credits_cents is not UNSET: field_dict["creditsCents"] = credits_cents + if credited_cents is not UNSET: + field_dict["creditedCents"] = credited_cents + if debited_cents is not UNSET: + field_dict["debitedCents"] = debited_cents if closing_cents is not UNSET: field_dict["closingCents"] = closing_cents + if revision is not UNSET: + field_dict["revision"] = revision + if usage_by_day is not UNSET: + field_dict["usageByDay"] = usage_by_day if hosted_invoice_url is not UNSET: field_dict["hostedInvoiceUrl"] = hosted_invoice_url if invoice_pdf is not UNSET: field_dict["invoicePdf"] = invoice_pdf - if invoice_document_url is not UNSET: - field_dict["invoiceDocumentUrl"] = invoice_document_url + if invoice_preview_url is not UNSET: + field_dict["invoicePreviewUrl"] = invoice_preview_url return field_dict @classmethod def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.usage_day import UsageDay + d = dict(src_dict) id = d.pop("id") @@ -123,8 +161,6 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: status = InvoiceStatus(d.pop("status")) - amount_due = d.pop("amountDue") - currency = d.pop("currency") created = d.pop("created") @@ -133,36 +169,57 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: period_end = datetime.datetime.fromisoformat(d.pop("periodEnd")) + amount_due = d.pop("amountDue", UNSET) + opening_cents = d.pop("openingCents", UNSET) usage_cents = d.pop("usageCents", UNSET) credits_cents = d.pop("creditsCents", UNSET) + credited_cents = d.pop("creditedCents", UNSET) + + debited_cents = d.pop("debitedCents", UNSET) + closing_cents = d.pop("closingCents", UNSET) + revision = d.pop("revision", UNSET) + + _usage_by_day = d.pop("usageByDay", UNSET) + usage_by_day: list[UsageDay] | Unset = UNSET + if _usage_by_day is not UNSET: + usage_by_day = [] + for usage_by_day_item_data in _usage_by_day: + usage_by_day_item = UsageDay.from_dict(usage_by_day_item_data) + + usage_by_day.append(usage_by_day_item) + hosted_invoice_url = d.pop("hostedInvoiceUrl", UNSET) invoice_pdf = d.pop("invoicePdf", UNSET) - invoice_document_url = d.pop("invoiceDocumentUrl", UNSET) + invoice_preview_url = d.pop("invoicePreviewUrl", UNSET) invoice = cls( id=id, number=number, status=status, - amount_due=amount_due, currency=currency, created=created, period_start=period_start, period_end=period_end, + amount_due=amount_due, opening_cents=opening_cents, usage_cents=usage_cents, credits_cents=credits_cents, + credited_cents=credited_cents, + debited_cents=debited_cents, closing_cents=closing_cents, + revision=revision, + usage_by_day=usage_by_day, hosted_invoice_url=hosted_invoice_url, invoice_pdf=invoice_pdf, - invoice_document_url=invoice_document_url, + invoice_preview_url=invoice_preview_url, ) invoice.additional_properties = d diff --git a/src/graphn/_generated/models/invoice_status.py b/src/graphn/_generated/models/invoice_status.py index 21679ed..cfcb634 100644 --- a/src/graphn/_generated/models/invoice_status.py +++ b/src/graphn/_generated/models/invoice_status.py @@ -1,9 +1,17 @@ -from enum import Enum +from enum import StrEnum -class InvoiceStatus(str, Enum): +class InvoiceStatus(StrEnum): CLOSED = "closed" CURRENT = "current" + FAILED = "failed" + MISMATCH = "mismatch" + OPEN = "open" + PAID = "paid" + RESERVED = "reserved" + STALE = "stale" + VOID = "void" + VOIDING = "voiding" def __str__(self) -> str: return str(self.value) diff --git a/src/graphn/_generated/models/kb_batch_error.py b/src/graphn/_generated/models/kb_batch_error.py index 4f949cc..fafd1b6 100644 --- a/src/graphn/_generated/models/kb_batch_error.py +++ b/src/graphn/_generated/models/kb_batch_error.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/kb_document.py b/src/graphn/_generated/models/kb_document.py index cd86f2e..dc634f5 100644 --- a/src/graphn/_generated/models/kb_document.py +++ b/src/graphn/_generated/models/kb_document.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset @@ -30,6 +29,9 @@ class KbDocument: document_type (str | Unset): image_url (str | Unset): video_url (str | Unset): + expires_at (datetime.datetime | Unset): + expires_in (int | Unset): + media_href (str | Unset): segment_seconds (int | Unset): metadata (KbDocumentMetadata | Unset): """ @@ -43,6 +45,9 @@ class KbDocument: document_type: str | Unset = UNSET image_url: str | Unset = UNSET video_url: str | Unset = UNSET + expires_at: datetime.datetime | Unset = UNSET + expires_in: int | Unset = UNSET + media_href: str | Unset = UNSET segment_seconds: int | Unset = UNSET metadata: KbDocumentMetadata | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -66,6 +71,14 @@ def to_dict(self) -> dict[str, Any]: video_url = self.video_url + expires_at: str | Unset = UNSET + if not isinstance(self.expires_at, Unset): + expires_at = self.expires_at.isoformat() + + expires_in = self.expires_in + + media_href = self.media_href + segment_seconds = self.segment_seconds metadata: dict[str, Any] | Unset = UNSET @@ -90,6 +103,12 @@ def to_dict(self) -> dict[str, Any]: field_dict["image_url"] = image_url if video_url is not UNSET: field_dict["video_url"] = video_url + if expires_at is not UNSET: + field_dict["expires_at"] = expires_at + if expires_in is not UNSET: + field_dict["expires_in"] = expires_in + if media_href is not UNSET: + field_dict["media_href"] = media_href if segment_seconds is not UNSET: field_dict["segment_seconds"] = segment_seconds if metadata is not UNSET: @@ -120,6 +139,17 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: video_url = d.pop("video_url", UNSET) + _expires_at = d.pop("expires_at", UNSET) + expires_at: datetime.datetime | Unset + if isinstance(_expires_at, Unset): + expires_at = UNSET + else: + expires_at = datetime.datetime.fromisoformat(_expires_at) + + expires_in = d.pop("expires_in", UNSET) + + media_href = d.pop("media_href", UNSET) + segment_seconds = d.pop("segment_seconds", UNSET) _metadata = d.pop("metadata", UNSET) @@ -139,6 +169,9 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: document_type=document_type, image_url=image_url, video_url=video_url, + expires_at=expires_at, + expires_in=expires_in, + media_href=media_href, segment_seconds=segment_seconds, metadata=metadata, ) diff --git a/src/graphn/_generated/models/kb_document_metadata.py b/src/graphn/_generated/models/kb_document_metadata.py index 1bd118f..c4c3536 100644 --- a/src/graphn/_generated/models/kb_document_metadata.py +++ b/src/graphn/_generated/models/kb_document_metadata.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="KbDocumentMetadata") @_attrs_define class KbDocumentMetadata: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/knowledge_base.py b/src/graphn/_generated/models/knowledge_base.py index b12a7d4..c602999 100644 --- a/src/graphn/_generated/models/knowledge_base.py +++ b/src/graphn/_generated/models/knowledge_base.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/knowledge_base_create.py b/src/graphn/_generated/models/knowledge_base_create.py index 5e4b39a..2bdf7d8 100644 --- a/src/graphn/_generated/models/knowledge_base_create.py +++ b/src/graphn/_generated/models/knowledge_base_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/knowledge_base_list_response.py b/src/graphn/_generated/models/knowledge_base_list_response.py new file mode 100644 index 0000000..9e41633 --- /dev/null +++ b/src/graphn/_generated/models/knowledge_base_list_response.py @@ -0,0 +1,84 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.knowledge_base import KnowledgeBase + + +T = TypeVar("T", bound="KnowledgeBaseListResponse") + + +@_attrs_define +class KnowledgeBaseListResponse: + """ + Attributes: + items (list[KnowledgeBase]): + has_more (bool): + next_cursor (str | Unset): + total (int | Unset): Matching item count, returned on the first page. + """ + + items: list[KnowledgeBase] + has_more: bool + next_cursor: str | Unset = UNSET + total: int | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + items = [] + for items_item_data in self.items: + items_item = items_item_data.to_dict() + items.append(items_item) + + has_more = self.has_more + + next_cursor = self.next_cursor + + total = self.total + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "items": items, + "has_more": has_more, + } + ) + if next_cursor is not UNSET: + field_dict["next_cursor"] = next_cursor + if total is not UNSET: + field_dict["total"] = total + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.knowledge_base import KnowledgeBase + + d = dict(src_dict) + items = [] + _items = d.pop("items") + for items_item_data in _items: + items_item = KnowledgeBase.from_dict(items_item_data) + + items.append(items_item) + + has_more = d.pop("has_more") + + next_cursor = d.pop("next_cursor", UNSET) + + total = d.pop("total", UNSET) + + knowledge_base_list_response = cls( + items=items, + has_more=has_more, + next_cursor=next_cursor, + total=total, + ) + + return knowledge_base_list_response diff --git a/src/graphn/_generated/models/knowledge_base_stats.py b/src/graphn/_generated/models/knowledge_base_stats.py index 6747b8e..3f28539 100644 --- a/src/graphn/_generated/models/knowledge_base_stats.py +++ b/src/graphn/_generated/models/knowledge_base_stats.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="KnowledgeBaseStats") diff --git a/src/graphn/_generated/models/knowledge_base_update.py b/src/graphn/_generated/models/knowledge_base_update.py index 4f03d94..84b8c5b 100644 --- a/src/graphn/_generated/models/knowledge_base_update.py +++ b/src/graphn/_generated/models/knowledge_base_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/list_billing_invoices_response_200.py b/src/graphn/_generated/models/list_billing_invoices_response_200.py index 562c10c..ed39c48 100644 --- a/src/graphn/_generated/models/list_billing_invoices_response_200.py +++ b/src/graphn/_generated/models/list_billing_invoices_response_200.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.list_billing_invoices_response_200_empty_reason import ( ListBillingInvoicesResponse200EmptyReason, diff --git a/src/graphn/_generated/models/list_billing_invoices_response_200_empty_reason.py b/src/graphn/_generated/models/list_billing_invoices_response_200_empty_reason.py index 6f862e5..a1a7227 100644 --- a/src/graphn/_generated/models/list_billing_invoices_response_200_empty_reason.py +++ b/src/graphn/_generated/models/list_billing_invoices_response_200_empty_reason.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class ListBillingInvoicesResponse200EmptyReason(str, Enum): +class ListBillingInvoicesResponse200EmptyReason(StrEnum): NO_BILLING_HISTORY = "no_billing_history" STATEMENTS_NOT_GENERATED_YET = "statements_not_generated_yet" diff --git a/src/graphn/_generated/models/list_billing_payment_methods_response_200.py b/src/graphn/_generated/models/list_billing_payment_methods_response_200.py index f4b86df..d95e8e6 100644 --- a/src/graphn/_generated/models/list_billing_payment_methods_response_200.py +++ b/src/graphn/_generated/models/list_billing_payment_methods_response_200.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.payment_method import PaymentMethod diff --git a/src/graphn/_generated/models/list_knowledgebases_order.py b/src/graphn/_generated/models/list_knowledgebases_order.py new file mode 100644 index 0000000..3956374 --- /dev/null +++ b/src/graphn/_generated/models/list_knowledgebases_order.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class ListKnowledgebasesOrder(StrEnum): + ASC = "asc" + DESC = "desc" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/list_knowledgebases_sort.py b/src/graphn/_generated/models/list_knowledgebases_sort.py new file mode 100644 index 0000000..714b950 --- /dev/null +++ b/src/graphn/_generated/models/list_knowledgebases_sort.py @@ -0,0 +1,8 @@ +from enum import StrEnum + + +class ListKnowledgebasesSort(StrEnum): + CREATED_AT = "created_at" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/list_knowledgebases_status.py b/src/graphn/_generated/models/list_knowledgebases_status.py new file mode 100644 index 0000000..86db3e7 --- /dev/null +++ b/src/graphn/_generated/models/list_knowledgebases_status.py @@ -0,0 +1,10 @@ +from enum import StrEnum + + +class ListKnowledgebasesStatus(StrEnum): + ACTIVE = "active" + ERROR = "error" + INDEXING = "indexing" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/list_tts_voices_response_200.py b/src/graphn/_generated/models/list_tts_voices_response_200.py index 15dba86..0097023 100644 --- a/src/graphn/_generated/models/list_tts_voices_response_200.py +++ b/src/graphn/_generated/models/list_tts_voices_response_200.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="ListTtsVoicesResponse200") @_attrs_define class ListTtsVoicesResponse200: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/managed_connection_tool_call.py b/src/graphn/_generated/models/managed_connection_tool_call.py new file mode 100644 index 0000000..7596e19 --- /dev/null +++ b/src/graphn/_generated/models/managed_connection_tool_call.py @@ -0,0 +1,68 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar + +from attrs import define as _attrs_define + +if TYPE_CHECKING: + from ..models.managed_connection_tool_call_arguments import ( + ManagedConnectionToolCallArguments, + ) + + +T = TypeVar("T", bound="ManagedConnectionToolCall") + + +@_attrs_define +class ManagedConnectionToolCall: + """ + Attributes: + resource_id (str): + version_id (str): + arguments (ManagedConnectionToolCallArguments): + """ + + resource_id: str + version_id: str + arguments: ManagedConnectionToolCallArguments + + def to_dict(self) -> dict[str, Any]: + resource_id = self.resource_id + + version_id = self.version_id + + arguments = self.arguments.to_dict() + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "resource_id": resource_id, + "version_id": version_id, + "arguments": arguments, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.managed_connection_tool_call_arguments import ( + ManagedConnectionToolCallArguments, + ) + + d = dict(src_dict) + resource_id = d.pop("resource_id") + + version_id = d.pop("version_id") + + arguments = ManagedConnectionToolCallArguments.from_dict(d.pop("arguments")) + + managed_connection_tool_call = cls( + resource_id=resource_id, + version_id=version_id, + arguments=arguments, + ) + + return managed_connection_tool_call diff --git a/src/graphn/_generated/models/managed_connection_tool_call_arguments.py b/src/graphn/_generated/models/managed_connection_tool_call_arguments.py new file mode 100644 index 0000000..fdd79d1 --- /dev/null +++ b/src/graphn/_generated/models/managed_connection_tool_call_arguments.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="ManagedConnectionToolCallArguments") + + +@_attrs_define +class ManagedConnectionToolCallArguments: + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + managed_connection_tool_call_arguments = cls() + + managed_connection_tool_call_arguments.additional_properties = d + return managed_connection_tool_call_arguments + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/managed_connection_tool_result.py b/src/graphn/_generated/models/managed_connection_tool_result.py new file mode 100644 index 0000000..75c6a31 --- /dev/null +++ b/src/graphn/_generated/models/managed_connection_tool_result.py @@ -0,0 +1,53 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="ManagedConnectionToolResult") + + +@_attrs_define +class ManagedConnectionToolResult: + """ + Attributes: + success (bool): + output (Any | Unset): + """ + + success: bool + output: Any | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + success = self.success + + output = self.output + + field_dict: dict[str, Any] = {} + + field_dict.update( + { + "success": success, + } + ) + if output is not UNSET: + field_dict["output"] = output + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + success = d.pop("success") + + output = d.pop("output", UNSET) + + managed_connection_tool_result = cls( + success=success, + output=output, + ) + + return managed_connection_tool_result diff --git a/src/graphn/_generated/models/mcp_discover_tools_request.py b/src/graphn/_generated/models/mcp_discover_tools_request.py index 6b9f14d..20f1dd5 100644 --- a/src/graphn/_generated/models/mcp_discover_tools_request.py +++ b/src/graphn/_generated/models/mcp_discover_tools_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mcp_discover_tools_request_files.py b/src/graphn/_generated/models/mcp_discover_tools_request_files.py index c68edd2..e9f6ac3 100644 --- a/src/graphn/_generated/models/mcp_discover_tools_request_files.py +++ b/src/graphn/_generated/models/mcp_discover_tools_request_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpDiscoverToolsRequestFiles") @_attrs_define class McpDiscoverToolsRequestFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_discover_tools_response.py b/src/graphn/_generated/models/mcp_discover_tools_response.py index bbbf0ea..a144656 100644 --- a/src/graphn/_generated/models/mcp_discover_tools_response.py +++ b/src/graphn/_generated/models/mcp_discover_tools_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mcp_dry_run_test_request.py b/src/graphn/_generated/models/mcp_dry_run_test_request.py index c503065..f34bf89 100644 --- a/src/graphn/_generated/models/mcp_dry_run_test_request.py +++ b/src/graphn/_generated/models/mcp_dry_run_test_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mcp_dry_run_test_request_files.py b/src/graphn/_generated/models/mcp_dry_run_test_request_files.py index 2eaad83..b936ea1 100644 --- a/src/graphn/_generated/models/mcp_dry_run_test_request_files.py +++ b/src/graphn/_generated/models/mcp_dry_run_test_request_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpDryRunTestRequestFiles") @_attrs_define class McpDryRunTestRequestFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_dry_run_test_request_input.py b/src/graphn/_generated/models/mcp_dry_run_test_request_input.py index 0ed19b3..e9474f2 100644 --- a/src/graphn/_generated/models/mcp_dry_run_test_request_input.py +++ b/src/graphn/_generated/models/mcp_dry_run_test_request_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpDryRunTestRequestInput") @_attrs_define class McpDryRunTestRequestInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_save_version_request.py b/src/graphn/_generated/models/mcp_save_version_request.py index ff46b8a..3a153e9 100644 --- a/src/graphn/_generated/models/mcp_save_version_request.py +++ b/src/graphn/_generated/models/mcp_save_version_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mcp_save_version_request_files.py b/src/graphn/_generated/models/mcp_save_version_request_files.py index a9bd398..eec0752 100644 --- a/src/graphn/_generated/models/mcp_save_version_request_files.py +++ b/src/graphn/_generated/models/mcp_save_version_request_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpSaveVersionRequestFiles") @_attrs_define class McpSaveVersionRequestFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_server.py b/src/graphn/_generated/models/mcp_server.py index 22b9c0e..15f2686 100644 --- a/src/graphn/_generated/models/mcp_server.py +++ b/src/graphn/_generated/models/mcp_server.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mcp_server_create.py b/src/graphn/_generated/models/mcp_server_create.py index 08a6d86..732931c 100644 --- a/src/graphn/_generated/models/mcp_server_create.py +++ b/src/graphn/_generated/models/mcp_server_create.py @@ -1,11 +1,11 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self +from ..models.mcp_server_create_type import McpServerCreateType from ..types import UNSET, Unset if TYPE_CHECKING: @@ -22,7 +22,7 @@ class McpServerCreate: """ Attributes: name (str): - type_ (str | Unset): + type_ (McpServerCreateType | Unset): files (McpServerCreateFiles | Unset): endpoint_url (str | Unset): workflow_id (str | Unset): @@ -31,7 +31,7 @@ class McpServerCreate: """ name: str - type_: str | Unset = UNSET + type_: McpServerCreateType | Unset = UNSET files: McpServerCreateFiles | Unset = UNSET endpoint_url: str | Unset = UNSET workflow_id: str | Unset = UNSET @@ -41,7 +41,9 @@ class McpServerCreate: def to_dict(self) -> dict[str, Any]: name = self.name - type_ = self.type_ + type_: str | Unset = UNSET + if not isinstance(self.type_, Unset): + type_ = self.type_.value files: dict[str, Any] | Unset = UNSET if not isinstance(self.files, Unset): @@ -90,7 +92,12 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: d = dict(src_dict) name = d.pop("name") - type_ = d.pop("type", UNSET) + _type_ = d.pop("type", UNSET) + type_: McpServerCreateType | Unset + if isinstance(_type_, Unset): + type_ = UNSET + else: + type_ = McpServerCreateType(_type_) _files = d.pop("files", UNSET) files: McpServerCreateFiles | Unset diff --git a/src/graphn/_generated/models/mcp_server_create_files.py b/src/graphn/_generated/models/mcp_server_create_files.py index eb36cfa..788c223 100644 --- a/src/graphn/_generated/models/mcp_server_create_files.py +++ b/src/graphn/_generated/models/mcp_server_create_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpServerCreateFiles") @_attrs_define class McpServerCreateFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_server_create_secrets.py b/src/graphn/_generated/models/mcp_server_create_secrets.py index 7a45c46..9cf81f5 100644 --- a/src/graphn/_generated/models/mcp_server_create_secrets.py +++ b/src/graphn/_generated/models/mcp_server_create_secrets.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpServerCreateSecrets") @_attrs_define class McpServerCreateSecrets: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_server_create_type.py b/src/graphn/_generated/models/mcp_server_create_type.py new file mode 100644 index 0000000..071d6e3 --- /dev/null +++ b/src/graphn/_generated/models/mcp_server_create_type.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class McpServerCreateType(StrEnum): + HOSTED = "hosted" + REMOTE = "remote" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/mcp_server_list.py b/src/graphn/_generated/models/mcp_server_list.py index 6cf1980..8e82efb 100644 --- a/src/graphn/_generated/models/mcp_server_list.py +++ b/src/graphn/_generated/models/mcp_server_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mcp_server_spec.py b/src/graphn/_generated/models/mcp_server_spec.py index 413bb06..6577436 100644 --- a/src/graphn/_generated/models/mcp_server_spec.py +++ b/src/graphn/_generated/models/mcp_server_spec.py @@ -1,17 +1,18 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self +from ..models.mcp_server_spec_type import McpServerSpecType from ..types import UNSET, Unset if TYPE_CHECKING: from ..models.mcp_server_spec_files import McpServerSpecFiles from ..models.mcp_server_spec_secrets import McpServerSpecSecrets + from ..models.mcp_server_spec_tool_capabilities import McpServerSpecToolCapabilities T = TypeVar("T", bound="McpServerSpec") @@ -21,20 +22,28 @@ class McpServerSpec: """ Attributes: - type_ (str | Unset): + type_ (McpServerSpecType | Unset): files (McpServerSpecFiles | Unset): endpoint_url (str | Unset): secrets (McpServerSpecSecrets | Unset): + provider_id (str | Unset): + connection_id (str | Unset): + tool_capabilities (McpServerSpecToolCapabilities | Unset): """ - type_: str | Unset = UNSET + type_: McpServerSpecType | Unset = UNSET files: McpServerSpecFiles | Unset = UNSET endpoint_url: str | Unset = UNSET secrets: McpServerSpecSecrets | Unset = UNSET + provider_id: str | Unset = UNSET + connection_id: str | Unset = UNSET + tool_capabilities: McpServerSpecToolCapabilities | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: - type_ = self.type_ + type_: str | Unset = UNSET + if not isinstance(self.type_, Unset): + type_ = self.type_.value files: dict[str, Any] | Unset = UNSET if not isinstance(self.files, Unset): @@ -46,6 +55,14 @@ def to_dict(self) -> dict[str, Any]: if not isinstance(self.secrets, Unset): secrets = self.secrets.to_dict() + provider_id = self.provider_id + + connection_id = self.connection_id + + tool_capabilities: dict[str, Any] | Unset = UNSET + if not isinstance(self.tool_capabilities, Unset): + tool_capabilities = self.tool_capabilities.to_dict() + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({}) @@ -57,6 +74,12 @@ def to_dict(self) -> dict[str, Any]: field_dict["endpoint_url"] = endpoint_url if secrets is not UNSET: field_dict["secrets"] = secrets + if provider_id is not UNSET: + field_dict["provider_id"] = provider_id + if connection_id is not UNSET: + field_dict["connection_id"] = connection_id + if tool_capabilities is not UNSET: + field_dict["tool_capabilities"] = tool_capabilities return field_dict @@ -64,9 +87,17 @@ def to_dict(self) -> dict[str, Any]: def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: from ..models.mcp_server_spec_files import McpServerSpecFiles from ..models.mcp_server_spec_secrets import McpServerSpecSecrets + from ..models.mcp_server_spec_tool_capabilities import ( + McpServerSpecToolCapabilities, + ) d = dict(src_dict) - type_ = d.pop("type", UNSET) + _type_ = d.pop("type", UNSET) + type_: McpServerSpecType | Unset + if isinstance(_type_, Unset): + type_ = UNSET + else: + type_ = McpServerSpecType(_type_) _files = d.pop("files", UNSET) files: McpServerSpecFiles | Unset @@ -84,11 +115,27 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: else: secrets = McpServerSpecSecrets.from_dict(_secrets) + provider_id = d.pop("provider_id", UNSET) + + connection_id = d.pop("connection_id", UNSET) + + _tool_capabilities = d.pop("tool_capabilities", UNSET) + tool_capabilities: McpServerSpecToolCapabilities | Unset + if isinstance(_tool_capabilities, Unset): + tool_capabilities = UNSET + else: + tool_capabilities = McpServerSpecToolCapabilities.from_dict( + _tool_capabilities + ) + mcp_server_spec = cls( type_=type_, files=files, endpoint_url=endpoint_url, secrets=secrets, + provider_id=provider_id, + connection_id=connection_id, + tool_capabilities=tool_capabilities, ) mcp_server_spec.additional_properties = d diff --git a/src/graphn/_generated/models/mcp_server_spec_files.py b/src/graphn/_generated/models/mcp_server_spec_files.py index 3915ec9..661ae4b 100644 --- a/src/graphn/_generated/models/mcp_server_spec_files.py +++ b/src/graphn/_generated/models/mcp_server_spec_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpServerSpecFiles") @_attrs_define class McpServerSpecFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_server_spec_secrets.py b/src/graphn/_generated/models/mcp_server_spec_secrets.py index af0ddc7..931f67a 100644 --- a/src/graphn/_generated/models/mcp_server_spec_secrets.py +++ b/src/graphn/_generated/models/mcp_server_spec_secrets.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpServerSpecSecrets") @_attrs_define class McpServerSpecSecrets: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_server_spec_tool_capabilities.py b/src/graphn/_generated/models/mcp_server_spec_tool_capabilities.py new file mode 100644 index 0000000..92ad81c --- /dev/null +++ b/src/graphn/_generated/models/mcp_server_spec_tool_capabilities.py @@ -0,0 +1,52 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="McpServerSpecToolCapabilities") + + +@_attrs_define +class McpServerSpecToolCapabilities: + additional_properties: dict[str, list[str]] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + + field_dict: dict[str, Any] = {} + for prop_name, prop in self.additional_properties.items(): + field_dict[prop_name] = prop + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + mcp_server_spec_tool_capabilities = cls() + + additional_properties = {} + for prop_name, prop_dict in d.items(): + additional_property = cast(list[str], prop_dict) + + additional_properties[prop_name] = additional_property + + mcp_server_spec_tool_capabilities.additional_properties = additional_properties + return mcp_server_spec_tool_capabilities + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> list[str]: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: list[str]) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/mcp_server_spec_type.py b/src/graphn/_generated/models/mcp_server_spec_type.py new file mode 100644 index 0000000..f8be16c --- /dev/null +++ b/src/graphn/_generated/models/mcp_server_spec_type.py @@ -0,0 +1,10 @@ +from enum import StrEnum + + +class McpServerSpecType(StrEnum): + HOSTED = "hosted" + MANAGED = "managed" + REMOTE = "remote" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/mcp_server_status.py b/src/graphn/_generated/models/mcp_server_status.py index b5a7b46..ac9a0ac 100644 --- a/src/graphn/_generated/models/mcp_server_status.py +++ b/src/graphn/_generated/models/mcp_server_status.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mcp_server_update.py b/src/graphn/_generated/models/mcp_server_update.py index 2d55919..3bfde07 100644 --- a/src/graphn/_generated/models/mcp_server_update.py +++ b/src/graphn/_generated/models/mcp_server_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mcp_server_update_files.py b/src/graphn/_generated/models/mcp_server_update_files.py index 3d3fb34..2ec92ec 100644 --- a/src/graphn/_generated/models/mcp_server_update_files.py +++ b/src/graphn/_generated/models/mcp_server_update_files.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpServerUpdateFiles") @_attrs_define class McpServerUpdateFiles: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_server_update_secrets.py b/src/graphn/_generated/models/mcp_server_update_secrets.py index c51c30e..c4fea49 100644 --- a/src/graphn/_generated/models/mcp_server_update_secrets.py +++ b/src/graphn/_generated/models/mcp_server_update_secrets.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="McpServerUpdateSecrets") @_attrs_define class McpServerUpdateSecrets: - """ """ - additional_properties: dict[str, str] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/mcp_server_version_list.py b/src/graphn/_generated/models/mcp_server_version_list.py index b9e6b62..f686319 100644 --- a/src/graphn/_generated/models/mcp_server_version_list.py +++ b/src/graphn/_generated/models/mcp_server_version_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/member.py b/src/graphn/_generated/models/member.py index 15dae5c..1891b04 100644 --- a/src/graphn/_generated/models/member.py +++ b/src/graphn/_generated/models/member.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.member_role import MemberRole from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/member_list.py b/src/graphn/_generated/models/member_list.py index 39e8b2a..2b5172e 100644 --- a/src/graphn/_generated/models/member_list.py +++ b/src/graphn/_generated/models/member_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/member_role.py b/src/graphn/_generated/models/member_role.py index d67391d..572f862 100644 --- a/src/graphn/_generated/models/member_role.py +++ b/src/graphn/_generated/models/member_role.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class MemberRole(str, Enum): +class MemberRole(StrEnum): ADMIN = "admin" MEMBER = "member" OWNER = "owner" diff --git a/src/graphn/_generated/models/member_role_update.py b/src/graphn/_generated/models/member_role_update.py index 482ba2e..81412e2 100644 --- a/src/graphn/_generated/models/member_role_update.py +++ b/src/graphn/_generated/models/member_role_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..models.member_role_update_role import MemberRoleUpdateRole diff --git a/src/graphn/_generated/models/member_role_update_role.py b/src/graphn/_generated/models/member_role_update_role.py index a4db1e4..521bbc5 100644 --- a/src/graphn/_generated/models/member_role_update_role.py +++ b/src/graphn/_generated/models/member_role_update_role.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class MemberRoleUpdateRole(str, Enum): +class MemberRoleUpdateRole(StrEnum): ADMIN = "admin" MEMBER = "member" OWNER = "owner" diff --git a/src/graphn/_generated/models/model.py b/src/graphn/_generated/models/model.py index ae91848..a46e77b 100644 --- a/src/graphn/_generated/models/model.py +++ b/src/graphn/_generated/models/model.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..models.model_object import ModelObject from ..models.model_owned_by import ModelOwnedBy diff --git a/src/graphn/_generated/models/model_list.py b/src/graphn/_generated/models/model_list.py index 4b6c6a7..189ccb3 100644 --- a/src/graphn/_generated/models/model_list.py +++ b/src/graphn/_generated/models/model_list.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..models.model_list_object import ModelListObject diff --git a/src/graphn/_generated/models/model_list_object.py b/src/graphn/_generated/models/model_list_object.py index 2c8dc96..5d054e6 100644 --- a/src/graphn/_generated/models/model_list_object.py +++ b/src/graphn/_generated/models/model_list_object.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class ModelListObject(str, Enum): +class ModelListObject(StrEnum): LIST = "list" def __str__(self) -> str: diff --git a/src/graphn/_generated/models/model_object.py b/src/graphn/_generated/models/model_object.py index d4fa554..5baeaa4 100644 --- a/src/graphn/_generated/models/model_object.py +++ b/src/graphn/_generated/models/model_object.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class ModelObject(str, Enum): +class ModelObject(StrEnum): MODEL = "model" def __str__(self) -> str: diff --git a/src/graphn/_generated/models/model_owned_by.py b/src/graphn/_generated/models/model_owned_by.py index 98b5948..f031e75 100644 --- a/src/graphn/_generated/models/model_owned_by.py +++ b/src/graphn/_generated/models/model_owned_by.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class ModelOwnedBy(str, Enum): +class ModelOwnedBy(StrEnum): BUILT_IN = "built-in" CUSTOM = "custom" IMPORTED = "imported" diff --git a/src/graphn/_generated/models/model_settings.py b/src/graphn/_generated/models/model_settings.py index 52ce00e..747997b 100644 --- a/src/graphn/_generated/models/model_settings.py +++ b/src/graphn/_generated/models/model_settings.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mpu_complete_request.py b/src/graphn/_generated/models/mpu_complete_request.py index 6386349..3fe133a 100644 --- a/src/graphn/_generated/models/mpu_complete_request.py +++ b/src/graphn/_generated/models/mpu_complete_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/mpu_part.py b/src/graphn/_generated/models/mpu_part.py index d4d5b9e..ae4e914 100644 --- a/src/graphn/_generated/models/mpu_part.py +++ b/src/graphn/_generated/models/mpu_part.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="MpuPart") diff --git a/src/graphn/_generated/models/opaque_object.py b/src/graphn/_generated/models/opaque_object.py index 6a08a19..11e858d 100644 --- a/src/graphn/_generated/models/opaque_object.py +++ b/src/graphn/_generated/models/opaque_object.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="OpaqueObject") diff --git a/src/graphn/_generated/models/organization.py b/src/graphn/_generated/models/organization.py index a8b7c77..147251a 100644 --- a/src/graphn/_generated/models/organization.py +++ b/src/graphn/_generated/models/organization.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.organization_type import OrganizationType diff --git a/src/graphn/_generated/models/organization_create.py b/src/graphn/_generated/models/organization_create.py index c6530eb..53ef083 100644 --- a/src/graphn/_generated/models/organization_create.py +++ b/src/graphn/_generated/models/organization_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..models.organization_create_type import OrganizationCreateType diff --git a/src/graphn/_generated/models/organization_create_type.py b/src/graphn/_generated/models/organization_create_type.py index fe8d27c..16a46e0 100644 --- a/src/graphn/_generated/models/organization_create_type.py +++ b/src/graphn/_generated/models/organization_create_type.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class OrganizationCreateType(str, Enum): +class OrganizationCreateType(StrEnum): PERSONAL = "personal" TEAM = "team" diff --git a/src/graphn/_generated/models/organization_list.py b/src/graphn/_generated/models/organization_list.py index 3fcc1fd..b945318 100644 --- a/src/graphn/_generated/models/organization_list.py +++ b/src/graphn/_generated/models/organization_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.organization import Organization diff --git a/src/graphn/_generated/models/organization_type.py b/src/graphn/_generated/models/organization_type.py index 7b93b42..5d94861 100644 --- a/src/graphn/_generated/models/organization_type.py +++ b/src/graphn/_generated/models/organization_type.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class OrganizationType(str, Enum): +class OrganizationType(StrEnum): PERSONAL = "personal" TEAM = "team" diff --git a/src/graphn/_generated/models/organization_update.py b/src/graphn/_generated/models/organization_update.py index c6bba03..93cfe4f 100644 --- a/src/graphn/_generated/models/organization_update.py +++ b/src/graphn/_generated/models/organization_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="OrganizationUpdate") diff --git a/src/graphn/_generated/models/payment_method.py b/src/graphn/_generated/models/payment_method.py index 147c57e..1b72092 100644 --- a/src/graphn/_generated/models/payment_method.py +++ b/src/graphn/_generated/models/payment_method.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="PaymentMethod") diff --git a/src/graphn/_generated/models/post_object_type.py b/src/graphn/_generated/models/post_object_type.py index 1e5f505..448fcbb 100644 --- a/src/graphn/_generated/models/post_object_type.py +++ b/src/graphn/_generated/models/post_object_type.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class PostObjectType(str, Enum): +class PostObjectType(StrEnum): DOWNLOAD = "download" UPLOAD = "upload" UPLOAD_PART = "upload_part" diff --git a/src/graphn/_generated/models/presigned_url.py b/src/graphn/_generated/models/presigned_url.py index 51c3ea1..ef00d69 100644 --- a/src/graphn/_generated/models/presigned_url.py +++ b/src/graphn/_generated/models/presigned_url.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="PresignedURL") diff --git a/src/graphn/_generated/models/publish_inference_router_body.py b/src/graphn/_generated/models/publish_inference_router_body.py new file mode 100644 index 0000000..9d18cd2 --- /dev/null +++ b/src/graphn/_generated/models/publish_inference_router_body.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="PublishInferenceRouterBody") + + +@_attrs_define +class PublishInferenceRouterBody: + """ + Attributes: + expected_draft_revision (int): + """ + + expected_draft_revision: int + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + expected_draft_revision = self.expected_draft_revision + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "expected_draft_revision": expected_draft_revision, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + expected_draft_revision = d.pop("expected_draft_revision") + + publish_inference_router_body = cls( + expected_draft_revision=expected_draft_revision, + ) + + publish_inference_router_body.additional_properties = d + return publish_inference_router_body + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/publish_message.py b/src/graphn/_generated/models/publish_message.py index c3ddeef..58529ee 100644 --- a/src/graphn/_generated/models/publish_message.py +++ b/src/graphn/_generated/models/publish_message.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/published_router_candidate.py b/src/graphn/_generated/models/published_router_candidate.py new file mode 100644 index 0000000..1c2e9a8 --- /dev/null +++ b/src/graphn/_generated/models/published_router_candidate.py @@ -0,0 +1,141 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="PublishedRouterCandidate") + + +@_attrs_define +class PublishedRouterCandidate: + """ + Attributes: + reference (str): + target (str): + lanes (list[str]): + weight (int): + order (int): + capabilities (list[str]): + context_window (int): + context_length (int): + quality_score (float): + prompt_per_1m (float): + completion_per_1m (float): + """ + + reference: str + target: str + lanes: list[str] + weight: int + order: int + capabilities: list[str] + context_window: int + context_length: int + quality_score: float + prompt_per_1m: float + completion_per_1m: float + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + reference = self.reference + + target = self.target + + lanes = self.lanes + + weight = self.weight + + order = self.order + + capabilities = self.capabilities + + context_window = self.context_window + + context_length = self.context_length + + quality_score = self.quality_score + + prompt_per_1m = self.prompt_per_1m + + completion_per_1m = self.completion_per_1m + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "reference": reference, + "target": target, + "lanes": lanes, + "weight": weight, + "order": order, + "capabilities": capabilities, + "context_window": context_window, + "context_length": context_length, + "quality_score": quality_score, + "prompt_per_1m": prompt_per_1m, + "completion_per_1m": completion_per_1m, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + reference = d.pop("reference") + + target = d.pop("target") + + lanes = cast(list[str], d.pop("lanes")) + + weight = d.pop("weight") + + order = d.pop("order") + + capabilities = cast(list[str], d.pop("capabilities")) + + context_window = d.pop("context_window") + + context_length = d.pop("context_length") + + quality_score = d.pop("quality_score") + + prompt_per_1m = d.pop("prompt_per_1m") + + completion_per_1m = d.pop("completion_per_1m") + + published_router_candidate = cls( + reference=reference, + target=target, + lanes=lanes, + weight=weight, + order=order, + capabilities=capabilities, + context_window=context_window, + context_length=context_length, + quality_score=quality_score, + prompt_per_1m=prompt_per_1m, + completion_per_1m=completion_per_1m, + ) + + published_router_candidate.additional_properties = d + return published_router_candidate + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/published_router_custom_lane.py b/src/graphn/_generated/models/published_router_custom_lane.py new file mode 100644 index 0000000..cef81b7 --- /dev/null +++ b/src/graphn/_generated/models/published_router_custom_lane.py @@ -0,0 +1,79 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.published_router_custom_lane_match import PublishedRouterCustomLaneMatch + +T = TypeVar("T", bound="PublishedRouterCustomLane") + + +@_attrs_define +class PublishedRouterCustomLane: + """ + Attributes: + reference (str): + match (PublishedRouterCustomLaneMatch): + phrases (list[str]): + """ + + reference: str + match: PublishedRouterCustomLaneMatch + phrases: list[str] + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + reference = self.reference + + match = self.match.value + + phrases = self.phrases + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "reference": reference, + "match": match, + "phrases": phrases, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + reference = d.pop("reference") + + match = PublishedRouterCustomLaneMatch(d.pop("match")) + + phrases = cast(list[str], d.pop("phrases")) + + published_router_custom_lane = cls( + reference=reference, + match=match, + phrases=phrases, + ) + + published_router_custom_lane.additional_properties = d + return published_router_custom_lane + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/published_router_custom_lane_match.py b/src/graphn/_generated/models/published_router_custom_lane_match.py new file mode 100644 index 0000000..b46b1a7 --- /dev/null +++ b/src/graphn/_generated/models/published_router_custom_lane_match.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class PublishedRouterCustomLaneMatch(StrEnum): + ALL = "all" + ANY = "any" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/published_router_decision.py b/src/graphn/_generated/models/published_router_decision.py new file mode 100644 index 0000000..1b7acdc --- /dev/null +++ b/src/graphn/_generated/models/published_router_decision.py @@ -0,0 +1,98 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Self, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="PublishedRouterDecision") + + +@_attrs_define +class PublishedRouterDecision: + """ + Attributes: + name (str): + lane (str): + candidate_refs (list[str]): + priority (int): + constraints (list[str] | Unset): + """ + + name: str + lane: str + candidate_refs: list[str] + priority: int + constraints: list[str] | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + name = self.name + + lane = self.lane + + candidate_refs = self.candidate_refs + + priority = self.priority + + constraints: list[str] | Unset = UNSET + if not isinstance(self.constraints, Unset): + constraints = self.constraints + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "name": name, + "lane": lane, + "candidate_refs": candidate_refs, + "priority": priority, + } + ) + if constraints is not UNSET: + field_dict["constraints"] = constraints + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + name = d.pop("name") + + lane = d.pop("lane") + + candidate_refs = cast(list[str], d.pop("candidate_refs")) + + priority = d.pop("priority") + + constraints = cast(list[str], d.pop("constraints", UNSET)) + + published_router_decision = cls( + name=name, + lane=lane, + candidate_refs=candidate_refs, + priority=priority, + constraints=constraints, + ) + + published_router_decision.additional_properties = d + return published_router_decision + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/published_router_revision.py b/src/graphn/_generated/models/published_router_revision.py new file mode 100644 index 0000000..4f7f1e3 --- /dev/null +++ b/src/graphn/_generated/models/published_router_revision.py @@ -0,0 +1,171 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, Self, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.published_router_revision_state import PublishedRouterRevisionState +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.published_router_candidate import PublishedRouterCandidate + from ..models.published_router_custom_lane import PublishedRouterCustomLane + from ..models.published_router_decision import PublishedRouterDecision + + +T = TypeVar("T", bound="PublishedRouterRevision") + + +@_attrs_define +class PublishedRouterRevision: + """ + Attributes: + router_id (str): + revision (str): + state (PublishedRouterRevisionState): + candidates (list[PublishedRouterCandidate]): + decisions (list[PublishedRouterDecision]): + general_candidate_refs (list[str]): + manifest_hash (str): + preferred_shard_id (str | Unset): Operator-owned placement hint; populated only for Platform Auto. + custom_lanes (list[PublishedRouterCustomLane] | Unset): Snapshot of every workspace custom lane the revision + uses. + """ + + router_id: str + revision: str + state: PublishedRouterRevisionState + candidates: list[PublishedRouterCandidate] + decisions: list[PublishedRouterDecision] + general_candidate_refs: list[str] + manifest_hash: str + preferred_shard_id: str | Unset = UNSET + custom_lanes: list[PublishedRouterCustomLane] | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + router_id = self.router_id + + revision = self.revision + + state = self.state.value + + candidates = [] + for candidates_item_data in self.candidates: + candidates_item = candidates_item_data.to_dict() + candidates.append(candidates_item) + + decisions = [] + for decisions_item_data in self.decisions: + decisions_item = decisions_item_data.to_dict() + decisions.append(decisions_item) + + general_candidate_refs = self.general_candidate_refs + + manifest_hash = self.manifest_hash + + preferred_shard_id = self.preferred_shard_id + + custom_lanes: list[dict[str, Any]] | Unset = UNSET + if not isinstance(self.custom_lanes, Unset): + custom_lanes = [] + for custom_lanes_item_data in self.custom_lanes: + custom_lanes_item = custom_lanes_item_data.to_dict() + custom_lanes.append(custom_lanes_item) + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "router_id": router_id, + "revision": revision, + "state": state, + "candidates": candidates, + "decisions": decisions, + "general_candidate_refs": general_candidate_refs, + "manifest_hash": manifest_hash, + } + ) + if preferred_shard_id is not UNSET: + field_dict["preferred_shard_id"] = preferred_shard_id + if custom_lanes is not UNSET: + field_dict["custom_lanes"] = custom_lanes + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + from ..models.published_router_candidate import PublishedRouterCandidate + from ..models.published_router_custom_lane import PublishedRouterCustomLane + from ..models.published_router_decision import PublishedRouterDecision + + d = dict(src_dict) + router_id = d.pop("router_id") + + revision = d.pop("revision") + + state = PublishedRouterRevisionState(d.pop("state")) + + candidates = [] + _candidates = d.pop("candidates") + for candidates_item_data in _candidates: + candidates_item = PublishedRouterCandidate.from_dict(candidates_item_data) + + candidates.append(candidates_item) + + decisions = [] + _decisions = d.pop("decisions") + for decisions_item_data in _decisions: + decisions_item = PublishedRouterDecision.from_dict(decisions_item_data) + + decisions.append(decisions_item) + + general_candidate_refs = cast(list[str], d.pop("general_candidate_refs")) + + manifest_hash = d.pop("manifest_hash") + + preferred_shard_id = d.pop("preferred_shard_id", UNSET) + + _custom_lanes = d.pop("custom_lanes", UNSET) + custom_lanes: list[PublishedRouterCustomLane] | Unset = UNSET + if _custom_lanes is not UNSET: + custom_lanes = [] + for custom_lanes_item_data in _custom_lanes: + custom_lanes_item = PublishedRouterCustomLane.from_dict( + custom_lanes_item_data + ) + + custom_lanes.append(custom_lanes_item) + + published_router_revision = cls( + router_id=router_id, + revision=revision, + state=state, + candidates=candidates, + decisions=decisions, + general_candidate_refs=general_candidate_refs, + manifest_hash=manifest_hash, + preferred_shard_id=preferred_shard_id, + custom_lanes=custom_lanes, + ) + + published_router_revision.additional_properties = d + return published_router_revision + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/published_router_revision_state.py b/src/graphn/_generated/models/published_router_revision_state.py new file mode 100644 index 0000000..41c52d2 --- /dev/null +++ b/src/graphn/_generated/models/published_router_revision_state.py @@ -0,0 +1,9 @@ +from enum import StrEnum + + +class PublishedRouterRevisionState(StrEnum): + ACTIVE = "active" + STAGED = "staged" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/graphn/_generated/models/resource_version_ref.py b/src/graphn/_generated/models/resource_version_ref.py index 9fe664c..95d5a98 100644 --- a/src/graphn/_generated/models/resource_version_ref.py +++ b/src/graphn/_generated/models/resource_version_ref.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/search_request.py b/src/graphn/_generated/models/search_request.py index 7148136..469ad99 100644 --- a/src/graphn/_generated/models/search_request.py +++ b/src/graphn/_generated/models/search_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset @@ -21,7 +20,9 @@ class SearchRequest: Attributes: query (str): top_k (int | Unset): - rerank (bool | Unset): + rerank (bool | Unset): Requests result reranking. When the vector top-K contains a video + hit, the batch remains in vector order and returned scores are + vector-similarity scores. reranker_model (str | Unset): score_threshold (float | Unset): metadata_filter (SearchRequestMetadataFilter | Unset): diff --git a/src/graphn/_generated/models/search_request_metadata_filter.py b/src/graphn/_generated/models/search_request_metadata_filter.py index f9fdfbe..dd76911 100644 --- a/src/graphn/_generated/models/search_request_metadata_filter.py +++ b/src/graphn/_generated/models/search_request_metadata_filter.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="SearchRequestMetadataFilter") @_attrs_define class SearchRequestMetadataFilter: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/search_response.py b/src/graphn/_generated/models/search_response.py index 098e7ff..f30bf31 100644 --- a/src/graphn/_generated/models/search_response.py +++ b/src/graphn/_generated/models/search_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.search_result import SearchResult diff --git a/src/graphn/_generated/models/search_result.py b/src/graphn/_generated/models/search_result.py index 6a138c8..b357a7e 100644 --- a/src/graphn/_generated/models/search_result.py +++ b/src/graphn/_generated/models/search_result.py @@ -1,11 +1,11 @@ from __future__ import annotations +import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset @@ -28,6 +28,9 @@ class SearchResult: document_type (str | Unset): image_url (str | Unset): video_url (str | Unset): + expires_at (datetime.datetime | Unset): + expires_in (int | Unset): + media_href (str | Unset): segment_start_sec (float | Unset): segment_end_sec (float | Unset): metadata (SearchResultMetadata | Unset): @@ -41,6 +44,9 @@ class SearchResult: document_type: str | Unset = UNSET image_url: str | Unset = UNSET video_url: str | Unset = UNSET + expires_at: datetime.datetime | Unset = UNSET + expires_in: int | Unset = UNSET + media_href: str | Unset = UNSET segment_start_sec: float | Unset = UNSET segment_end_sec: float | Unset = UNSET metadata: SearchResultMetadata | Unset = UNSET @@ -63,6 +69,14 @@ def to_dict(self) -> dict[str, Any]: video_url = self.video_url + expires_at: str | Unset = UNSET + if not isinstance(self.expires_at, Unset): + expires_at = self.expires_at.isoformat() + + expires_in = self.expires_in + + media_href = self.media_href + segment_start_sec = self.segment_start_sec segment_end_sec = self.segment_end_sec @@ -88,6 +102,12 @@ def to_dict(self) -> dict[str, Any]: field_dict["image_url"] = image_url if video_url is not UNSET: field_dict["video_url"] = video_url + if expires_at is not UNSET: + field_dict["expires_at"] = expires_at + if expires_in is not UNSET: + field_dict["expires_in"] = expires_in + if media_href is not UNSET: + field_dict["media_href"] = media_href if segment_start_sec is not UNSET: field_dict["segment_start_sec"] = segment_start_sec if segment_end_sec is not UNSET: @@ -118,6 +138,17 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: video_url = d.pop("video_url", UNSET) + _expires_at = d.pop("expires_at", UNSET) + expires_at: datetime.datetime | Unset + if isinstance(_expires_at, Unset): + expires_at = UNSET + else: + expires_at = datetime.datetime.fromisoformat(_expires_at) + + expires_in = d.pop("expires_in", UNSET) + + media_href = d.pop("media_href", UNSET) + segment_start_sec = d.pop("segment_start_sec", UNSET) segment_end_sec = d.pop("segment_end_sec", UNSET) @@ -138,6 +169,9 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: document_type=document_type, image_url=image_url, video_url=video_url, + expires_at=expires_at, + expires_in=expires_in, + media_href=media_href, segment_start_sec=segment_start_sec, segment_end_sec=segment_end_sec, metadata=metadata, diff --git a/src/graphn/_generated/models/search_result_metadata.py b/src/graphn/_generated/models/search_result_metadata.py index 822a035..23f0192 100644 --- a/src/graphn/_generated/models/search_result_metadata.py +++ b/src/graphn/_generated/models/search_result_metadata.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="SearchResultMetadata") @_attrs_define class SearchResultMetadata: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/secret.py b/src/graphn/_generated/models/secret.py index b0d52a0..0707b97 100644 --- a/src/graphn/_generated/models/secret.py +++ b/src/graphn/_generated/models/secret.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/secret_create.py b/src/graphn/_generated/models/secret_create.py index 127ec99..4a933d2 100644 --- a/src/graphn/_generated/models/secret_create.py +++ b/src/graphn/_generated/models/secret_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/secret_list.py b/src/graphn/_generated/models/secret_list.py index e045791..43af6d6 100644 --- a/src/graphn/_generated/models/secret_list.py +++ b/src/graphn/_generated/models/secret_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/secret_update.py b/src/graphn/_generated/models/secret_update.py index 31ae389..6956694 100644 --- a/src/graphn/_generated/models/secret_update.py +++ b/src/graphn/_generated/models/secret_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="SecretUpdate") diff --git a/src/graphn/_generated/models/storage.py b/src/graphn/_generated/models/storage.py index d930173..48c4bc3 100644 --- a/src/graphn/_generated/models/storage.py +++ b/src/graphn/_generated/models/storage.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/storage_create.py b/src/graphn/_generated/models/storage_create.py index 3f09050..546228f 100644 --- a/src/graphn/_generated/models/storage_create.py +++ b/src/graphn/_generated/models/storage_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/storage_file.py b/src/graphn/_generated/models/storage_file.py index c789a77..5c48429 100644 --- a/src/graphn/_generated/models/storage_file.py +++ b/src/graphn/_generated/models/storage_file.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/storage_file_list.py b/src/graphn/_generated/models/storage_file_list.py index 9522544..1d7adad 100644 --- a/src/graphn/_generated/models/storage_file_list.py +++ b/src/graphn/_generated/models/storage_file_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/storage_list.py b/src/graphn/_generated/models/storage_list.py index 1d88c9a..6f4bd52 100644 --- a/src/graphn/_generated/models/storage_list.py +++ b/src/graphn/_generated/models/storage_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.storage import Storage diff --git a/src/graphn/_generated/models/storage_post_result.py b/src/graphn/_generated/models/storage_post_result.py index fbc8356..53f3351 100644 --- a/src/graphn/_generated/models/storage_post_result.py +++ b/src/graphn/_generated/models/storage_post_result.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/storage_stats.py b/src/graphn/_generated/models/storage_stats.py index 70987fe..c5fbb98 100644 --- a/src/graphn/_generated/models/storage_stats.py +++ b/src/graphn/_generated/models/storage_stats.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="StorageStats") diff --git a/src/graphn/_generated/models/storage_upload.py b/src/graphn/_generated/models/storage_upload.py index 7d08080..9a7ad65 100644 --- a/src/graphn/_generated/models/storage_upload.py +++ b/src/graphn/_generated/models/storage_upload.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/submit_ingest_job_request.py b/src/graphn/_generated/models/submit_ingest_job_request.py index f8cddce..cd26139 100644 --- a/src/graphn/_generated/models/submit_ingest_job_request.py +++ b/src/graphn/_generated/models/submit_ingest_job_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self if TYPE_CHECKING: from ..models.ingest_item_input import IngestItemInput diff --git a/src/graphn/_generated/models/supported_architectures.py b/src/graphn/_generated/models/supported_architectures.py index 45e23c9..4e537bc 100644 --- a/src/graphn/_generated/models/supported_architectures.py +++ b/src/graphn/_generated/models/supported_architectures.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self if TYPE_CHECKING: from ..models.architecture_info import ArchitectureInfo diff --git a/src/graphn/_generated/models/test_connection_request.py b/src/graphn/_generated/models/test_connection_request.py index 83b4409..04b3e3e 100644 --- a/src/graphn/_generated/models/test_connection_request.py +++ b/src/graphn/_generated/models/test_connection_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/test_connection_response.py b/src/graphn/_generated/models/test_connection_response.py index b547880..17e8547 100644 --- a/src/graphn/_generated/models/test_connection_response.py +++ b/src/graphn/_generated/models/test_connection_response.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/test_connection_response_usage.py b/src/graphn/_generated/models/test_connection_response_usage.py index 8dadbda..2a0cc3f 100644 --- a/src/graphn/_generated/models/test_connection_response_usage.py +++ b/src/graphn/_generated/models/test_connection_response_usage.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="TestConnectionResponseUsage") diff --git a/src/graphn/_generated/models/tool_definition.py b/src/graphn/_generated/models/tool_definition.py index 7f6903c..2396c1d 100644 --- a/src/graphn/_generated/models/tool_definition.py +++ b/src/graphn/_generated/models/tool_definition.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/tool_definition_input_schema.py b/src/graphn/_generated/models/tool_definition_input_schema.py index e25313c..fc16d24 100644 --- a/src/graphn/_generated/models/tool_definition_input_schema.py +++ b/src/graphn/_generated/models/tool_definition_input_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="ToolDefinitionInputSchema") @_attrs_define class ToolDefinitionInputSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/tool_reference.py b/src/graphn/_generated/models/tool_reference.py index 0c4000a..20faa55 100644 --- a/src/graphn/_generated/models/tool_reference.py +++ b/src/graphn/_generated/models/tool_reference.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="ToolReference") diff --git a/src/graphn/_generated/models/tool_test_request.py b/src/graphn/_generated/models/tool_test_request.py index c808290..6b0b4d8 100644 --- a/src/graphn/_generated/models/tool_test_request.py +++ b/src/graphn/_generated/models/tool_test_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/tool_test_request_input.py b/src/graphn/_generated/models/tool_test_request_input.py index 7075426..eb93ae0 100644 --- a/src/graphn/_generated/models/tool_test_request_input.py +++ b/src/graphn/_generated/models/tool_test_request_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="ToolTestRequestInput") @_attrs_define class ToolTestRequestInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/tool_test_response.py b/src/graphn/_generated/models/tool_test_response.py index d787d0d..01dd237 100644 --- a/src/graphn/_generated/models/tool_test_response.py +++ b/src/graphn/_generated/models/tool_test_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/trigger.py b/src/graphn/_generated/models/trigger.py index 795f7a6..f5d1d00 100644 --- a/src/graphn/_generated/models/trigger.py +++ b/src/graphn/_generated/models/trigger.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset @@ -30,6 +29,8 @@ class Trigger: updated_at (datetime.datetime): cron_schedule (str | Unset): input_ (TriggerInput | Unset): + connection_id (str | Unset): + event_type (str | Unset): temporal_schedule_id (str | Unset): schedule_synced (bool | Unset): schedule_status (str | Unset): @@ -52,6 +53,8 @@ class Trigger: updated_at: datetime.datetime cron_schedule: str | Unset = UNSET input_: TriggerInput | Unset = UNSET + connection_id: str | Unset = UNSET + event_type: str | Unset = UNSET temporal_schedule_id: str | Unset = UNSET schedule_synced: bool | Unset = UNSET schedule_status: str | Unset = UNSET @@ -86,6 +89,10 @@ def to_dict(self) -> dict[str, Any]: if not isinstance(self.input_, Unset): input_ = self.input_.to_dict() + connection_id = self.connection_id + + event_type = self.event_type + temporal_schedule_id = self.temporal_schedule_id schedule_synced = self.schedule_synced @@ -125,6 +132,10 @@ def to_dict(self) -> dict[str, Any]: field_dict["cron_schedule"] = cron_schedule if input_ is not UNSET: field_dict["input"] = input_ + if connection_id is not UNSET: + field_dict["connection_id"] = connection_id + if event_type is not UNSET: + field_dict["event_type"] = event_type if temporal_schedule_id is not UNSET: field_dict["temporal_schedule_id"] = temporal_schedule_id if schedule_synced is not UNSET: @@ -178,6 +189,10 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: else: input_ = TriggerInput.from_dict(_input_) + connection_id = d.pop("connection_id", UNSET) + + event_type = d.pop("event_type", UNSET) + temporal_schedule_id = d.pop("temporal_schedule_id", UNSET) schedule_synced = d.pop("schedule_synced", UNSET) @@ -210,6 +225,8 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: updated_at=updated_at, cron_schedule=cron_schedule, input_=input_, + connection_id=connection_id, + event_type=event_type, temporal_schedule_id=temporal_schedule_id, schedule_synced=schedule_synced, schedule_status=schedule_status, diff --git a/src/graphn/_generated/models/trigger_create.py b/src/graphn/_generated/models/trigger_create.py index 36b6f6b..59f5f98 100644 --- a/src/graphn/_generated/models/trigger_create.py +++ b/src/graphn/_generated/models/trigger_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset @@ -21,9 +20,11 @@ class TriggerCreate: Attributes: name (str): workflow_id (str): - cron_schedule (str): + cron_schedule (str | Unset): input_ (TriggerCreateInput | Unset): enabled (bool | Unset): + connection_id (str | Unset): + event_type (str | Unset): webhook_auth (str | Unset): hmac_secret_id (str | Unset): hmac_algorithm (str | Unset): @@ -33,9 +34,11 @@ class TriggerCreate: name: str workflow_id: str - cron_schedule: str + cron_schedule: str | Unset = UNSET input_: TriggerCreateInput | Unset = UNSET enabled: bool | Unset = UNSET + connection_id: str | Unset = UNSET + event_type: str | Unset = UNSET webhook_auth: str | Unset = UNSET hmac_secret_id: str | Unset = UNSET hmac_algorithm: str | Unset = UNSET @@ -55,6 +58,10 @@ def to_dict(self) -> dict[str, Any]: enabled = self.enabled + connection_id = self.connection_id + + event_type = self.event_type + webhook_auth = self.webhook_auth hmac_secret_id = self.hmac_secret_id @@ -71,13 +78,18 @@ def to_dict(self) -> dict[str, Any]: { "name": name, "workflow_id": workflow_id, - "cron_schedule": cron_schedule, } ) + if cron_schedule is not UNSET: + field_dict["cron_schedule"] = cron_schedule if input_ is not UNSET: field_dict["input"] = input_ if enabled is not UNSET: field_dict["enabled"] = enabled + if connection_id is not UNSET: + field_dict["connection_id"] = connection_id + if event_type is not UNSET: + field_dict["event_type"] = event_type if webhook_auth is not UNSET: field_dict["webhook_auth"] = webhook_auth if hmac_secret_id is not UNSET: @@ -100,7 +112,7 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: workflow_id = d.pop("workflow_id") - cron_schedule = d.pop("cron_schedule") + cron_schedule = d.pop("cron_schedule", UNSET) _input_ = d.pop("input", UNSET) input_: TriggerCreateInput | Unset @@ -111,6 +123,10 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: enabled = d.pop("enabled", UNSET) + connection_id = d.pop("connection_id", UNSET) + + event_type = d.pop("event_type", UNSET) + webhook_auth = d.pop("webhook_auth", UNSET) hmac_secret_id = d.pop("hmac_secret_id", UNSET) @@ -127,6 +143,8 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: cron_schedule=cron_schedule, input_=input_, enabled=enabled, + connection_id=connection_id, + event_type=event_type, webhook_auth=webhook_auth, hmac_secret_id=hmac_secret_id, hmac_algorithm=hmac_algorithm, diff --git a/src/graphn/_generated/models/trigger_create_input.py b/src/graphn/_generated/models/trigger_create_input.py index 84c8d52..08c4631 100644 --- a/src/graphn/_generated/models/trigger_create_input.py +++ b/src/graphn/_generated/models/trigger_create_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="TriggerCreateInput") @_attrs_define class TriggerCreateInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/trigger_create_nested.py b/src/graphn/_generated/models/trigger_create_nested.py index d6dad2b..371c034 100644 --- a/src/graphn/_generated/models/trigger_create_nested.py +++ b/src/graphn/_generated/models/trigger_create_nested.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset @@ -20,9 +19,11 @@ class TriggerCreateNested: """ Attributes: name (str): - cron_schedule (str): + cron_schedule (str | Unset): input_ (TriggerCreateNestedInput | Unset): enabled (bool | Unset): + connection_id (str | Unset): + event_type (str | Unset): webhook_auth (str | Unset): hmac_secret_id (str | Unset): hmac_algorithm (str | Unset): @@ -31,9 +32,11 @@ class TriggerCreateNested: """ name: str - cron_schedule: str + cron_schedule: str | Unset = UNSET input_: TriggerCreateNestedInput | Unset = UNSET enabled: bool | Unset = UNSET + connection_id: str | Unset = UNSET + event_type: str | Unset = UNSET webhook_auth: str | Unset = UNSET hmac_secret_id: str | Unset = UNSET hmac_algorithm: str | Unset = UNSET @@ -51,6 +54,10 @@ def to_dict(self) -> dict[str, Any]: enabled = self.enabled + connection_id = self.connection_id + + event_type = self.event_type + webhook_auth = self.webhook_auth hmac_secret_id = self.hmac_secret_id @@ -66,13 +73,18 @@ def to_dict(self) -> dict[str, Any]: field_dict.update( { "name": name, - "cron_schedule": cron_schedule, } ) + if cron_schedule is not UNSET: + field_dict["cron_schedule"] = cron_schedule if input_ is not UNSET: field_dict["input"] = input_ if enabled is not UNSET: field_dict["enabled"] = enabled + if connection_id is not UNSET: + field_dict["connection_id"] = connection_id + if event_type is not UNSET: + field_dict["event_type"] = event_type if webhook_auth is not UNSET: field_dict["webhook_auth"] = webhook_auth if hmac_secret_id is not UNSET: @@ -93,7 +105,7 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: d = dict(src_dict) name = d.pop("name") - cron_schedule = d.pop("cron_schedule") + cron_schedule = d.pop("cron_schedule", UNSET) _input_ = d.pop("input", UNSET) input_: TriggerCreateNestedInput | Unset @@ -104,6 +116,10 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: enabled = d.pop("enabled", UNSET) + connection_id = d.pop("connection_id", UNSET) + + event_type = d.pop("event_type", UNSET) + webhook_auth = d.pop("webhook_auth", UNSET) hmac_secret_id = d.pop("hmac_secret_id", UNSET) @@ -119,6 +135,8 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: cron_schedule=cron_schedule, input_=input_, enabled=enabled, + connection_id=connection_id, + event_type=event_type, webhook_auth=webhook_auth, hmac_secret_id=hmac_secret_id, hmac_algorithm=hmac_algorithm, diff --git a/src/graphn/_generated/models/trigger_create_nested_input.py b/src/graphn/_generated/models/trigger_create_nested_input.py index 4cf0d94..2b80db6 100644 --- a/src/graphn/_generated/models/trigger_create_nested_input.py +++ b/src/graphn/_generated/models/trigger_create_nested_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="TriggerCreateNestedInput") @_attrs_define class TriggerCreateNestedInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/trigger_input.py b/src/graphn/_generated/models/trigger_input.py index 4498bc1..0d2f758 100644 --- a/src/graphn/_generated/models/trigger_input.py +++ b/src/graphn/_generated/models/trigger_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="TriggerInput") @_attrs_define class TriggerInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/trigger_list.py b/src/graphn/_generated/models/trigger_list.py index 47c19c4..ae5861c 100644 --- a/src/graphn/_generated/models/trigger_list.py +++ b/src/graphn/_generated/models/trigger_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self if TYPE_CHECKING: from ..models.trigger import Trigger diff --git a/src/graphn/_generated/models/trigger_update.py b/src/graphn/_generated/models/trigger_update.py index c9116d8..cb3ee37 100644 --- a/src/graphn/_generated/models/trigger_update.py +++ b/src/graphn/_generated/models/trigger_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset @@ -23,6 +22,8 @@ class TriggerUpdate: cron_schedule (str | Unset): input_ (TriggerUpdateInput | Unset): enabled (bool | Unset): + connection_id (str | Unset): + event_type (str | Unset): webhook_auth (str | Unset): hmac_secret_id (str | Unset): hmac_algorithm (str | Unset): @@ -34,6 +35,8 @@ class TriggerUpdate: cron_schedule: str | Unset = UNSET input_: TriggerUpdateInput | Unset = UNSET enabled: bool | Unset = UNSET + connection_id: str | Unset = UNSET + event_type: str | Unset = UNSET webhook_auth: str | Unset = UNSET hmac_secret_id: str | Unset = UNSET hmac_algorithm: str | Unset = UNSET @@ -51,6 +54,10 @@ def to_dict(self) -> dict[str, Any]: enabled = self.enabled + connection_id = self.connection_id + + event_type = self.event_type + webhook_auth = self.webhook_auth hmac_secret_id = self.hmac_secret_id @@ -72,6 +79,10 @@ def to_dict(self) -> dict[str, Any]: field_dict["input"] = input_ if enabled is not UNSET: field_dict["enabled"] = enabled + if connection_id is not UNSET: + field_dict["connection_id"] = connection_id + if event_type is not UNSET: + field_dict["event_type"] = event_type if webhook_auth is not UNSET: field_dict["webhook_auth"] = webhook_auth if hmac_secret_id is not UNSET: @@ -103,6 +114,10 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: enabled = d.pop("enabled", UNSET) + connection_id = d.pop("connection_id", UNSET) + + event_type = d.pop("event_type", UNSET) + webhook_auth = d.pop("webhook_auth", UNSET) hmac_secret_id = d.pop("hmac_secret_id", UNSET) @@ -118,6 +133,8 @@ def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: cron_schedule=cron_schedule, input_=input_, enabled=enabled, + connection_id=connection_id, + event_type=event_type, webhook_auth=webhook_auth, hmac_secret_id=hmac_secret_id, hmac_algorithm=hmac_algorithm, diff --git a/src/graphn/_generated/models/trigger_update_input.py b/src/graphn/_generated/models/trigger_update_input.py index 9198e60..94ee7ef 100644 --- a/src/graphn/_generated/models/trigger_update_input.py +++ b/src/graphn/_generated/models/trigger_update_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="TriggerUpdateInput") @_attrs_define class TriggerUpdateInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/tts_request.py b/src/graphn/_generated/models/tts_request.py index a529339..eda3c3b 100644 --- a/src/graphn/_generated/models/tts_request.py +++ b/src/graphn/_generated/models/tts_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..models.tts_request_response_format import TTSRequestResponseFormat from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/tts_request_response_format.py b/src/graphn/_generated/models/tts_request_response_format.py index 114cae2..46a34d3 100644 --- a/src/graphn/_generated/models/tts_request_response_format.py +++ b/src/graphn/_generated/models/tts_request_response_format.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class TTSRequestResponseFormat(str, Enum): +class TTSRequestResponseFormat(StrEnum): FLAC = "flac" MP3 = "mp3" OPUS = "opus" diff --git a/src/graphn/_generated/models/upload_document_from_url_request.py b/src/graphn/_generated/models/upload_document_from_url_request.py index 1e3ee5a..ed6365f 100644 --- a/src/graphn/_generated/models/upload_document_from_url_request.py +++ b/src/graphn/_generated/models/upload_document_from_url_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/upload_document_from_url_request_metadata.py b/src/graphn/_generated/models/upload_document_from_url_request_metadata.py index bf89716..ad1a7fc 100644 --- a/src/graphn/_generated/models/upload_document_from_url_request_metadata.py +++ b/src/graphn/_generated/models/upload_document_from_url_request_metadata.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="UploadDocumentFromURLRequestMetadata") @_attrs_define class UploadDocumentFromURLRequestMetadata: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/upload_knowledgebase_document_files_body.py b/src/graphn/_generated/models/upload_knowledgebase_document_files_body.py index 5824847..6f87b63 100644 --- a/src/graphn/_generated/models/upload_knowledgebase_document_files_body.py +++ b/src/graphn/_generated/models/upload_knowledgebase_document_files_body.py @@ -2,10 +2,9 @@ from collections.abc import Mapping from io import BytesIO -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from .. import types from ..types import UNSET, File, Unset diff --git a/src/graphn/_generated/models/upload_storage_file_body.py b/src/graphn/_generated/models/upload_storage_file_body.py index 435409b..e491ff6 100644 --- a/src/graphn/_generated/models/upload_storage_file_body.py +++ b/src/graphn/_generated/models/upload_storage_file_body.py @@ -2,10 +2,9 @@ from collections.abc import Mapping from io import BytesIO -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from .. import types from ..types import File diff --git a/src/graphn/_generated/models/usage_day.py b/src/graphn/_generated/models/usage_day.py new file mode 100644 index 0000000..8ab3708 --- /dev/null +++ b/src/graphn/_generated/models/usage_day.py @@ -0,0 +1,70 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import Any, Self, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="UsageDay") + + +@_attrs_define +class UsageDay: + """ + Attributes: + date (datetime.date): + amount_cents (int): + """ + + date: datetime.date + amount_cents: int + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + date = self.date.isoformat() + + amount_cents = self.amount_cents + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "date": date, + "amountCents": amount_cents, + } + ) + + return field_dict + + @classmethod + def from_dict(cls, src_dict: Mapping[str, Any]) -> Self: + d = dict(src_dict) + date = datetime.date.fromisoformat(d.pop("date")) + + amount_cents = d.pop("amountCents") + + usage_day = cls( + date=date, + amount_cents=amount_cents, + ) + + usage_day.additional_properties = d + return usage_day + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/graphn/_generated/models/validate_model_request.py b/src/graphn/_generated/models/validate_model_request.py index b6feb9d..fe0739f 100644 --- a/src/graphn/_generated/models/validate_model_request.py +++ b/src/graphn/_generated/models/validate_model_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self from ..models.validate_model_request_quantization import ( ValidateModelRequestQuantization, diff --git a/src/graphn/_generated/models/validate_model_request_quantization.py b/src/graphn/_generated/models/validate_model_request_quantization.py index 1e132cc..f2939ff 100644 --- a/src/graphn/_generated/models/validate_model_request_quantization.py +++ b/src/graphn/_generated/models/validate_model_request_quantization.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class ValidateModelRequestQuantization(str, Enum): +class ValidateModelRequestQuantization(StrEnum): AWQ = "awq" FP8 = "fp8" GGUF = "gguf" diff --git a/src/graphn/_generated/models/validate_model_request_weight_source.py b/src/graphn/_generated/models/validate_model_request_weight_source.py index 8b29625..5b514ed 100644 --- a/src/graphn/_generated/models/validate_model_request_weight_source.py +++ b/src/graphn/_generated/models/validate_model_request_weight_source.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class ValidateModelRequestWeightSource(str, Enum): +class ValidateModelRequestWeightSource(StrEnum): HUGGINGFACE = "huggingface" S3_ASSUME_ROLE = "s3_assume_role" diff --git a/src/graphn/_generated/models/validate_model_response.py b/src/graphn/_generated/models/validate_model_response.py index 9eb28d1..203de45 100644 --- a/src/graphn/_generated/models/validate_model_response.py +++ b/src/graphn/_generated/models/validate_model_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar, cast +from typing import Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..models.validate_model_response_artifact_type import ( ValidateModelResponseArtifactType, diff --git a/src/graphn/_generated/models/validate_model_response_artifact_type.py b/src/graphn/_generated/models/validate_model_response_artifact_type.py index 07adb92..eb62adf 100644 --- a/src/graphn/_generated/models/validate_model_response_artifact_type.py +++ b/src/graphn/_generated/models/validate_model_response_artifact_type.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class ValidateModelResponseArtifactType(str, Enum): +class ValidateModelResponseArtifactType(StrEnum): BASE = "base" LORA = "lora" diff --git a/src/graphn/_generated/models/weight_source.py b/src/graphn/_generated/models/weight_source.py index c60e9ad..b87eebd 100644 --- a/src/graphn/_generated/models/weight_source.py +++ b/src/graphn/_generated/models/weight_source.py @@ -1,7 +1,7 @@ -from enum import Enum +from enum import StrEnum -class WeightSource(str, Enum): +class WeightSource(StrEnum): HUGGINGFACE = "huggingface" S3_ASSUME_ROLE = "s3_assume_role" S3_PRESIGNED = "s3_presigned" diff --git a/src/graphn/_generated/models/workflow.py b/src/graphn/_generated/models/workflow.py index 48cc891..e334e56 100644 --- a/src/graphn/_generated/models/workflow.py +++ b/src/graphn/_generated/models/workflow.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar, cast +from typing import TYPE_CHECKING, Any, Self, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_bundle.py b/src/graphn/_generated/models/workflow_bundle.py index a5c3779..7363a27 100644 --- a/src/graphn/_generated/models/workflow_bundle.py +++ b/src/graphn/_generated/models/workflow_bundle.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_bundle_agents_item.py b/src/graphn/_generated/models/workflow_bundle_agents_item.py index 0764935..dec050d 100644 --- a/src/graphn/_generated/models/workflow_bundle_agents_item.py +++ b/src/graphn/_generated/models/workflow_bundle_agents_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowBundleAgentsItem") @_attrs_define class WorkflowBundleAgentsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_bundle_functions_item.py b/src/graphn/_generated/models/workflow_bundle_functions_item.py index 11fddfc..a3e4d36 100644 --- a/src/graphn/_generated/models/workflow_bundle_functions_item.py +++ b/src/graphn/_generated/models/workflow_bundle_functions_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowBundleFunctionsItem") @_attrs_define class WorkflowBundleFunctionsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_bundle_mcp_servers_item.py b/src/graphn/_generated/models/workflow_bundle_mcp_servers_item.py index fbf8f31..235d1d3 100644 --- a/src/graphn/_generated/models/workflow_bundle_mcp_servers_item.py +++ b/src/graphn/_generated/models/workflow_bundle_mcp_servers_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowBundleMcpServersItem") @_attrs_define class WorkflowBundleMcpServersItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_bundle_save.py b/src/graphn/_generated/models/workflow_bundle_save.py index 2bc944e..ddcd9e6 100644 --- a/src/graphn/_generated/models/workflow_bundle_save.py +++ b/src/graphn/_generated/models/workflow_bundle_save.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_bundle_save_response.py b/src/graphn/_generated/models/workflow_bundle_save_response.py index ef968f5..c716bf1 100644 --- a/src/graphn/_generated/models/workflow_bundle_save_response.py +++ b/src/graphn/_generated/models/workflow_bundle_save_response.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_bundle_save_response_agents_item.py b/src/graphn/_generated/models/workflow_bundle_save_response_agents_item.py index 51e5199..a5eaef4 100644 --- a/src/graphn/_generated/models/workflow_bundle_save_response_agents_item.py +++ b/src/graphn/_generated/models/workflow_bundle_save_response_agents_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowBundleSaveResponseAgentsItem") @_attrs_define class WorkflowBundleSaveResponseAgentsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_bundle_save_response_functions_item.py b/src/graphn/_generated/models/workflow_bundle_save_response_functions_item.py index 9de4977..9907e0f 100644 --- a/src/graphn/_generated/models/workflow_bundle_save_response_functions_item.py +++ b/src/graphn/_generated/models/workflow_bundle_save_response_functions_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowBundleSaveResponseFunctionsItem") @_attrs_define class WorkflowBundleSaveResponseFunctionsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_bundle_save_response_mcp_servers_item.py b/src/graphn/_generated/models/workflow_bundle_save_response_mcp_servers_item.py index 43dc70d..a615cc4 100644 --- a/src/graphn/_generated/models/workflow_bundle_save_response_mcp_servers_item.py +++ b/src/graphn/_generated/models/workflow_bundle_save_response_mcp_servers_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowBundleSaveResponseMcpServersItem") @_attrs_define class WorkflowBundleSaveResponseMcpServersItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_bundle_save_response_validation.py b/src/graphn/_generated/models/workflow_bundle_save_response_validation.py index 992a5ef..feaec05 100644 --- a/src/graphn/_generated/models/workflow_bundle_save_response_validation.py +++ b/src/graphn/_generated/models/workflow_bundle_save_response_validation.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_bundle_save_response_validation_errors_item.py b/src/graphn/_generated/models/workflow_bundle_save_response_validation_errors_item.py index 596ae2e..3d2eee6 100644 --- a/src/graphn/_generated/models/workflow_bundle_save_response_validation_errors_item.py +++ b/src/graphn/_generated/models/workflow_bundle_save_response_validation_errors_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowBundleSaveResponseValidationErrorsItem") @_attrs_define class WorkflowBundleSaveResponseValidationErrorsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_create.py b/src/graphn/_generated/models/workflow_create.py index 3fa2382..ed39fac 100644 --- a/src/graphn/_generated/models/workflow_create.py +++ b/src/graphn/_generated/models/workflow_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar, cast +from typing import TYPE_CHECKING, Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_create_input_schema.py b/src/graphn/_generated/models/workflow_create_input_schema.py index c2ca5d1..4ddac8e 100644 --- a/src/graphn/_generated/models/workflow_create_input_schema.py +++ b/src/graphn/_generated/models/workflow_create_input_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowCreateInputSchema") @_attrs_define class WorkflowCreateInputSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_create_layout.py b/src/graphn/_generated/models/workflow_create_layout.py index ebee208..238d87f 100644 --- a/src/graphn/_generated/models/workflow_create_layout.py +++ b/src/graphn/_generated/models/workflow_create_layout.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowCreateLayout") @_attrs_define class WorkflowCreateLayout: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_create_output_schema.py b/src/graphn/_generated/models/workflow_create_output_schema.py index 7f1812e..7528e2e 100644 --- a/src/graphn/_generated/models/workflow_create_output_schema.py +++ b/src/graphn/_generated/models/workflow_create_output_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowCreateOutputSchema") @_attrs_define class WorkflowCreateOutputSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_create_source.py b/src/graphn/_generated/models/workflow_create_source.py index 534effd..7bba347 100644 --- a/src/graphn/_generated/models/workflow_create_source.py +++ b/src/graphn/_generated/models/workflow_create_source.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowCreateSource") @_attrs_define class WorkflowCreateSource: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_input_schema.py b/src/graphn/_generated/models/workflow_input_schema.py index d7d6d42..59edefa 100644 --- a/src/graphn/_generated/models/workflow_input_schema.py +++ b/src/graphn/_generated/models/workflow_input_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowInputSchema") @_attrs_define class WorkflowInputSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_layout.py b/src/graphn/_generated/models/workflow_layout.py index 098c680..6be7e98 100644 --- a/src/graphn/_generated/models/workflow_layout.py +++ b/src/graphn/_generated/models/workflow_layout.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowLayout") @_attrs_define class WorkflowLayout: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_list.py b/src/graphn/_generated/models/workflow_list.py index a1c651e..09adeb1 100644 --- a/src/graphn/_generated/models/workflow_list.py +++ b/src/graphn/_generated/models/workflow_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_output_schema.py b/src/graphn/_generated/models/workflow_output_schema.py index 345b18d..c8b673a 100644 --- a/src/graphn/_generated/models/workflow_output_schema.py +++ b/src/graphn/_generated/models/workflow_output_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowOutputSchema") @_attrs_define class WorkflowOutputSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_run_request.py b/src/graphn/_generated/models/workflow_run_request.py index 273ce3f..04d201b 100644 --- a/src/graphn/_generated/models/workflow_run_request.py +++ b/src/graphn/_generated/models/workflow_run_request.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_run_request_input.py b/src/graphn/_generated/models/workflow_run_request_input.py index fe769af..7a0ef70 100644 --- a/src/graphn/_generated/models/workflow_run_request_input.py +++ b/src/graphn/_generated/models/workflow_run_request_input.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowRunRequestInput") @_attrs_define class WorkflowRunRequestInput: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_run_result.py b/src/graphn/_generated/models/workflow_run_result.py index 6893aad..2a37038 100644 --- a/src/graphn/_generated/models/workflow_run_result.py +++ b/src/graphn/_generated/models/workflow_run_result.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_run_result_node_results_item.py b/src/graphn/_generated/models/workflow_run_result_node_results_item.py index 7f662a6..6925abd 100644 --- a/src/graphn/_generated/models/workflow_run_result_node_results_item.py +++ b/src/graphn/_generated/models/workflow_run_result_node_results_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowRunResultNodeResultsItem") @_attrs_define class WorkflowRunResultNodeResultsItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_run_result_resources_accessed_item.py b/src/graphn/_generated/models/workflow_run_result_resources_accessed_item.py index 3db5e5c..7ea15f6 100644 --- a/src/graphn/_generated/models/workflow_run_result_resources_accessed_item.py +++ b/src/graphn/_generated/models/workflow_run_result_resources_accessed_item.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowRunResultResourcesAccessedItem") @_attrs_define class WorkflowRunResultResourcesAccessedItem: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_run_result_trace.py b/src/graphn/_generated/models/workflow_run_result_trace.py index c25770f..ce7afc0 100644 --- a/src/graphn/_generated/models/workflow_run_result_trace.py +++ b/src/graphn/_generated/models/workflow_run_result_trace.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowRunResultTrace") @_attrs_define class WorkflowRunResultTrace: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_source.py b/src/graphn/_generated/models/workflow_source.py index 0b59b8a..ee07c59 100644 --- a/src/graphn/_generated/models/workflow_source.py +++ b/src/graphn/_generated/models/workflow_source.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowSource") @_attrs_define class WorkflowSource: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_update.py b/src/graphn/_generated/models/workflow_update.py index b432efa..f977e03 100644 --- a/src/graphn/_generated/models/workflow_update.py +++ b/src/graphn/_generated/models/workflow_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar, cast +from typing import TYPE_CHECKING, Any, Self, TypeVar, cast from attrs import define as _attrs_define -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_update_input_schema.py b/src/graphn/_generated/models/workflow_update_input_schema.py index 6689a45..211d4c9 100644 --- a/src/graphn/_generated/models/workflow_update_input_schema.py +++ b/src/graphn/_generated/models/workflow_update_input_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowUpdateInputSchema") @_attrs_define class WorkflowUpdateInputSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_update_layout.py b/src/graphn/_generated/models/workflow_update_layout.py index f49fff9..8ad6941 100644 --- a/src/graphn/_generated/models/workflow_update_layout.py +++ b/src/graphn/_generated/models/workflow_update_layout.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowUpdateLayout") @_attrs_define class WorkflowUpdateLayout: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_update_output_schema.py b/src/graphn/_generated/models/workflow_update_output_schema.py index d1930ac..9a1c551 100644 --- a/src/graphn/_generated/models/workflow_update_output_schema.py +++ b/src/graphn/_generated/models/workflow_update_output_schema.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowUpdateOutputSchema") @_attrs_define class WorkflowUpdateOutputSchema: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_version_detail.py b/src/graphn/_generated/models/workflow_version_detail.py index b62df28..28619ae 100644 --- a/src/graphn/_generated/models/workflow_version_detail.py +++ b/src/graphn/_generated/models/workflow_version_detail.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workflow_version_detail_resource_pins.py b/src/graphn/_generated/models/workflow_version_detail_resource_pins.py index 06c2b5a..aba7371 100644 --- a/src/graphn/_generated/models/workflow_version_detail_resource_pins.py +++ b/src/graphn/_generated/models/workflow_version_detail_resource_pins.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowVersionDetailResourcePins") @_attrs_define class WorkflowVersionDetailResourcePins: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_version_detail_resource_snapshots.py b/src/graphn/_generated/models/workflow_version_detail_resource_snapshots.py index 243c387..e023d77 100644 --- a/src/graphn/_generated/models/workflow_version_detail_resource_snapshots.py +++ b/src/graphn/_generated/models/workflow_version_detail_resource_snapshots.py @@ -1,19 +1,16 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self T = TypeVar("T", bound="WorkflowVersionDetailResourceSnapshots") @_attrs_define class WorkflowVersionDetailResourceSnapshots: - """ """ - additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: diff --git a/src/graphn/_generated/models/workflow_version_list.py b/src/graphn/_generated/models/workflow_version_list.py index 703d155..e54a9e2 100644 --- a/src/graphn/_generated/models/workflow_version_list.py +++ b/src/graphn/_generated/models/workflow_version_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workspace.py b/src/graphn/_generated/models/workspace.py index 7e921cc..0d1d5e1 100644 --- a/src/graphn/_generated/models/workspace.py +++ b/src/graphn/_generated/models/workspace.py @@ -2,11 +2,10 @@ import datetime from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workspace_create.py b/src/graphn/_generated/models/workspace_create.py index 4bcb1fd..4009997 100644 --- a/src/graphn/_generated/models/workspace_create.py +++ b/src/graphn/_generated/models/workspace_create.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="WorkspaceCreate") diff --git a/src/graphn/_generated/models/workspace_list.py b/src/graphn/_generated/models/workspace_list.py index e0e3532..96f28cd 100644 --- a/src/graphn/_generated/models/workspace_list.py +++ b/src/graphn/_generated/models/workspace_list.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset diff --git a/src/graphn/_generated/models/workspace_update.py b/src/graphn/_generated/models/workspace_update.py index b484508..e5ef6f8 100644 --- a/src/graphn/_generated/models/workspace_update.py +++ b/src/graphn/_generated/models/workspace_update.py @@ -1,10 +1,9 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define -from typing_extensions import Self T = TypeVar("T", bound="WorkspaceUpdate") diff --git a/src/graphn/_generated/models/workspace_usage.py b/src/graphn/_generated/models/workspace_usage.py index cfa44f7..b183d5e 100644 --- a/src/graphn/_generated/models/workspace_usage.py +++ b/src/graphn/_generated/models/workspace_usage.py @@ -1,11 +1,10 @@ from __future__ import annotations from collections.abc import Mapping -from typing import Any, TypeVar +from typing import Any, Self, TypeVar from attrs import define as _attrs_define from attrs import field as _attrs_field -from typing_extensions import Self from ..types import UNSET, Unset