Compare commits
50 Commits
Author | SHA1 | Date | |
---|---|---|---|
af55db8f70 | |||
cf383e2405 | |||
26cc03ef01 | |||
d81ecb7615 | |||
1afdcc70b5 | |||
c9ef09320d | |||
243ae12ed3 | |||
ed50b95b1e | |||
6b0cc4a2b1 | |||
9b8fab62c6 | |||
24e80f4568 | |||
1744ab6385 | |||
06a646e558 | |||
2fd4d315db | |||
04efe52feb | |||
0d44cc2c23 | |||
0e32cfdae8 | |||
7733b0658c | |||
cfcad06e60 | |||
6572a92004 | |||
2bd736096a | |||
c8a1761f16 | |||
282bffa217 | |||
d31c0f8428 | |||
4f8c3b25f4 | |||
bb348045ec | |||
b1b98b6954 | |||
983f812268 | |||
71dc1e9e00 | |||
583d5636aa | |||
cafa54f343 | |||
ea0afa0955 | |||
ab4eebfdb1 | |||
a7f6433735 | |||
d32c643b1e | |||
c071f4011b | |||
29926d6a92 | |||
c5733f8dc1 | |||
5711856363 | |||
7f453e7de8 | |||
ebcc2ff650 | |||
7663ef0a1a | |||
69b0706d4a | |||
7e5d830ef9 | |||
5164f71fef | |||
cfeea4d9a5 | |||
cbd2c2122d | |||
8d945dec10 | |||
8dc7cef38c | |||
aa1343af89 |
111
.github/dependabot.yml
vendored
111
.github/dependabot.yml
vendored
@ -1,21 +1,96 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
# DO NOT EDIT THIS FILE. This dependabot file was generated
|
||||
# by https://github.com/KittyCAD/ciso Changes to this file should be addressed in
|
||||
# the ciso repository.
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "pip" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "daily"
|
||||
reviewers:
|
||||
- jessfraz
|
||||
- greg-kcio
|
||||
- package-ecosystem: "github-actions" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "daily"
|
||||
reviewers:
|
||||
- jessfraz
|
||||
- greg-kcio
|
||||
- package-ecosystem: github-actions
|
||||
directory: /
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: monday
|
||||
time: '03:00'
|
||||
timezone: America/Los_Angeles
|
||||
open-pull-requests-limit: 5
|
||||
groups:
|
||||
security:
|
||||
applies-to: security-updates
|
||||
update-types:
|
||||
- major
|
||||
- minor
|
||||
- patch
|
||||
patch:
|
||||
applies-to: version-updates
|
||||
update-types:
|
||||
- patch
|
||||
major:
|
||||
applies-to: version-updates
|
||||
update-types:
|
||||
- major
|
||||
minor:
|
||||
applies-to: version-updates
|
||||
update-types:
|
||||
- minor
|
||||
- patch
|
||||
- package-ecosystem: pip
|
||||
directory: /
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: monday
|
||||
time: '03:00'
|
||||
timezone: America/Los_Angeles
|
||||
open-pull-requests-limit: 5
|
||||
reviewers:
|
||||
- greg-kcio
|
||||
- jessfraz
|
||||
groups:
|
||||
security:
|
||||
applies-to: security-updates
|
||||
update-types:
|
||||
- major
|
||||
- minor
|
||||
- patch
|
||||
patch:
|
||||
applies-to: version-updates
|
||||
update-types:
|
||||
- patch
|
||||
major:
|
||||
applies-to: version-updates
|
||||
update-types:
|
||||
- major
|
||||
minor:
|
||||
applies-to: version-updates
|
||||
update-types:
|
||||
- minor
|
||||
- patch
|
||||
- package-ecosystem: docker
|
||||
directory: /
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: monday
|
||||
time: '03:00'
|
||||
timezone: America/Los_Angeles
|
||||
open-pull-requests-limit: 5
|
||||
reviewers:
|
||||
- greg-kcio
|
||||
- jessfraz
|
||||
groups:
|
||||
security:
|
||||
applies-to: security-updates
|
||||
update-types:
|
||||
- major
|
||||
- minor
|
||||
- patch
|
||||
patch:
|
||||
applies-to: version-updates
|
||||
update-types:
|
||||
- patch
|
||||
major:
|
||||
applies-to: version-updates
|
||||
update-types:
|
||||
- major
|
||||
minor:
|
||||
applies-to: version-updates
|
||||
update-types:
|
||||
- minor
|
||||
- patch
|
||||
|
2
.github/workflows/generate-docs.yml
vendored
2
.github/workflows/generate-docs.yml
vendored
@ -46,7 +46,7 @@ jobs:
|
||||
|
||||
- name: Check for modified files
|
||||
id: git-check
|
||||
run: echo ::set-output name=modified::$(if git diff-index --ignore-submodules --quiet HEAD --; then echo "false"; else echo "true"; fi)
|
||||
run: echo "modified=$(if [[ -z $(git status --porcelain --untracked-files=no --ignore-submodules) ]]; then echo "false"; else echo "true"; fi)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Commit changes, if any
|
||||
if: steps.git-check.outputs.modified == 'true'
|
||||
|
2
.github/workflows/update-spec-for-docs.yml
vendored
2
.github/workflows/update-spec-for-docs.yml
vendored
@ -15,7 +15,7 @@ jobs:
|
||||
name: update-spec
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/create-github-app-token@v1
|
||||
- uses: actions/create-github-app-token@v2
|
||||
id: app-token
|
||||
with:
|
||||
# required
|
||||
|
@ -1,4 +1,4 @@
|
||||
FROM python:3.9
|
||||
FROM python:3.13
|
||||
|
||||
RUN pip install \
|
||||
poetry
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -78,7 +78,7 @@ def sync(
|
||||
) -> Optional[Union[ApiToken, Error]]:
|
||||
"""This endpoint allows us to run API calls from our discord bot on behalf of a user. The user must have a discord account linked to their Zoo Account via oauth2 for this to work.
|
||||
|
||||
You must be a Zoo employee to use this endpoint.""" # noqa: E501
|
||||
You must be a Zoo admin to use this endpoint.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
discord_id=discord_id,
|
||||
@ -109,7 +109,7 @@ async def asyncio(
|
||||
) -> Optional[Union[ApiToken, Error]]:
|
||||
"""This endpoint allows us to run API calls from our discord bot on behalf of a user. The user must have a discord account linked to their Zoo Account via oauth2 for this to work.
|
||||
|
||||
You must be a Zoo employee to use this endpoint.""" # noqa: E501
|
||||
You must be a Zoo admin to use this endpoint.""" # noqa: E501
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
|
129
kittycad/api/ml/create_proprietary_to_kcl.py
Normal file
129
kittycad/api/ml/create_proprietary_to_kcl.py
Normal file
@ -0,0 +1,129 @@
|
||||
from typing import Any, Dict, Optional, Union
|
||||
|
||||
import httpx
|
||||
|
||||
from ...client import Client
|
||||
from ...models.code_option import CodeOption
|
||||
from ...models.error import Error
|
||||
from ...models.kcl_model import KclModel
|
||||
from ...types import Response
|
||||
|
||||
|
||||
def _get_kwargs(
|
||||
code_option: CodeOption,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Dict[str, Any]:
|
||||
url = "{}/ml/convert/proprietary-to-kcl".format(
|
||||
client.base_url,
|
||||
) # noqa: E501
|
||||
|
||||
if code_option is not None:
|
||||
if "?" in url:
|
||||
url = url + "&code_option=" + str(code_option)
|
||||
else:
|
||||
url = url + "?code_option=" + str(code_option)
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
return {
|
||||
"url": url,
|
||||
"headers": headers,
|
||||
"cookies": cookies,
|
||||
"timeout": client.get_timeout(),
|
||||
}
|
||||
|
||||
|
||||
def _parse_response(*, response: httpx.Response) -> Optional[Union[KclModel, Error]]:
|
||||
if response.status_code == 201:
|
||||
response_201 = KclModel(**response.json())
|
||||
return response_201
|
||||
if response.status_code == 400:
|
||||
response_4XX = Error(**response.json())
|
||||
return response_4XX
|
||||
if response.status_code == 500:
|
||||
response_5XX = Error(**response.json())
|
||||
return response_5XX
|
||||
return Error(**response.json())
|
||||
|
||||
|
||||
def _build_response(
|
||||
*, response: httpx.Response
|
||||
) -> Response[Optional[Union[KclModel, Error]]]:
|
||||
return Response(
|
||||
status_code=response.status_code,
|
||||
content=response.content,
|
||||
headers=response.headers,
|
||||
parsed=_parse_response(response=response),
|
||||
)
|
||||
|
||||
|
||||
def sync_detailed(
|
||||
code_option: CodeOption,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[KclModel, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
code_option=code_option,
|
||||
client=client,
|
||||
)
|
||||
|
||||
response = httpx.post(
|
||||
verify=client.verify_ssl,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
return _build_response(response=response)
|
||||
|
||||
|
||||
def sync(
|
||||
code_option: CodeOption,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[KclModel, Error]]:
|
||||
"""This endpoint is used to convert a proprietary CAD format to KCL. The file passed MUST have feature tree data.
|
||||
|
||||
A STEP file does not have feature tree data, so it will not work. A sldprt file does have feature tree data, so it will work.
|
||||
|
||||
Input filepaths will be normalized and re-canonicalized to be under the current working directory -- so returned paths may differ from provided paths, and care must be taken when handling user provided paths.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
code_option=code_option,
|
||||
client=client,
|
||||
).parsed
|
||||
|
||||
|
||||
async def asyncio_detailed(
|
||||
code_option: CodeOption,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[KclModel, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
code_option=code_option,
|
||||
client=client,
|
||||
)
|
||||
|
||||
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
||||
response = await _client.post(**kwargs)
|
||||
|
||||
return _build_response(response=response)
|
||||
|
||||
|
||||
async def asyncio(
|
||||
code_option: CodeOption,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[KclModel, Error]]:
|
||||
"""This endpoint is used to convert a proprietary CAD format to KCL. The file passed MUST have feature tree data.
|
||||
|
||||
A STEP file does not have feature tree data, so it will not work. A sldprt file does have feature tree data, so it will work.
|
||||
|
||||
Input filepaths will be normalized and re-canonicalized to be under the current working directory -- so returned paths may differ from provided paths, and care must be taken when handling user provided paths.""" # noqa: E501
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
code_option=code_option,
|
||||
client=client,
|
||||
)
|
||||
).parsed
|
@ -87,7 +87,9 @@ def sync(
|
||||
|
||||
You always get the whole code back, even if you only changed a small part of it. This endpoint will always return all the code back, including files that were not changed. If your original source code imported a stl/gltf/step/etc file, the output will not include that file since the model will never change non-kcl files. The endpoint will only return the kcl files that were changed.
|
||||
|
||||
This operation is performed asynchronously, the `id` of the operation will be returned. You can use the `id` returned from the request to get status information about the async operation from the `/async/operations/{id}` endpoint.""" # noqa: E501
|
||||
This operation is performed asynchronously, the `id` of the operation will be returned. You can use the `id` returned from the request to get status information about the async operation from the `/async/operations/{id}` endpoint.
|
||||
|
||||
Input filepaths will be normalized and re-canonicalized to be under the current working directory -- so returned paths may differ from provided paths, and care must be taken when handling user provided paths.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
body=body,
|
||||
@ -122,7 +124,9 @@ async def asyncio(
|
||||
|
||||
You always get the whole code back, even if you only changed a small part of it. This endpoint will always return all the code back, including files that were not changed. If your original source code imported a stl/gltf/step/etc file, the output will not include that file since the model will never change non-kcl files. The endpoint will only return the kcl files that were changed.
|
||||
|
||||
This operation is performed asynchronously, the `id` of the operation will be returned. You can use the `id` returned from the request to get status information about the async operation from the `/async/operations/{id}` endpoint.""" # noqa: E501
|
||||
This operation is performed asynchronously, the `id` of the operation will be returned. You can use the `id` returned from the request to get status information about the async operation from the `/async/operations/{id}` endpoint.
|
||||
|
||||
Input filepaths will be normalized and re-canonicalized to be under the current working directory -- so returned paths may differ from provided paths, and care must be taken when handling user provided paths.""" # noqa: E501
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
|
@ -27,11 +27,18 @@ def _get_kwargs(
|
||||
webrtc: bool,
|
||||
*,
|
||||
client: Client,
|
||||
api_call_id: Optional[str] = None,
|
||||
pool: Optional[str] = None,
|
||||
replay: Optional[str] = None,
|
||||
) -> Dict[str, Any]:
|
||||
url = "{}/ws/modeling/commands".format(client.base_url) # noqa: E501
|
||||
|
||||
if api_call_id is not None:
|
||||
if "?" in url:
|
||||
url = url + "&api_call_id=" + str(api_call_id)
|
||||
else:
|
||||
url = url + "?api_call_id=" + str(api_call_id)
|
||||
|
||||
if fps is not None:
|
||||
if "?" in url:
|
||||
url = url + "&fps=" + str(fps)
|
||||
@ -107,12 +114,14 @@ def sync(
|
||||
webrtc: bool,
|
||||
*,
|
||||
client: Client,
|
||||
api_call_id: Optional[str] = None,
|
||||
pool: Optional[str] = None,
|
||||
replay: Optional[str] = None,
|
||||
) -> ClientConnectionSync:
|
||||
"""Pass those commands to the engine via websocket, and pass responses back to the client. Basically, this is a websocket proxy between the frontend/client and the engine.""" # noqa: E501
|
||||
|
||||
kwargs = _get_kwargs(
|
||||
api_call_id=api_call_id,
|
||||
fps=fps,
|
||||
pool=pool,
|
||||
post_effect=post_effect,
|
||||
@ -143,12 +152,14 @@ async def asyncio(
|
||||
webrtc: bool,
|
||||
*,
|
||||
client: Client,
|
||||
api_call_id: Optional[str] = None,
|
||||
pool: Optional[str] = None,
|
||||
replay: Optional[str] = None,
|
||||
) -> ClientConnectionAsync:
|
||||
"""Pass those commands to the engine via websocket, and pass responses back to the client. Basically, this is a websocket proxy between the frontend/client and the engine.""" # noqa: E501
|
||||
|
||||
kwargs = _get_kwargs(
|
||||
api_call_id=api_call_id,
|
||||
fps=fps,
|
||||
pool=pool,
|
||||
post_effect=post_effect,
|
||||
@ -184,6 +195,7 @@ class WebSocket:
|
||||
video_res_width: int,
|
||||
webrtc: bool,
|
||||
client: Client,
|
||||
api_call_id: Optional[str] = None,
|
||||
pool: Optional[str] = None,
|
||||
replay: Optional[str] = None,
|
||||
):
|
||||
@ -196,6 +208,7 @@ class WebSocket:
|
||||
video_res_width,
|
||||
webrtc,
|
||||
client=client,
|
||||
api_call_id=api_call_id,
|
||||
pool=pool,
|
||||
replay=replay,
|
||||
)
|
||||
|
@ -85,7 +85,7 @@ def sync(
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[ZooProductSubscriptions, Error]]:
|
||||
"""You must be a Zoo employee to perform this request.""" # noqa: E501
|
||||
"""You must be a Zoo admin to perform this request.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
id=id,
|
||||
@ -118,7 +118,7 @@ async def asyncio(
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[ZooProductSubscriptions, Error]]:
|
||||
"""You must be a Zoo employee to perform this request.""" # noqa: E501
|
||||
"""You must be a Zoo admin to perform this request.""" # noqa: E501
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
|
@ -10,6 +10,7 @@ from ...types import Response
|
||||
|
||||
|
||||
def _get_kwargs(
|
||||
include_total_due: bool,
|
||||
id: Uuid,
|
||||
*,
|
||||
client: Client,
|
||||
@ -19,6 +20,12 @@ def _get_kwargs(
|
||||
id=id,
|
||||
) # noqa: E501
|
||||
|
||||
if include_total_due is not None:
|
||||
if "?" in url:
|
||||
url = url + "&include_total_due=" + str(include_total_due).lower()
|
||||
else:
|
||||
url = url + "?include_total_due=" + str(include_total_due).lower()
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
@ -57,11 +64,13 @@ def _build_response(
|
||||
|
||||
|
||||
def sync_detailed(
|
||||
include_total_due: bool,
|
||||
id: Uuid,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
include_total_due=include_total_due,
|
||||
id=id,
|
||||
client=client,
|
||||
)
|
||||
@ -75,6 +84,7 @@ def sync_detailed(
|
||||
|
||||
|
||||
def sync(
|
||||
include_total_due: bool,
|
||||
id: Uuid,
|
||||
*,
|
||||
client: Client,
|
||||
@ -82,17 +92,20 @@ def sync(
|
||||
"""This endpoint requires authentication by a Zoo employee. It gets the balance information for the specified org.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
include_total_due=include_total_due,
|
||||
id=id,
|
||||
client=client,
|
||||
).parsed
|
||||
|
||||
|
||||
async def asyncio_detailed(
|
||||
include_total_due: bool,
|
||||
id: Uuid,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
include_total_due=include_total_due,
|
||||
id=id,
|
||||
client=client,
|
||||
)
|
||||
@ -104,6 +117,7 @@ async def asyncio_detailed(
|
||||
|
||||
|
||||
async def asyncio(
|
||||
include_total_due: bool,
|
||||
id: Uuid,
|
||||
*,
|
||||
client: Client,
|
||||
@ -112,6 +126,7 @@ async def asyncio(
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
include_total_due=include_total_due,
|
||||
id=id,
|
||||
client=client,
|
||||
)
|
||||
|
@ -11,6 +11,7 @@ from ...types import Response
|
||||
|
||||
def _get_kwargs(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Dict[str, Any]:
|
||||
@ -19,6 +20,12 @@ def _get_kwargs(
|
||||
id=id,
|
||||
) # noqa: E501
|
||||
|
||||
if include_total_due is not None:
|
||||
if "?" in url:
|
||||
url = url + "&include_total_due=" + str(include_total_due).lower()
|
||||
else:
|
||||
url = url + "?include_total_due=" + str(include_total_due).lower()
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
@ -58,11 +65,13 @@ def _build_response(
|
||||
|
||||
def sync_detailed(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
)
|
||||
|
||||
@ -76,6 +85,7 @@ def sync_detailed(
|
||||
|
||||
def sync(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[CustomerBalance, Error]]:
|
||||
@ -83,17 +93,20 @@ def sync(
|
||||
|
||||
return sync_detailed(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
).parsed
|
||||
|
||||
|
||||
async def asyncio_detailed(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
)
|
||||
|
||||
@ -105,6 +118,7 @@ async def asyncio_detailed(
|
||||
|
||||
async def asyncio(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[CustomerBalance, Error]]:
|
||||
@ -113,6 +127,7 @@ async def asyncio(
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
)
|
||||
).parsed
|
||||
|
@ -9,6 +9,7 @@ from ...types import Response
|
||||
|
||||
|
||||
def _get_kwargs(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Dict[str, Any]:
|
||||
@ -16,6 +17,12 @@ def _get_kwargs(
|
||||
client.base_url,
|
||||
) # noqa: E501
|
||||
|
||||
if include_total_due is not None:
|
||||
if "?" in url:
|
||||
url = url + "&include_total_due=" + str(include_total_due).lower()
|
||||
else:
|
||||
url = url + "?include_total_due=" + str(include_total_due).lower()
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
@ -54,10 +61,12 @@ def _build_response(
|
||||
|
||||
|
||||
def sync_detailed(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
)
|
||||
|
||||
@ -70,21 +79,25 @@ def sync_detailed(
|
||||
|
||||
|
||||
def sync(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[CustomerBalance, Error]]:
|
||||
"""This endpoint requires authentication by an org admin. It gets the balance information for the authenticated user's org.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
).parsed
|
||||
|
||||
|
||||
async def asyncio_detailed(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
)
|
||||
|
||||
@ -95,6 +108,7 @@ async def asyncio_detailed(
|
||||
|
||||
|
||||
async def asyncio(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[CustomerBalance, Error]]:
|
||||
@ -102,6 +116,7 @@ async def asyncio(
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
)
|
||||
).parsed
|
||||
|
@ -9,6 +9,7 @@ from ...types import Response
|
||||
|
||||
|
||||
def _get_kwargs(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Dict[str, Any]:
|
||||
@ -16,6 +17,12 @@ def _get_kwargs(
|
||||
client.base_url,
|
||||
) # noqa: E501
|
||||
|
||||
if include_total_due is not None:
|
||||
if "?" in url:
|
||||
url = url + "&include_total_due=" + str(include_total_due).lower()
|
||||
else:
|
||||
url = url + "?include_total_due=" + str(include_total_due).lower()
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
@ -54,10 +61,12 @@ def _build_response(
|
||||
|
||||
|
||||
def sync_detailed(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
)
|
||||
|
||||
@ -70,21 +79,25 @@ def sync_detailed(
|
||||
|
||||
|
||||
def sync(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[CustomerBalance, Error]]:
|
||||
"""This endpoint requires authentication by any Zoo user. It gets the balance information for the authenticated user.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
).parsed
|
||||
|
||||
|
||||
async def asyncio_detailed(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
)
|
||||
|
||||
@ -95,6 +108,7 @@ async def asyncio_detailed(
|
||||
|
||||
|
||||
async def asyncio(
|
||||
include_total_due: bool,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[CustomerBalance, Error]]:
|
||||
@ -102,6 +116,7 @@ async def asyncio(
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
include_total_due=include_total_due,
|
||||
client=client,
|
||||
)
|
||||
).parsed
|
||||
|
@ -12,6 +12,7 @@ from ...types import Response
|
||||
|
||||
def _get_kwargs(
|
||||
id: Uuid,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
@ -21,6 +22,12 @@ def _get_kwargs(
|
||||
id=id,
|
||||
) # noqa: E501
|
||||
|
||||
if include_total_due is not None:
|
||||
if "?" in url:
|
||||
url = url + "&include_total_due=" + str(include_total_due).lower()
|
||||
else:
|
||||
url = url + "?include_total_due=" + str(include_total_due).lower()
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
@ -61,12 +68,14 @@ def _build_response(
|
||||
|
||||
def sync_detailed(
|
||||
id: Uuid,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
@ -81,6 +90,7 @@ def sync_detailed(
|
||||
|
||||
def sync(
|
||||
id: Uuid,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
@ -89,6 +99,7 @@ def sync(
|
||||
|
||||
return sync_detailed(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
body=body,
|
||||
client=client,
|
||||
).parsed
|
||||
@ -96,12 +107,14 @@ def sync(
|
||||
|
||||
async def asyncio_detailed(
|
||||
id: Uuid,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
@ -114,6 +127,7 @@ async def asyncio_detailed(
|
||||
|
||||
async def asyncio(
|
||||
id: Uuid,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
@ -123,6 +137,7 @@ async def asyncio(
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
@ -12,6 +12,7 @@ from ...types import Response
|
||||
|
||||
def _get_kwargs(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
@ -21,6 +22,12 @@ def _get_kwargs(
|
||||
id=id,
|
||||
) # noqa: E501
|
||||
|
||||
if include_total_due is not None:
|
||||
if "?" in url:
|
||||
url = url + "&include_total_due=" + str(include_total_due).lower()
|
||||
else:
|
||||
url = url + "?include_total_due=" + str(include_total_due).lower()
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
@ -61,12 +68,14 @@ def _build_response(
|
||||
|
||||
def sync_detailed(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
@ -81,6 +90,7 @@ def sync_detailed(
|
||||
|
||||
def sync(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
@ -89,6 +99,7 @@ def sync(
|
||||
|
||||
return sync_detailed(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
body=body,
|
||||
client=client,
|
||||
).parsed
|
||||
@ -96,12 +107,14 @@ def sync(
|
||||
|
||||
async def asyncio_detailed(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[CustomerBalance, Error]]]:
|
||||
kwargs = _get_kwargs(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
@ -114,6 +127,7 @@ async def asyncio_detailed(
|
||||
|
||||
async def asyncio(
|
||||
id: UserIdentifier,
|
||||
include_total_due: bool,
|
||||
body: UpdatePaymentBalance,
|
||||
*,
|
||||
client: Client,
|
||||
@ -123,6 +137,7 @@ async def asyncio(
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
id=id,
|
||||
include_total_due=include_total_due,
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
@ -79,9 +79,7 @@ def sync(
|
||||
) -> Optional[Union[User, Error]]:
|
||||
"""To get information about yourself, use `/users/me` as the endpoint. By doing so you will get the user information for the authenticated user.
|
||||
|
||||
Alternatively, to get information about the authenticated user, use `/user` endpoint.
|
||||
|
||||
To get information about any Zoo user, you must be a Zoo employee.""" # noqa: E501
|
||||
Alternatively, to get information about the authenticated user, use `/user` endpoint.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
id=id,
|
||||
@ -112,9 +110,7 @@ async def asyncio(
|
||||
) -> Optional[Union[User, Error]]:
|
||||
"""To get information about yourself, use `/users/me` as the endpoint. By doing so you will get the user information for the authenticated user.
|
||||
|
||||
Alternatively, to get information about the authenticated user, use `/user` endpoint.
|
||||
|
||||
To get information about any Zoo user, you must be a Zoo employee.""" # noqa: E501
|
||||
Alternatively, to get information about the authenticated user, use `/user` endpoint.""" # noqa: E501
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
|
@ -81,9 +81,7 @@ def sync(
|
||||
) -> Optional[Union[ExtendedUser, Error]]:
|
||||
"""To get information about yourself, use `/users-extended/me` as the endpoint. By doing so you will get the user information for the authenticated user.
|
||||
|
||||
Alternatively, to get information about the authenticated user, use `/user/extended` endpoint.
|
||||
|
||||
To get information about any Zoo user, you must be a Zoo employee.""" # noqa: E501
|
||||
Alternatively, to get information about the authenticated user, use `/user/extended` endpoint.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
id=id,
|
||||
@ -114,9 +112,7 @@ async def asyncio(
|
||||
) -> Optional[Union[ExtendedUser, Error]]:
|
||||
"""To get information about yourself, use `/users-extended/me` as the endpoint. By doing so you will get the user information for the authenticated user.
|
||||
|
||||
Alternatively, to get information about the authenticated user, use `/user/extended` endpoint.
|
||||
|
||||
To get information about any Zoo user, you must be a Zoo employee.""" # noqa: E501
|
||||
Alternatively, to get information about the authenticated user, use `/user/extended` endpoint.""" # noqa: E501
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
|
107
kittycad/api/users/patch_user_crm.py
Normal file
107
kittycad/api/users/patch_user_crm.py
Normal file
@ -0,0 +1,107 @@
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
import httpx
|
||||
|
||||
from ...client import Client
|
||||
from ...models.crm_data import CrmData
|
||||
from ...models.error import Error
|
||||
from ...types import Response
|
||||
|
||||
|
||||
def _get_kwargs(
|
||||
body: CrmData,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Dict[str, Any]:
|
||||
url = "{}/user/crm".format(
|
||||
client.base_url,
|
||||
) # noqa: E501
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
return {
|
||||
"url": url,
|
||||
"headers": headers,
|
||||
"cookies": cookies,
|
||||
"timeout": client.get_timeout(),
|
||||
"content": body.model_dump_json(),
|
||||
}
|
||||
|
||||
|
||||
def _parse_response(*, response: httpx.Response) -> Optional[Error]:
|
||||
return None
|
||||
if response.status_code == 400:
|
||||
response_4XX = Error(**response.json())
|
||||
return response_4XX
|
||||
if response.status_code == 500:
|
||||
response_5XX = Error(**response.json())
|
||||
return response_5XX
|
||||
return Error(**response.json())
|
||||
|
||||
|
||||
def _build_response(*, response: httpx.Response) -> Response[Optional[Error]]:
|
||||
return Response(
|
||||
status_code=response.status_code,
|
||||
content=response.content,
|
||||
headers=response.headers,
|
||||
parsed=_parse_response(response=response),
|
||||
)
|
||||
|
||||
|
||||
def sync_detailed(
|
||||
body: CrmData,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Error]]:
|
||||
kwargs = _get_kwargs(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
||||
response = httpx.patch(
|
||||
verify=client.verify_ssl,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
return _build_response(response=response)
|
||||
|
||||
|
||||
def sync(
|
||||
body: CrmData,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Error]:
|
||||
return sync_detailed(
|
||||
body=body,
|
||||
client=client,
|
||||
).parsed
|
||||
|
||||
|
||||
async def asyncio_detailed(
|
||||
body: CrmData,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Error]]:
|
||||
kwargs = _get_kwargs(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
||||
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
||||
response = await _client.patch(**kwargs)
|
||||
|
||||
return _build_response(response=response)
|
||||
|
||||
|
||||
async def asyncio(
|
||||
body: CrmData,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Error]:
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
).parsed
|
@ -1,18 +1,19 @@
|
||||
from typing import Any, Dict, Optional, Union
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
import httpx
|
||||
|
||||
from ...client import Client
|
||||
from ...models.error import Error
|
||||
from ...models.metadata import Metadata
|
||||
from ...models.inquiry_form import InquiryForm
|
||||
from ...types import Response
|
||||
|
||||
|
||||
def _get_kwargs(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Dict[str, Any]:
|
||||
url = "{}/_meta/info".format(
|
||||
url = "{}/website/form".format(
|
||||
client.base_url,
|
||||
) # noqa: E501
|
||||
|
||||
@ -24,13 +25,12 @@ def _get_kwargs(
|
||||
"headers": headers,
|
||||
"cookies": cookies,
|
||||
"timeout": client.get_timeout(),
|
||||
"content": body.model_dump_json(),
|
||||
}
|
||||
|
||||
|
||||
def _parse_response(*, response: httpx.Response) -> Optional[Union[Metadata, Error]]:
|
||||
if response.status_code == 200:
|
||||
response_200 = Metadata(**response.json())
|
||||
return response_200
|
||||
def _parse_response(*, response: httpx.Response) -> Optional[Error]:
|
||||
return None
|
||||
if response.status_code == 400:
|
||||
response_4XX = Error(**response.json())
|
||||
return response_4XX
|
||||
@ -40,9 +40,7 @@ def _parse_response(*, response: httpx.Response) -> Optional[Union[Metadata, Err
|
||||
return Error(**response.json())
|
||||
|
||||
|
||||
def _build_response(
|
||||
*, response: httpx.Response
|
||||
) -> Response[Optional[Union[Metadata, Error]]]:
|
||||
def _build_response(*, response: httpx.Response) -> Response[Optional[Error]]:
|
||||
return Response(
|
||||
status_code=response.status_code,
|
||||
content=response.content,
|
||||
@ -52,14 +50,16 @@ def _build_response(
|
||||
|
||||
|
||||
def sync_detailed(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[Metadata, Error]]]:
|
||||
) -> Response[Optional[Error]]:
|
||||
kwargs = _get_kwargs(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
||||
response = httpx.get(
|
||||
response = httpx.put(
|
||||
verify=client.verify_ssl,
|
||||
**kwargs,
|
||||
)
|
||||
@ -68,42 +68,44 @@ def sync_detailed(
|
||||
|
||||
|
||||
def sync(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[Metadata, Error]]:
|
||||
"""This includes information on any of our other distributed systems it is connected to.
|
||||
|
||||
You must be a Zoo employee to perform this request.""" # noqa: E501
|
||||
) -> Optional[Error]:
|
||||
"""users and is not authenticated.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
body=body,
|
||||
client=client,
|
||||
).parsed
|
||||
|
||||
|
||||
async def asyncio_detailed(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Union[Metadata, Error]]]:
|
||||
) -> Response[Optional[Error]]:
|
||||
kwargs = _get_kwargs(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
||||
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
||||
response = await _client.get(**kwargs)
|
||||
response = await _client.put(**kwargs)
|
||||
|
||||
return _build_response(response=response)
|
||||
|
||||
|
||||
async def asyncio(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Union[Metadata, Error]]:
|
||||
"""This includes information on any of our other distributed systems it is connected to.
|
||||
|
||||
You must be a Zoo employee to perform this request.""" # noqa: E501
|
||||
) -> Optional[Error]:
|
||||
"""users and is not authenticated.""" # noqa: E501
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
).parsed
|
107
kittycad/api/users/put_public_subscribe.py
Normal file
107
kittycad/api/users/put_public_subscribe.py
Normal file
@ -0,0 +1,107 @@
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
import httpx
|
||||
|
||||
from ...client import Client
|
||||
from ...models.error import Error
|
||||
from ...models.subscribe import Subscribe
|
||||
from ...types import Response
|
||||
|
||||
|
||||
def _get_kwargs(
|
||||
body: Subscribe,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Dict[str, Any]:
|
||||
url = "{}/website/subscribe".format(
|
||||
client.base_url,
|
||||
) # noqa: E501
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
return {
|
||||
"url": url,
|
||||
"headers": headers,
|
||||
"cookies": cookies,
|
||||
"timeout": client.get_timeout(),
|
||||
"content": body.model_dump_json(),
|
||||
}
|
||||
|
||||
|
||||
def _parse_response(*, response: httpx.Response) -> Optional[Error]:
|
||||
return None
|
||||
if response.status_code == 400:
|
||||
response_4XX = Error(**response.json())
|
||||
return response_4XX
|
||||
if response.status_code == 500:
|
||||
response_5XX = Error(**response.json())
|
||||
return response_5XX
|
||||
return Error(**response.json())
|
||||
|
||||
|
||||
def _build_response(*, response: httpx.Response) -> Response[Optional[Error]]:
|
||||
return Response(
|
||||
status_code=response.status_code,
|
||||
content=response.content,
|
||||
headers=response.headers,
|
||||
parsed=_parse_response(response=response),
|
||||
)
|
||||
|
||||
|
||||
def sync_detailed(
|
||||
body: Subscribe,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Error]]:
|
||||
kwargs = _get_kwargs(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
||||
response = httpx.put(
|
||||
verify=client.verify_ssl,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
return _build_response(response=response)
|
||||
|
||||
|
||||
def sync(
|
||||
body: Subscribe,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Error]:
|
||||
return sync_detailed(
|
||||
body=body,
|
||||
client=client,
|
||||
).parsed
|
||||
|
||||
|
||||
async def asyncio_detailed(
|
||||
body: Subscribe,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Error]]:
|
||||
kwargs = _get_kwargs(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
||||
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
||||
response = await _client.put(**kwargs)
|
||||
|
||||
return _build_response(response=response)
|
||||
|
||||
|
||||
async def asyncio(
|
||||
body: Subscribe,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Error]:
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
).parsed
|
111
kittycad/api/users/put_user_form_self.py
Normal file
111
kittycad/api/users/put_user_form_self.py
Normal file
@ -0,0 +1,111 @@
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
import httpx
|
||||
|
||||
from ...client import Client
|
||||
from ...models.error import Error
|
||||
from ...models.inquiry_form import InquiryForm
|
||||
from ...types import Response
|
||||
|
||||
|
||||
def _get_kwargs(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Dict[str, Any]:
|
||||
url = "{}/user/form".format(
|
||||
client.base_url,
|
||||
) # noqa: E501
|
||||
|
||||
headers: Dict[str, Any] = client.get_headers()
|
||||
cookies: Dict[str, Any] = client.get_cookies()
|
||||
|
||||
return {
|
||||
"url": url,
|
||||
"headers": headers,
|
||||
"cookies": cookies,
|
||||
"timeout": client.get_timeout(),
|
||||
"content": body.model_dump_json(),
|
||||
}
|
||||
|
||||
|
||||
def _parse_response(*, response: httpx.Response) -> Optional[Error]:
|
||||
return None
|
||||
if response.status_code == 400:
|
||||
response_4XX = Error(**response.json())
|
||||
return response_4XX
|
||||
if response.status_code == 500:
|
||||
response_5XX = Error(**response.json())
|
||||
return response_5XX
|
||||
return Error(**response.json())
|
||||
|
||||
|
||||
def _build_response(*, response: httpx.Response) -> Response[Optional[Error]]:
|
||||
return Response(
|
||||
status_code=response.status_code,
|
||||
content=response.content,
|
||||
headers=response.headers,
|
||||
parsed=_parse_response(response=response),
|
||||
)
|
||||
|
||||
|
||||
def sync_detailed(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Error]]:
|
||||
kwargs = _get_kwargs(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
||||
response = httpx.put(
|
||||
verify=client.verify_ssl,
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
return _build_response(response=response)
|
||||
|
||||
|
||||
def sync(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Error]:
|
||||
"""It gets attached to the user's account.""" # noqa: E501
|
||||
|
||||
return sync_detailed(
|
||||
body=body,
|
||||
client=client,
|
||||
).parsed
|
||||
|
||||
|
||||
async def asyncio_detailed(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Response[Optional[Error]]:
|
||||
kwargs = _get_kwargs(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
|
||||
async with httpx.AsyncClient(verify=client.verify_ssl) as _client:
|
||||
response = await _client.put(**kwargs)
|
||||
|
||||
return _build_response(response=response)
|
||||
|
||||
|
||||
async def asyncio(
|
||||
body: InquiryForm,
|
||||
*,
|
||||
client: Client,
|
||||
) -> Optional[Error]:
|
||||
"""It gets attached to the user's account.""" # noqa: E501
|
||||
|
||||
return (
|
||||
await asyncio_detailed(
|
||||
body=body,
|
||||
client=client,
|
||||
)
|
||||
).parsed
|
@ -48,7 +48,6 @@ from kittycad.api.meta import (
|
||||
create_debug_uploads,
|
||||
create_event,
|
||||
get_ipinfo,
|
||||
get_metadata,
|
||||
get_pricing_subscriptions,
|
||||
get_schema,
|
||||
internal_get_api_token_for_discord_user,
|
||||
@ -56,6 +55,7 @@ from kittycad.api.meta import (
|
||||
)
|
||||
from kittycad.api.ml import (
|
||||
create_kcl_code_completions,
|
||||
create_proprietary_to_kcl,
|
||||
create_text_to_cad,
|
||||
create_text_to_cad_iteration,
|
||||
create_text_to_cad_model_feedback,
|
||||
@ -157,6 +157,10 @@ from kittycad.api.users import (
|
||||
get_user_shortlinks,
|
||||
list_users,
|
||||
list_users_extended,
|
||||
patch_user_crm,
|
||||
put_public_form,
|
||||
put_public_subscribe,
|
||||
put_user_form_self,
|
||||
update_user_privacy_settings,
|
||||
update_user_self,
|
||||
update_user_shortlink,
|
||||
@ -188,7 +192,7 @@ from kittycad.models import (
|
||||
Invoice,
|
||||
IpAddrInfo,
|
||||
KclCodeCompletionResponse,
|
||||
Metadata,
|
||||
KclModel,
|
||||
MlPrompt,
|
||||
MlPromptResultsPage,
|
||||
Onboarding,
|
||||
@ -235,8 +239,10 @@ from kittycad.models.api_token_uuid import ApiTokenUuid
|
||||
from kittycad.models.base64data import Base64Data
|
||||
from kittycad.models.billing_info import BillingInfo
|
||||
from kittycad.models.code_language import CodeLanguage
|
||||
from kittycad.models.code_option import CodeOption
|
||||
from kittycad.models.create_shortlink_request import CreateShortlinkRequest
|
||||
from kittycad.models.created_at_sort_mode import CreatedAtSortMode
|
||||
from kittycad.models.crm_data import CrmData
|
||||
from kittycad.models.email_authentication_form import EmailAuthenticationForm
|
||||
from kittycad.models.enterprise_subscription_tier_price import (
|
||||
EnterpriseSubscriptionTierPrice,
|
||||
@ -249,6 +255,8 @@ from kittycad.models.idp_metadata_source import (
|
||||
IdpMetadataSource,
|
||||
OptionBase64EncodedXml,
|
||||
)
|
||||
from kittycad.models.inquiry_form import InquiryForm
|
||||
from kittycad.models.inquiry_type import InquiryType
|
||||
from kittycad.models.kcl_code_completion_params import KclCodeCompletionParams
|
||||
from kittycad.models.kcl_code_completion_request import KclCodeCompletionRequest
|
||||
from kittycad.models.ml_feedback import MlFeedback
|
||||
@ -272,6 +280,7 @@ from kittycad.models.source_position import SourcePosition
|
||||
from kittycad.models.source_range import SourceRange
|
||||
from kittycad.models.source_range_prompt import SourceRangePrompt
|
||||
from kittycad.models.store_coupon_params import StoreCouponParams
|
||||
from kittycad.models.subscribe import Subscribe
|
||||
from kittycad.models.text_to_cad_create_body import TextToCadCreateBody
|
||||
from kittycad.models.text_to_cad_iteration_body import TextToCadIterationBody
|
||||
from kittycad.models.text_to_cad_multi_file_iteration_body import (
|
||||
@ -340,47 +349,6 @@ async def test_get_schema_async():
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_get_metadata():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Union[Metadata, Error]] = get_metadata.sync(
|
||||
client=client,
|
||||
)
|
||||
|
||||
if isinstance(result, Error) or result is None:
|
||||
print(result)
|
||||
raise Exception("Error in response")
|
||||
|
||||
body: Metadata = result
|
||||
print(body)
|
||||
|
||||
# OR if you need more info (e.g. status_code)
|
||||
response: Response[Optional[Union[Metadata, Error]]] = get_metadata.sync_detailed(
|
||||
client=client,
|
||||
)
|
||||
|
||||
|
||||
# OR run async
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.skip
|
||||
async def test_get_metadata_async():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Union[Metadata, Error]] = await get_metadata.asyncio(
|
||||
client=client,
|
||||
)
|
||||
|
||||
# OR run async with more info
|
||||
response: Response[
|
||||
Optional[Union[Metadata, Error]]
|
||||
] = await get_metadata.asyncio_detailed(
|
||||
client=client,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_get_ipinfo():
|
||||
# Create our client.
|
||||
@ -1899,6 +1867,53 @@ async def test_get_ml_prompt_async():
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_create_proprietary_to_kcl():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Union[KclModel, Error]] = create_proprietary_to_kcl.sync(
|
||||
client=client,
|
||||
code_option=CodeOption.PARSE,
|
||||
)
|
||||
|
||||
if isinstance(result, Error) or result is None:
|
||||
print(result)
|
||||
raise Exception("Error in response")
|
||||
|
||||
body: KclModel = result
|
||||
print(body)
|
||||
|
||||
# OR if you need more info (e.g. status_code)
|
||||
response: Response[Optional[Union[KclModel, Error]]] = (
|
||||
create_proprietary_to_kcl.sync_detailed(
|
||||
client=client,
|
||||
code_option=CodeOption.PARSE,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
# OR run async
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.skip
|
||||
async def test_create_proprietary_to_kcl_async():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Union[KclModel, Error]] = await create_proprietary_to_kcl.asyncio(
|
||||
client=client,
|
||||
code_option=CodeOption.PARSE,
|
||||
)
|
||||
|
||||
# OR run async with more info
|
||||
response: Response[
|
||||
Optional[Union[KclModel, Error]]
|
||||
] = await create_proprietary_to_kcl.asyncio_detailed(
|
||||
client=client,
|
||||
code_option=CodeOption.PARSE,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_create_kcl_code_completions():
|
||||
# Create our client.
|
||||
@ -3010,6 +3025,7 @@ def test_get_payment_balance_for_org():
|
||||
|
||||
result: Optional[Union[CustomerBalance, Error]] = get_payment_balance_for_org.sync(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
)
|
||||
|
||||
if isinstance(result, Error) or result is None:
|
||||
@ -3023,6 +3039,7 @@ def test_get_payment_balance_for_org():
|
||||
response: Response[Optional[Union[CustomerBalance, Error]]] = (
|
||||
get_payment_balance_for_org.sync_detailed(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
)
|
||||
)
|
||||
|
||||
@ -3038,6 +3055,7 @@ async def test_get_payment_balance_for_org_async():
|
||||
Union[CustomerBalance, Error]
|
||||
] = await get_payment_balance_for_org.asyncio(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
)
|
||||
|
||||
# OR run async with more info
|
||||
@ -3045,6 +3063,7 @@ async def test_get_payment_balance_for_org_async():
|
||||
Optional[Union[CustomerBalance, Error]]
|
||||
] = await get_payment_balance_for_org.asyncio_detailed(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
)
|
||||
|
||||
|
||||
@ -4226,6 +4245,7 @@ def test_get_payment_balance_for_any_org():
|
||||
result: Optional[Union[CustomerBalance, Error]] = (
|
||||
get_payment_balance_for_any_org.sync(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
id=Uuid("<string>"),
|
||||
)
|
||||
)
|
||||
@ -4241,6 +4261,7 @@ def test_get_payment_balance_for_any_org():
|
||||
response: Response[Optional[Union[CustomerBalance, Error]]] = (
|
||||
get_payment_balance_for_any_org.sync_detailed(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
id=Uuid("<string>"),
|
||||
)
|
||||
)
|
||||
@ -4257,6 +4278,7 @@ async def test_get_payment_balance_for_any_org_async():
|
||||
Union[CustomerBalance, Error]
|
||||
] = await get_payment_balance_for_any_org.asyncio(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
id=Uuid("<string>"),
|
||||
)
|
||||
|
||||
@ -4265,6 +4287,7 @@ async def test_get_payment_balance_for_any_org_async():
|
||||
Optional[Union[CustomerBalance, Error]]
|
||||
] = await get_payment_balance_for_any_org.asyncio_detailed(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
id=Uuid("<string>"),
|
||||
)
|
||||
|
||||
@ -4278,6 +4301,7 @@ def test_update_payment_balance_for_any_org():
|
||||
update_payment_balance_for_any_org.sync(
|
||||
client=client,
|
||||
id=Uuid("<string>"),
|
||||
include_total_due=False,
|
||||
body=UpdatePaymentBalance(),
|
||||
)
|
||||
)
|
||||
@ -4294,6 +4318,7 @@ def test_update_payment_balance_for_any_org():
|
||||
update_payment_balance_for_any_org.sync_detailed(
|
||||
client=client,
|
||||
id=Uuid("<string>"),
|
||||
include_total_due=False,
|
||||
body=UpdatePaymentBalance(),
|
||||
)
|
||||
)
|
||||
@ -4311,6 +4336,7 @@ async def test_update_payment_balance_for_any_org_async():
|
||||
] = await update_payment_balance_for_any_org.asyncio(
|
||||
client=client,
|
||||
id=Uuid("<string>"),
|
||||
include_total_due=False,
|
||||
body=UpdatePaymentBalance(),
|
||||
)
|
||||
|
||||
@ -4320,6 +4346,7 @@ async def test_update_payment_balance_for_any_org_async():
|
||||
] = await update_payment_balance_for_any_org.asyncio_detailed(
|
||||
client=client,
|
||||
id=Uuid("<string>"),
|
||||
include_total_due=False,
|
||||
body=UpdatePaymentBalance(),
|
||||
)
|
||||
|
||||
@ -5674,6 +5701,49 @@ async def test_delete_api_token_for_user_async():
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_patch_user_crm():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Error] = patch_user_crm.sync(
|
||||
client=client,
|
||||
body=CrmData(),
|
||||
)
|
||||
|
||||
if isinstance(result, Error) or result is None:
|
||||
print(result)
|
||||
raise Exception("Error in response")
|
||||
|
||||
body: Error = result
|
||||
print(body)
|
||||
|
||||
# OR if you need more info (e.g. status_code)
|
||||
response: Response[Optional[Error]] = patch_user_crm.sync_detailed(
|
||||
client=client,
|
||||
body=CrmData(),
|
||||
)
|
||||
|
||||
|
||||
# OR run async
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.skip
|
||||
async def test_patch_user_crm_async():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Error] = await patch_user_crm.asyncio(
|
||||
client=client,
|
||||
body=CrmData(),
|
||||
)
|
||||
|
||||
# OR run async with more info
|
||||
response: Response[Optional[Error]] = await patch_user_crm.asyncio_detailed(
|
||||
client=client,
|
||||
body=CrmData(),
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_get_user_self_extended():
|
||||
# Create our client.
|
||||
@ -5717,6 +5787,73 @@ async def test_get_user_self_extended_async():
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_put_user_form_self():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Error] = put_user_form_self.sync(
|
||||
client=client,
|
||||
body=InquiryForm(
|
||||
email="<string>",
|
||||
first_name="<string>",
|
||||
inquiry_type=InquiryType.GENERAL_INQUIRY,
|
||||
last_name="<string>",
|
||||
message="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
if isinstance(result, Error) or result is None:
|
||||
print(result)
|
||||
raise Exception("Error in response")
|
||||
|
||||
body: Error = result
|
||||
print(body)
|
||||
|
||||
# OR if you need more info (e.g. status_code)
|
||||
response: Response[Optional[Error]] = put_user_form_self.sync_detailed(
|
||||
client=client,
|
||||
body=InquiryForm(
|
||||
email="<string>",
|
||||
first_name="<string>",
|
||||
inquiry_type=InquiryType.GENERAL_INQUIRY,
|
||||
last_name="<string>",
|
||||
message="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
# OR run async
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.skip
|
||||
async def test_put_user_form_self_async():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Error] = await put_user_form_self.asyncio(
|
||||
client=client,
|
||||
body=InquiryForm(
|
||||
email="<string>",
|
||||
first_name="<string>",
|
||||
inquiry_type=InquiryType.GENERAL_INQUIRY,
|
||||
last_name="<string>",
|
||||
message="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
# OR run async with more info
|
||||
response: Response[Optional[Error]] = await put_user_form_self.asyncio_detailed(
|
||||
client=client,
|
||||
body=InquiryForm(
|
||||
email="<string>",
|
||||
first_name="<string>",
|
||||
inquiry_type=InquiryType.GENERAL_INQUIRY,
|
||||
last_name="<string>",
|
||||
message="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_get_oauth2_providers_for_user():
|
||||
# Create our client.
|
||||
@ -6067,6 +6204,7 @@ def test_get_payment_balance_for_user():
|
||||
|
||||
result: Optional[Union[CustomerBalance, Error]] = get_payment_balance_for_user.sync(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
)
|
||||
|
||||
if isinstance(result, Error) or result is None:
|
||||
@ -6080,6 +6218,7 @@ def test_get_payment_balance_for_user():
|
||||
response: Response[Optional[Union[CustomerBalance, Error]]] = (
|
||||
get_payment_balance_for_user.sync_detailed(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
)
|
||||
)
|
||||
|
||||
@ -6095,6 +6234,7 @@ async def test_get_payment_balance_for_user_async():
|
||||
Union[CustomerBalance, Error]
|
||||
] = await get_payment_balance_for_user.asyncio(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
)
|
||||
|
||||
# OR run async with more info
|
||||
@ -6102,6 +6242,7 @@ async def test_get_payment_balance_for_user_async():
|
||||
Optional[Union[CustomerBalance, Error]]
|
||||
] = await get_payment_balance_for_user.asyncio_detailed(
|
||||
client=client,
|
||||
include_total_due=False,
|
||||
)
|
||||
|
||||
|
||||
@ -7344,6 +7485,7 @@ def test_get_payment_balance_for_any_user():
|
||||
get_payment_balance_for_any_user.sync(
|
||||
client=client,
|
||||
id=UserIdentifier("<string>"),
|
||||
include_total_due=False,
|
||||
)
|
||||
)
|
||||
|
||||
@ -7359,6 +7501,7 @@ def test_get_payment_balance_for_any_user():
|
||||
get_payment_balance_for_any_user.sync_detailed(
|
||||
client=client,
|
||||
id=UserIdentifier("<string>"),
|
||||
include_total_due=False,
|
||||
)
|
||||
)
|
||||
|
||||
@ -7375,6 +7518,7 @@ async def test_get_payment_balance_for_any_user_async():
|
||||
] = await get_payment_balance_for_any_user.asyncio(
|
||||
client=client,
|
||||
id=UserIdentifier("<string>"),
|
||||
include_total_due=False,
|
||||
)
|
||||
|
||||
# OR run async with more info
|
||||
@ -7383,6 +7527,7 @@ async def test_get_payment_balance_for_any_user_async():
|
||||
] = await get_payment_balance_for_any_user.asyncio_detailed(
|
||||
client=client,
|
||||
id=UserIdentifier("<string>"),
|
||||
include_total_due=False,
|
||||
)
|
||||
|
||||
|
||||
@ -7395,6 +7540,7 @@ def test_update_payment_balance_for_any_user():
|
||||
update_payment_balance_for_any_user.sync(
|
||||
client=client,
|
||||
id=UserIdentifier("<string>"),
|
||||
include_total_due=False,
|
||||
body=UpdatePaymentBalance(),
|
||||
)
|
||||
)
|
||||
@ -7411,6 +7557,7 @@ def test_update_payment_balance_for_any_user():
|
||||
update_payment_balance_for_any_user.sync_detailed(
|
||||
client=client,
|
||||
id=UserIdentifier("<string>"),
|
||||
include_total_due=False,
|
||||
body=UpdatePaymentBalance(),
|
||||
)
|
||||
)
|
||||
@ -7428,6 +7575,7 @@ async def test_update_payment_balance_for_any_user_async():
|
||||
] = await update_payment_balance_for_any_user.asyncio(
|
||||
client=client,
|
||||
id=UserIdentifier("<string>"),
|
||||
include_total_due=False,
|
||||
body=UpdatePaymentBalance(),
|
||||
)
|
||||
|
||||
@ -7437,10 +7585,129 @@ async def test_update_payment_balance_for_any_user_async():
|
||||
] = await update_payment_balance_for_any_user.asyncio_detailed(
|
||||
client=client,
|
||||
id=UserIdentifier("<string>"),
|
||||
include_total_due=False,
|
||||
body=UpdatePaymentBalance(),
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_put_public_form():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Error] = put_public_form.sync(
|
||||
client=client,
|
||||
body=InquiryForm(
|
||||
email="<string>",
|
||||
first_name="<string>",
|
||||
inquiry_type=InquiryType.GENERAL_INQUIRY,
|
||||
last_name="<string>",
|
||||
message="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
if isinstance(result, Error) or result is None:
|
||||
print(result)
|
||||
raise Exception("Error in response")
|
||||
|
||||
body: Error = result
|
||||
print(body)
|
||||
|
||||
# OR if you need more info (e.g. status_code)
|
||||
response: Response[Optional[Error]] = put_public_form.sync_detailed(
|
||||
client=client,
|
||||
body=InquiryForm(
|
||||
email="<string>",
|
||||
first_name="<string>",
|
||||
inquiry_type=InquiryType.GENERAL_INQUIRY,
|
||||
last_name="<string>",
|
||||
message="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
# OR run async
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.skip
|
||||
async def test_put_public_form_async():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Error] = await put_public_form.asyncio(
|
||||
client=client,
|
||||
body=InquiryForm(
|
||||
email="<string>",
|
||||
first_name="<string>",
|
||||
inquiry_type=InquiryType.GENERAL_INQUIRY,
|
||||
last_name="<string>",
|
||||
message="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
# OR run async with more info
|
||||
response: Response[Optional[Error]] = await put_public_form.asyncio_detailed(
|
||||
client=client,
|
||||
body=InquiryForm(
|
||||
email="<string>",
|
||||
first_name="<string>",
|
||||
inquiry_type=InquiryType.GENERAL_INQUIRY,
|
||||
last_name="<string>",
|
||||
message="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_put_public_subscribe():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Error] = put_public_subscribe.sync(
|
||||
client=client,
|
||||
body=Subscribe(
|
||||
email="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
if isinstance(result, Error) or result is None:
|
||||
print(result)
|
||||
raise Exception("Error in response")
|
||||
|
||||
body: Error = result
|
||||
print(body)
|
||||
|
||||
# OR if you need more info (e.g. status_code)
|
||||
response: Response[Optional[Error]] = put_public_subscribe.sync_detailed(
|
||||
client=client,
|
||||
body=Subscribe(
|
||||
email="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
# OR run async
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.skip
|
||||
async def test_put_public_subscribe_async():
|
||||
# Create our client.
|
||||
client = ClientFromEnv()
|
||||
|
||||
result: Optional[Error] = await put_public_subscribe.asyncio(
|
||||
client=client,
|
||||
body=Subscribe(
|
||||
email="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
# OR run async with more info
|
||||
response: Response[Optional[Error]] = await put_public_subscribe.asyncio_detailed(
|
||||
client=client,
|
||||
body=Subscribe(
|
||||
email="<string>",
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
def test_create_executor_term():
|
||||
# Create our client.
|
||||
@ -7493,6 +7760,7 @@ def test_modeling_commands_ws():
|
||||
video_res_height=10,
|
||||
video_res_width=10,
|
||||
webrtc=False,
|
||||
api_call_id=None, # Optional[str]
|
||||
pool=None, # Optional[str]
|
||||
replay=None, # Optional[str]
|
||||
) as websocket:
|
||||
@ -7530,6 +7798,7 @@ async def test_modeling_commands_ws_async():
|
||||
video_res_height=10,
|
||||
video_res_width=10,
|
||||
webrtc=False,
|
||||
api_call_id=None, # Optional[str]
|
||||
pool=None, # Optional[str]
|
||||
replay=None, # Optional[str]
|
||||
)
|
||||
|
@ -4,6 +4,7 @@ from .account_provider import AccountProvider
|
||||
from .add_hole_from_offset import AddHoleFromOffset
|
||||
from .add_org_member import AddOrgMember
|
||||
from .address_details import AddressDetails
|
||||
from .adjacency_info import AdjacencyInfo
|
||||
from .angle import Angle
|
||||
from .annotation_line_end import AnnotationLineEnd
|
||||
from .annotation_line_end_options import AnnotationLineEndOptions
|
||||
@ -17,6 +18,7 @@ from .api_call_query_group_by import ApiCallQueryGroupBy
|
||||
from .api_call_status import ApiCallStatus
|
||||
from .api_call_with_price import ApiCallWithPrice
|
||||
from .api_call_with_price_results_page import ApiCallWithPriceResultsPage
|
||||
from .api_endpoint import ApiEndpoint
|
||||
from .api_error import ApiError
|
||||
from .api_token import ApiToken
|
||||
from .api_token_results_page import ApiTokenResultsPage
|
||||
@ -32,7 +34,9 @@ from .axis_direction_pair import AxisDirectionPair
|
||||
from .batch_response import BatchResponse
|
||||
from .billing_info import BillingInfo
|
||||
from .block_reason import BlockReason
|
||||
from .cache_metadata import CacheMetadata
|
||||
from .boolean_intersection import BooleanIntersection
|
||||
from .boolean_subtract import BooleanSubtract
|
||||
from .boolean_union import BooleanUnion
|
||||
from .camera_drag_end import CameraDragEnd
|
||||
from .camera_drag_interaction_type import CameraDragInteractionType
|
||||
from .camera_drag_move import CameraDragMove
|
||||
@ -44,17 +48,18 @@ from .card_details import CardDetails
|
||||
from .center_of_mass import CenterOfMass
|
||||
from .client_metrics import ClientMetrics
|
||||
from .close_path import ClosePath
|
||||
from .cluster import Cluster
|
||||
from .code_language import CodeLanguage
|
||||
from .code_option import CodeOption
|
||||
from .code_output import CodeOutput
|
||||
from .color import Color
|
||||
from .complementary_edges import ComplementaryEdges
|
||||
from .component_transform import ComponentTransform
|
||||
from .connection import Connection
|
||||
from .country_code import CountryCode
|
||||
from .coupon import Coupon
|
||||
from .create_shortlink_request import CreateShortlinkRequest
|
||||
from .create_shortlink_response import CreateShortlinkResponse
|
||||
from .created_at_sort_mode import CreatedAtSortMode
|
||||
from .crm_data import CrmData
|
||||
from .currency import Currency
|
||||
from .curve_get_control_points import CurveGetControlPoints
|
||||
from .curve_get_end_points import CurveGetEndPoints
|
||||
@ -63,6 +68,7 @@ from .curve_set_constraint import CurveSetConstraint
|
||||
from .curve_type import CurveType
|
||||
from .customer import Customer
|
||||
from .customer_balance import CustomerBalance
|
||||
from .cut_strategy import CutStrategy
|
||||
from .cut_type import CutType
|
||||
from .default_camera_center_to_scene import DefaultCameraCenterToScene
|
||||
from .default_camera_center_to_selection import DefaultCameraCenterToSelection
|
||||
@ -79,14 +85,15 @@ from .density import Density
|
||||
from .der_encoded_key_pair import DerEncodedKeyPair
|
||||
from .device_access_token_request_form import DeviceAccessTokenRequestForm
|
||||
from .device_access_token_uuid import DeviceAccessTokenUuid
|
||||
from .device_auth_confirm_params import DeviceAuthConfirmParams
|
||||
from .device_auth_request_form import DeviceAuthRequestForm
|
||||
from .device_auth_verify_params import DeviceAuthVerifyParams
|
||||
from .direction import Direction
|
||||
from .disable_dry_run import DisableDryRun
|
||||
from .discount import Discount
|
||||
from .discount_code import DiscountCode
|
||||
from .distance_type import DistanceType
|
||||
from .dxf_storage import DxfStorage
|
||||
from .edge_info import EdgeInfo
|
||||
from .edge_lines_visible import EdgeLinesVisible
|
||||
from .email_authentication_form import EmailAuthenticationForm
|
||||
from .empty import Empty
|
||||
@ -112,7 +119,6 @@ from .entity_mirror import EntityMirror
|
||||
from .entity_mirror_across_edge import EntityMirrorAcrossEdge
|
||||
from .entity_set_opacity import EntitySetOpacity
|
||||
from .entity_type import EntityType
|
||||
from .environment import Environment
|
||||
from .error import Error
|
||||
from .error_code import ErrorCode
|
||||
from .event import Event
|
||||
@ -127,6 +133,7 @@ from .extrude import Extrude
|
||||
from .extruded_face_info import ExtrudedFaceInfo
|
||||
from .extrusion_face_cap_type import ExtrusionFaceCapType
|
||||
from .extrusion_face_info import ExtrusionFaceInfo
|
||||
from .face_edge_info import FaceEdgeInfo
|
||||
from .face_get_center import FaceGetCenter
|
||||
from .face_get_gradient import FaceGetGradient
|
||||
from .face_get_position import FaceGetPosition
|
||||
@ -140,9 +147,7 @@ from .file_export_format import FileExportFormat
|
||||
from .file_import_format import FileImportFormat
|
||||
from .file_mass import FileMass
|
||||
from .file_surface_area import FileSurfaceArea
|
||||
from .file_system_metadata import FileSystemMetadata
|
||||
from .file_volume import FileVolume
|
||||
from .gateway import Gateway
|
||||
from .get_entity_type import GetEntityType
|
||||
from .get_num_objects import GetNumObjects
|
||||
from .get_sketch_mode_plane import GetSketchModePlane
|
||||
@ -161,26 +166,22 @@ from .import_file import ImportFile
|
||||
from .import_files import ImportFiles
|
||||
from .imported_geometry import ImportedGeometry
|
||||
from .input_format3d import InputFormat3d
|
||||
from .inquiry_form import InquiryForm
|
||||
from .inquiry_type import InquiryType
|
||||
from .invoice import Invoice
|
||||
from .invoice_line_item import InvoiceLineItem
|
||||
from .invoice_status import InvoiceStatus
|
||||
from .ip_addr_info import IpAddrInfo
|
||||
from .jetstream import Jetstream
|
||||
from .jetstream_api_stats import JetstreamApiStats
|
||||
from .jetstream_config import JetstreamConfig
|
||||
from .jetstream_stats import JetstreamStats
|
||||
from .kcl_code_completion_params import KclCodeCompletionParams
|
||||
from .kcl_code_completion_request import KclCodeCompletionRequest
|
||||
from .kcl_code_completion_response import KclCodeCompletionResponse
|
||||
from .leaf_node import LeafNode
|
||||
from .kcl_model import KclModel
|
||||
from .length_unit import LengthUnit
|
||||
from .loft import Loft
|
||||
from .make_axes_gizmo import MakeAxesGizmo
|
||||
from .make_offset_path import MakeOffsetPath
|
||||
from .make_plane import MakePlane
|
||||
from .mass import Mass
|
||||
from .meta_cluster_info import MetaClusterInfo
|
||||
from .metadata import Metadata
|
||||
from .method import Method
|
||||
from .ml_feedback import MlFeedback
|
||||
from .ml_prompt import MlPrompt
|
||||
@ -213,6 +214,8 @@ from .object_visible import ObjectVisible
|
||||
from .ok_modeling_cmd_response import OkModelingCmdResponse
|
||||
from .ok_web_socket_response_data import OkWebSocketResponseData
|
||||
from .onboarding import Onboarding
|
||||
from .opposite_for_angle import OppositeForAngle
|
||||
from .opposite_for_length_unit import OppositeForLengthUnit
|
||||
from .org import Org
|
||||
from .org_details import OrgDetails
|
||||
from .org_member import OrgMember
|
||||
@ -253,6 +256,7 @@ from .project_entity_to_plane import ProjectEntityToPlane
|
||||
from .project_points_to_plane import ProjectPointsToPlane
|
||||
from .raw_file import RawFile
|
||||
from .reconfigure_stream import ReconfigureStream
|
||||
from .relative_to import RelativeTo
|
||||
from .remove_scene_objects import RemoveSceneObjects
|
||||
from .revolve import Revolve
|
||||
from .revolve_about_edge import RevolveAboutEdge
|
||||
@ -293,6 +297,7 @@ from .side_face import SideFace
|
||||
from .sketch_mode_disable import SketchModeDisable
|
||||
from .solid2d_add_hole import Solid2dAddHole
|
||||
from .solid3d_fillet_edge import Solid3dFilletEdge
|
||||
from .solid3d_get_adjacency_info import Solid3dGetAdjacencyInfo
|
||||
from .solid3d_get_all_edge_faces import Solid3dGetAllEdgeFaces
|
||||
from .solid3d_get_all_opposite_edges import Solid3dGetAllOppositeEdges
|
||||
from .solid3d_get_common_edge import Solid3dGetCommonEdge
|
||||
@ -307,6 +312,7 @@ from .source_range_prompt import SourceRangePrompt
|
||||
from .start_path import StartPath
|
||||
from .stl_storage import StlStorage
|
||||
from .store_coupon_params import StoreCouponParams
|
||||
from .subscribe import Subscribe
|
||||
from .subscription_tier_feature import SubscriptionTierFeature
|
||||
from .subscription_tier_price import SubscriptionTierPrice
|
||||
from .subscription_tier_type import SubscriptionTierType
|
||||
|
17
kittycad/models/adjacency_info.py
Normal file
17
kittycad/models/adjacency_info.py
Normal file
@ -0,0 +1,17 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.edge_info import EdgeInfo
|
||||
|
||||
|
||||
class AdjacencyInfo(BaseModel):
|
||||
"""Edge info struct (useful for maintaining mappings between edges and faces and adjacent/opposite edges)."""
|
||||
|
||||
adjacent_info: Optional[EdgeInfo] = None
|
||||
|
||||
opposite_info: Optional[EdgeInfo] = None
|
||||
|
||||
original_info: Optional[EdgeInfo] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
15
kittycad/models/api_endpoint.py
Normal file
15
kittycad/models/api_endpoint.py
Normal file
@ -0,0 +1,15 @@
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class ApiEndpoint(str, Enum):
|
||||
"""Types of API endpoints.""" # noqa: E501
|
||||
|
||||
"""# The modeling API. """ # noqa: E501
|
||||
MODELING = "modeling"
|
||||
"""# Machine learning API. """ # noqa: E501
|
||||
ML = "ml"
|
||||
"""# File API. """ # noqa: E501
|
||||
FILE = "file"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.value)
|
@ -305,12 +305,18 @@ class OptionTextToCadMultiFileIteration(BaseModel):
|
||||
|
||||
id: Uuid
|
||||
|
||||
kcl_version: Optional[str] = None
|
||||
|
||||
model: TextToCadModel
|
||||
|
||||
model_version: str
|
||||
|
||||
outputs: Optional[Dict[str, str]] = None
|
||||
|
||||
project_name: Optional[str] = None
|
||||
|
||||
prompt: Optional[str] = None
|
||||
|
||||
source_ranges: List[SourceRangePrompt]
|
||||
|
||||
started_at: Optional[datetime.datetime] = None
|
||||
|
11
kittycad/models/boolean_intersection.py
Normal file
11
kittycad/models/boolean_intersection.py
Normal file
@ -0,0 +1,11 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class BooleanIntersection(BaseModel):
|
||||
"""The response from the 'BooleanIntersection'."""
|
||||
|
||||
extra_solid_ids: Optional[List[str]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
11
kittycad/models/boolean_subtract.py
Normal file
11
kittycad/models/boolean_subtract.py
Normal file
@ -0,0 +1,11 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class BooleanSubtract(BaseModel):
|
||||
"""The response from the 'BooleanSubtract'."""
|
||||
|
||||
extra_solid_ids: Optional[List[str]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
11
kittycad/models/boolean_union.py
Normal file
11
kittycad/models/boolean_union.py
Normal file
@ -0,0 +1,11 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class BooleanUnion(BaseModel):
|
||||
"""The response from the 'BooleanUnion'."""
|
||||
|
||||
extra_solid_ids: Optional[List[str]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,11 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class CacheMetadata(BaseModel):
|
||||
"""Metadata about our cache.
|
||||
|
||||
This is mostly used for internal purposes and debugging."""
|
||||
|
||||
ok: bool
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,7 +1,7 @@
|
||||
from typing import List
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.point3d import Point3d
|
||||
from ..models.point4d import Point4d
|
||||
from ..models.world_coordinate_system import WorldCoordinateSystem
|
||||
|
||||
|
||||
@ -18,9 +18,9 @@ class CameraViewState(BaseModel):
|
||||
|
||||
ortho_scale_factor: float
|
||||
|
||||
pivot_position: List[float]
|
||||
pivot_position: Point3d
|
||||
|
||||
pivot_rotation: List[float]
|
||||
pivot_rotation: Point4d
|
||||
|
||||
world_coord_system: WorldCoordinateSystem
|
||||
|
||||
|
@ -1,23 +1,39 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class ClientMetrics(BaseModel):
|
||||
"""ClientMetrics contains information regarding the state of the peer."""
|
||||
|
||||
rtc_frames_decoded: int
|
||||
rtc_frame_height: Optional[int] = None
|
||||
|
||||
rtc_frames_dropped: int
|
||||
rtc_frame_width: Optional[int] = None
|
||||
|
||||
rtc_frames_per_second: int
|
||||
rtc_frames_decoded: Optional[int] = None
|
||||
|
||||
rtc_frames_received: int
|
||||
rtc_frames_dropped: Optional[int] = None
|
||||
|
||||
rtc_freeze_count: int
|
||||
rtc_frames_per_second: Optional[int] = None
|
||||
|
||||
rtc_jitter_sec: float
|
||||
rtc_frames_received: Optional[int] = None
|
||||
|
||||
rtc_keyframes_decoded: int
|
||||
rtc_freeze_count: Optional[int] = None
|
||||
|
||||
rtc_total_freezes_duration_sec: float
|
||||
rtc_jitter_sec: Optional[float] = None
|
||||
|
||||
rtc_keyframes_decoded: Optional[int] = None
|
||||
|
||||
rtc_packets_lost: Optional[int] = None
|
||||
|
||||
rtc_pause_count: Optional[int] = None
|
||||
|
||||
rtc_pli_count: Optional[int] = None
|
||||
|
||||
rtc_stun_rtt_sec: Optional[float] = None
|
||||
|
||||
rtc_total_freezes_duration_sec: Optional[float] = None
|
||||
|
||||
rtc_total_pauses_duration_sec: Optional[float] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -1,21 +0,0 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class Cluster(BaseModel):
|
||||
"""Cluster information."""
|
||||
|
||||
addr: Optional[str] = None
|
||||
|
||||
auth_timeout: int = 0
|
||||
|
||||
cluster_port: int = 0
|
||||
|
||||
name: str = ""
|
||||
|
||||
tls_timeout: int = 0
|
||||
|
||||
urls: List[str] = []
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
17
kittycad/models/code_option.py
Normal file
17
kittycad/models/code_option.py
Normal file
@ -0,0 +1,17 @@
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class CodeOption(str, Enum):
|
||||
"""Code option for running and verifying kcl.
|
||||
|
||||
<details><summary>JSON schema</summary>
|
||||
|
||||
```json { "title": "CodeOption", "description": "Code option for running and verifying kcl.", "type": "string", "enum": [ "parse", "execute", "cleanup", "mock_execute" ] } ``` </details>""" # noqa: E501
|
||||
|
||||
PARSE = "parse"
|
||||
EXECUTE = "execute"
|
||||
CLEANUP = "cleanup"
|
||||
MOCK_EXECUTE = "mock_execute"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.value)
|
13
kittycad/models/complementary_edges.py
Normal file
13
kittycad/models/complementary_edges.py
Normal file
@ -0,0 +1,13 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class ComplementaryEdges(BaseModel):
|
||||
"""Struct to contain the edge information of a wall of an extrude/rotate/loft/sweep."""
|
||||
|
||||
adjacent_ids: List[str]
|
||||
|
||||
opposite_id: Optional[str] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -7,7 +7,7 @@ from ..models.transform_by_for_point4d import TransformByForPoint4d
|
||||
|
||||
|
||||
class ComponentTransform(BaseModel):
|
||||
"""Container that holds a translate, rotate and scale."""
|
||||
"""Container that holds a translate, rotate and scale. Defaults to no change, everything stays the same (i.e. the identity function)."""
|
||||
|
||||
rotate_angle_axis: Optional[TransformByForPoint4d] = None
|
||||
|
||||
|
@ -1,134 +0,0 @@
|
||||
import datetime
|
||||
from typing import Dict
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.cluster import Cluster
|
||||
from ..models.gateway import Gateway
|
||||
from ..models.jetstream import Jetstream
|
||||
from ..models.leaf_node import LeafNode
|
||||
|
||||
|
||||
class Connection(BaseModel):
|
||||
"""Metadata about a pub-sub connection.
|
||||
|
||||
This is mostly used for internal purposes and debugging."""
|
||||
|
||||
auth_timeout: int = 0
|
||||
|
||||
cluster: Cluster = {
|
||||
"addr": None,
|
||||
"auth_timeout": 0,
|
||||
"cluster_port": 0,
|
||||
"name": "",
|
||||
"tls_timeout": 0,
|
||||
"urls": [],
|
||||
} # type: ignore
|
||||
|
||||
config_load_time: datetime.datetime
|
||||
|
||||
connections: int = 0
|
||||
|
||||
cores: int = 0
|
||||
|
||||
cpu: float = 0.0
|
||||
|
||||
gateway: Gateway = {
|
||||
"auth_timeout": 0,
|
||||
"host": "",
|
||||
"name": "",
|
||||
"port": 0,
|
||||
"tls_timeout": 0,
|
||||
} # type: ignore
|
||||
|
||||
git_commit: str = ""
|
||||
|
||||
go: str = ""
|
||||
|
||||
gomaxprocs: int = 0
|
||||
|
||||
host: str
|
||||
|
||||
http_base_path: str = ""
|
||||
|
||||
http_host: str = ""
|
||||
|
||||
http_port: int = 0
|
||||
|
||||
http_req_stats: Dict[str, int]
|
||||
|
||||
https_port: int = 0
|
||||
|
||||
in_bytes: int = 0
|
||||
|
||||
in_msgs: int = 0
|
||||
|
||||
jetstream: Jetstream = {
|
||||
"config": {"domain": "", "max_memory": 0, "max_storage": 0, "store_dir": ""},
|
||||
"meta": {"cluster_size": 0, "leader": "", "name": ""},
|
||||
"stats": {
|
||||
"accounts": 0,
|
||||
"api": {"errors": 0, "inflight": 0, "total": 0},
|
||||
"ha_assets": 0,
|
||||
"memory": 0,
|
||||
"reserved_memory": 0,
|
||||
"reserved_store": 0,
|
||||
"store": 0,
|
||||
},
|
||||
} # type: ignore
|
||||
|
||||
leaf: LeafNode = {"auth_timeout": 0, "host": "", "port": 0, "tls_timeout": 0} # type: ignore
|
||||
|
||||
leafnodes: int = 0
|
||||
|
||||
max_connections: int = 0
|
||||
|
||||
max_control_line: int = 0
|
||||
|
||||
max_payload: int = 0
|
||||
|
||||
max_pending: int = 0
|
||||
|
||||
mem: int = 0
|
||||
|
||||
now: datetime.datetime
|
||||
|
||||
out_bytes: int = 0
|
||||
|
||||
out_msgs: int = 0
|
||||
|
||||
ping_interval: int = 0
|
||||
|
||||
ping_max: int = 0
|
||||
|
||||
port: int = 0
|
||||
|
||||
proto: int = 0
|
||||
|
||||
remotes: int = 0
|
||||
|
||||
routes: int = 0
|
||||
|
||||
server_id: str = ""
|
||||
|
||||
server_name: str = ""
|
||||
|
||||
slow_consumers: int = 0
|
||||
|
||||
start: datetime.datetime
|
||||
|
||||
subscriptions: int = 0
|
||||
|
||||
system_account: str = ""
|
||||
|
||||
tls_timeout: int = 0
|
||||
|
||||
total_connections: int = 0
|
||||
|
||||
uptime: str = ""
|
||||
|
||||
version: str = ""
|
||||
|
||||
write_deadline: int = 0
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
15
kittycad/models/crm_data.py
Normal file
15
kittycad/models/crm_data.py
Normal file
@ -0,0 +1,15 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class CrmData(BaseModel):
|
||||
"""The data for subscribing a user to the newsletter."""
|
||||
|
||||
cad_industry: Optional[str] = None
|
||||
|
||||
cad_user_type: Optional[str] = None
|
||||
|
||||
number_of_cad_users: Optional[str] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -21,17 +21,19 @@ class CustomerBalance(BaseModel):
|
||||
|
||||
modeling_app_enterprise_price: Optional[SubscriptionTierPrice] = None
|
||||
|
||||
monthly_credits_remaining: float
|
||||
monthly_api_credits_remaining: int
|
||||
|
||||
pre_pay_cash_remaining: float
|
||||
monthly_api_credits_remaining_monetary_value: float
|
||||
|
||||
pre_pay_credits_remaining: float
|
||||
stable_api_credits_remaining: int
|
||||
|
||||
stable_api_credits_remaining_monetary_value: float
|
||||
|
||||
subscription_details: Optional[ZooProductSubscriptions] = None
|
||||
|
||||
subscription_id: Optional[str] = None
|
||||
|
||||
total_due: float
|
||||
total_due: Optional[float] = None
|
||||
|
||||
updated_at: datetime.datetime
|
||||
|
||||
|
15
kittycad/models/cut_strategy.py
Normal file
15
kittycad/models/cut_strategy.py
Normal file
@ -0,0 +1,15 @@
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class CutStrategy(str, Enum):
|
||||
"""What strategy (algorithm) should be used for cutting? Defaults to Automatic.""" # noqa: E501
|
||||
|
||||
"""# Basic fillet cut. This has limitations, like the filletted edges can't touch each other. But it's very fast and simple. """ # noqa: E501
|
||||
BASIC = "basic"
|
||||
"""# More complicated fillet cut. It works for more use-cases, like edges that touch each other. But it's slower than the Basic method. """ # noqa: E501
|
||||
CSG = "csg"
|
||||
"""# Tries the Basic method, and if that doesn't work, tries the CSG strategy. """ # noqa: E501
|
||||
AUTOMATIC = "automatic"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.value)
|
9
kittycad/models/device_auth_confirm_params.py
Normal file
9
kittycad/models/device_auth_confirm_params.py
Normal file
@ -0,0 +1,9 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class DeviceAuthConfirmParams(BaseModel):
|
||||
"""The request parameters to confirm the `user_code` for the OAuth 2.0 Device Authorization Grant."""
|
||||
|
||||
user_code: str
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,9 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class DeviceAuthVerifyParams(BaseModel):
|
||||
"""The request parameters to verify the `user_code` for the OAuth 2.0 Device Authorization Grant."""
|
||||
|
||||
user_code: str
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
13
kittycad/models/edge_info.py
Normal file
13
kittycad/models/edge_info.py
Normal file
@ -0,0 +1,13 @@
|
||||
from typing import List
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class EdgeInfo(BaseModel):
|
||||
"""A list of faces for a specific edge."""
|
||||
|
||||
edge_id: str
|
||||
|
||||
faces: List[str]
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,11 +1,15 @@
|
||||
from typing import List
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.face_edge_info import FaceEdgeInfo
|
||||
|
||||
|
||||
class EntityCircularPattern(BaseModel):
|
||||
"""The response from the `EntityCircularPattern` command."""
|
||||
|
||||
entity_ids: List[str]
|
||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||
|
||||
entity_ids: Optional[List[str]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -1,7 +1,15 @@
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.face_edge_info import FaceEdgeInfo
|
||||
|
||||
|
||||
class EntityClone(BaseModel):
|
||||
"""The response from the `EntityClone` command."""
|
||||
|
||||
entity_ids: Optional[List[str]] = None
|
||||
|
||||
face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -1,11 +1,15 @@
|
||||
from typing import List
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.face_edge_info import FaceEdgeInfo
|
||||
|
||||
|
||||
class EntityLinearPattern(BaseModel):
|
||||
"""The response from the `EntityLinearPattern` command."""
|
||||
|
||||
entity_ids: List[str]
|
||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||
|
||||
entity_ids: Optional[List[str]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -1,11 +1,15 @@
|
||||
from typing import List
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.face_edge_info import FaceEdgeInfo
|
||||
|
||||
|
||||
class EntityLinearPatternTransform(BaseModel):
|
||||
"""The response from the `EntityLinearPatternTransform` command."""
|
||||
|
||||
entity_ids: List[str]
|
||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||
|
||||
entity_ids: Optional[List[str]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -1,11 +1,15 @@
|
||||
from typing import List
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.face_edge_info import FaceEdgeInfo
|
||||
|
||||
|
||||
class EntityMirror(BaseModel):
|
||||
"""The response from the `EntityMirror` endpoint."""
|
||||
|
||||
entity_ids: List[str]
|
||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||
|
||||
entity_ids: Optional[List[str]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -1,11 +1,15 @@
|
||||
from typing import List
|
||||
from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.face_edge_info import FaceEdgeInfo
|
||||
|
||||
|
||||
class EntityMirrorAcrossEdge(BaseModel):
|
||||
"""The response from the `EntityMirrorAcrossEdge` endpoint."""
|
||||
|
||||
entity_ids: List[str]
|
||||
entity_face_edge_ids: Optional[List[FaceEdgeInfo]] = None
|
||||
|
||||
entity_ids: Optional[List[str]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -1,15 +0,0 @@
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class Environment(str, Enum):
|
||||
"""The environment the server is running in.""" # noqa: E501
|
||||
|
||||
"""# The development environment. This is for running locally. """ # noqa: E501
|
||||
DEVELOPMENT = "DEVELOPMENT"
|
||||
"""# The preview environment. This is when PRs are created and a service is deployed for testing. """ # noqa: E501
|
||||
PREVIEW = "PREVIEW"
|
||||
"""# The production environment. """ # noqa: E501
|
||||
PRODUCTION = "PRODUCTION"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.value)
|
@ -20,6 +20,8 @@ class ExtendedUser(BaseModel):
|
||||
|
||||
created_at: datetime.datetime
|
||||
|
||||
deletion_scheduled: bool = False
|
||||
|
||||
discord: Optional[str] = None
|
||||
|
||||
email: Optional[str] = None
|
||||
@ -36,6 +38,8 @@ class ExtendedUser(BaseModel):
|
||||
|
||||
image: str
|
||||
|
||||
is_onboarded: bool = False
|
||||
|
||||
is_service_account: bool = False
|
||||
|
||||
last_name: Optional[str] = None
|
||||
|
15
kittycad/models/face_edge_info.py
Normal file
15
kittycad/models/face_edge_info.py
Normal file
@ -0,0 +1,15 @@
|
||||
from typing import List
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class FaceEdgeInfo(BaseModel):
|
||||
"""Faces and edges id info (most used in identifying geometry in patterned and mirrored objects)."""
|
||||
|
||||
edges: List[str]
|
||||
|
||||
faces: List[str]
|
||||
|
||||
object_id: str
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,11 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class FileSystemMetadata(BaseModel):
|
||||
"""Metadata about our file system.
|
||||
|
||||
This is mostly used for internal purposes and debugging."""
|
||||
|
||||
ok: bool
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,17 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class Gateway(BaseModel):
|
||||
"""Gateway information."""
|
||||
|
||||
auth_timeout: int = 0
|
||||
|
||||
host: str = ""
|
||||
|
||||
name: str = ""
|
||||
|
||||
port: int = 0
|
||||
|
||||
tls_timeout: int = 0
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
27
kittycad/models/inquiry_form.py
Normal file
27
kittycad/models/inquiry_form.py
Normal file
@ -0,0 +1,27 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.inquiry_type import InquiryType
|
||||
|
||||
|
||||
class InquiryForm(BaseModel):
|
||||
"""The form for a public inquiry submission."""
|
||||
|
||||
company: Optional[str] = None
|
||||
|
||||
email: str
|
||||
|
||||
first_name: str
|
||||
|
||||
industry: Optional[str] = None
|
||||
|
||||
inquiry_type: InquiryType
|
||||
|
||||
last_name: str
|
||||
|
||||
message: str
|
||||
|
||||
phone: Optional[str] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
25
kittycad/models/inquiry_type.py
Normal file
25
kittycad/models/inquiry_type.py
Normal file
@ -0,0 +1,25 @@
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class InquiryType(str, Enum):
|
||||
"""The type of inquiry.""" # noqa: E501
|
||||
|
||||
"""# General inquiry about the service or product. """ # noqa: E501
|
||||
GENERAL_INQUIRY = "general_inquiry"
|
||||
"""# Questions related to sales or purchasing. """ # noqa: E501
|
||||
SALES_QUESTION = "sales_question"
|
||||
"""# Inquiry from a developer, typically technical in nature. """ # noqa: E501
|
||||
DEVELOPER_INQUIRY = "developer_inquiry"
|
||||
"""# Opportunity for partnership or collaboration. """ # noqa: E501
|
||||
PARTNERSHIP_OPPORTUNITY = "partnership_opportunity"
|
||||
"""# Other inquiries related to sales that do not fit predefined categories. """ # noqa: E501
|
||||
OTHER_SALES_INQUIRY = "other_sales_inquiry"
|
||||
"""# Request for technical support or troubleshooting. """ # noqa: E501
|
||||
TECHNICAL_SUPPORT = "technical_support"
|
||||
"""# Questions or requests related to account management. """ # noqa: E501
|
||||
ACCOUNT_MANAGEMENT = "account_management"
|
||||
"""# Other support-related inquiries that do not fit predefined categories. """ # noqa: E501
|
||||
OTHER_SUPPORT_INQUIRY = "other_support_inquiry"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.value)
|
@ -1,30 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.jetstream_config import JetstreamConfig
|
||||
from ..models.jetstream_stats import JetstreamStats
|
||||
from ..models.meta_cluster_info import MetaClusterInfo
|
||||
|
||||
|
||||
class Jetstream(BaseModel):
|
||||
"""Jetstream information."""
|
||||
|
||||
config: JetstreamConfig = {
|
||||
"domain": "",
|
||||
"max_memory": 0,
|
||||
"max_storage": 0,
|
||||
"store_dir": "",
|
||||
} # type: ignore
|
||||
|
||||
meta: MetaClusterInfo = {"cluster_size": 0, "leader": "", "name": ""} # type: ignore
|
||||
|
||||
stats: JetstreamStats = {
|
||||
"accounts": 0,
|
||||
"api": {"errors": 0, "inflight": 0, "total": 0},
|
||||
"ha_assets": 0,
|
||||
"memory": 0,
|
||||
"reserved_memory": 0,
|
||||
"reserved_store": 0,
|
||||
"store": 0,
|
||||
} # type: ignore
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,13 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class JetstreamApiStats(BaseModel):
|
||||
"""Jetstream API statistics."""
|
||||
|
||||
errors: int = 0
|
||||
|
||||
inflight: int = 0
|
||||
|
||||
total: int = 0
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,15 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class JetstreamConfig(BaseModel):
|
||||
"""Jetstream configuration."""
|
||||
|
||||
domain: str = ""
|
||||
|
||||
max_memory: int = 0
|
||||
|
||||
max_storage: int = 0
|
||||
|
||||
store_dir: str = ""
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,23 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.jetstream_api_stats import JetstreamApiStats
|
||||
|
||||
|
||||
class JetstreamStats(BaseModel):
|
||||
"""Jetstream statistics."""
|
||||
|
||||
accounts: int = 0
|
||||
|
||||
api: JetstreamApiStats = {"errors": 0, "inflight": 0, "total": 0} # type: ignore
|
||||
|
||||
ha_assets: int = 0
|
||||
|
||||
memory: int = 0
|
||||
|
||||
reserved_memory: int = 0
|
||||
|
||||
reserved_store: int = 0
|
||||
|
||||
store: int = 0
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
9
kittycad/models/kcl_model.py
Normal file
9
kittycad/models/kcl_model.py
Normal file
@ -0,0 +1,9 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class KclModel(BaseModel):
|
||||
"""The response containing the KCL code."""
|
||||
|
||||
code: str
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,15 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class LeafNode(BaseModel):
|
||||
"""Leaf node information."""
|
||||
|
||||
auth_timeout: int = 0
|
||||
|
||||
host: str = ""
|
||||
|
||||
port: int = 0
|
||||
|
||||
tls_timeout: int = 0
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,13 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class MetaClusterInfo(BaseModel):
|
||||
"""Jetstream statistics."""
|
||||
|
||||
cluster_size: int = 0
|
||||
|
||||
leader: str = ""
|
||||
|
||||
name: str = ""
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -1,24 +0,0 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.cache_metadata import CacheMetadata
|
||||
from ..models.connection import Connection
|
||||
from ..models.environment import Environment
|
||||
from ..models.file_system_metadata import FileSystemMetadata
|
||||
|
||||
|
||||
class Metadata(BaseModel):
|
||||
"""Metadata about our currently running server.
|
||||
|
||||
This is mostly used for internal purposes and debugging."""
|
||||
|
||||
cache: CacheMetadata
|
||||
|
||||
environment: Environment
|
||||
|
||||
fs: FileSystemMetadata
|
||||
|
||||
git_hash: str
|
||||
|
||||
pubsub: Connection
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -2,6 +2,7 @@ from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.api_endpoint import ApiEndpoint
|
||||
from ..models.modeling_app_share_links import ModelingAppShareLinks
|
||||
from ..models.modeling_app_subscription_tier_name import ModelingAppSubscriptionTierName
|
||||
from ..models.subscription_tier_feature import SubscriptionTierFeature
|
||||
@ -21,11 +22,17 @@ class ModelingAppSubscriptionTier(BaseModel):
|
||||
|
||||
description: str
|
||||
|
||||
endpoints_included: Optional[List[ApiEndpoint]] = None
|
||||
|
||||
features: Optional[List[SubscriptionTierFeature]] = None
|
||||
|
||||
monthly_pay_as_you_go_api_credits: int = 0
|
||||
|
||||
monthly_pay_as_you_go_api_credits_monetary_value: float
|
||||
|
||||
name: ModelingAppSubscriptionTierName
|
||||
|
||||
pay_as_you_go_credits: float
|
||||
pay_as_you_go_api_credit_price: float = 0.0
|
||||
|
||||
price: SubscriptionTierPrice
|
||||
|
||||
|
@ -11,6 +11,7 @@ from ..models.camera_movement import CameraMovement
|
||||
from ..models.camera_view_state import CameraViewState
|
||||
from ..models.color import Color
|
||||
from ..models.component_transform import ComponentTransform
|
||||
from ..models.cut_strategy import CutStrategy
|
||||
from ..models.cut_type import CutType
|
||||
from ..models.distance_type import DistanceType
|
||||
from ..models.entity_type import EntityType
|
||||
@ -20,6 +21,8 @@ from ..models.import_file import ImportFile
|
||||
from ..models.input_format3d import InputFormat3d
|
||||
from ..models.length_unit import LengthUnit
|
||||
from ..models.modeling_cmd_id import ModelingCmdId
|
||||
from ..models.opposite_for_angle import OppositeForAngle
|
||||
from ..models.opposite_for_length_unit import OppositeForLengthUnit
|
||||
from ..models.output_format2d import OutputFormat2d
|
||||
from ..models.output_format3d import OutputFormat3d
|
||||
from ..models.path_component_constraint_bound import PathComponentConstraintBound
|
||||
@ -28,6 +31,7 @@ from ..models.path_segment import PathSegment
|
||||
from ..models.perspective_camera_parameters import PerspectiveCameraParameters
|
||||
from ..models.point2d import Point2d
|
||||
from ..models.point3d import Point3d
|
||||
from ..models.relative_to import RelativeTo
|
||||
from ..models.scene_selection_type import SceneSelectionType
|
||||
from ..models.scene_tool_type import SceneToolType
|
||||
from ..models.transform import Transform
|
||||
@ -89,6 +93,8 @@ class OptionExtrude(BaseModel):
|
||||
|
||||
faces: Optional[ExtrudedFaceInfo] = None
|
||||
|
||||
opposite: OppositeForLengthUnit = "None" # type: ignore
|
||||
|
||||
target: ModelingCmdId
|
||||
|
||||
type: Literal["extrude"] = "extrude"
|
||||
@ -99,6 +105,8 @@ class OptionExtrude(BaseModel):
|
||||
class OptionSweep(BaseModel):
|
||||
"""Extrude the object along a path."""
|
||||
|
||||
relative_to: RelativeTo = "sketch_plane" # type: ignore
|
||||
|
||||
sectional: bool
|
||||
|
||||
target: ModelingCmdId
|
||||
@ -121,6 +129,8 @@ class OptionRevolve(BaseModel):
|
||||
|
||||
axis_is_2d: bool
|
||||
|
||||
opposite: OppositeForAngle = "None" # type: ignore
|
||||
|
||||
origin: Point3d
|
||||
|
||||
target: ModelingCmdId
|
||||
@ -155,6 +165,8 @@ class OptionRevolveAboutEdge(BaseModel):
|
||||
|
||||
edge_id: str
|
||||
|
||||
opposite: OppositeForAngle = "None" # type: ignore
|
||||
|
||||
target: ModelingCmdId
|
||||
|
||||
tolerance: LengthUnit
|
||||
@ -809,14 +821,18 @@ class OptionSolid3DFilletEdge(BaseModel):
|
||||
|
||||
cut_type: CutType = "fillet" # type: ignore
|
||||
|
||||
edge_id: str
|
||||
edge_id: Optional[str] = None
|
||||
|
||||
face_id: Optional[str] = None
|
||||
edge_ids: List[str] = []
|
||||
|
||||
extra_face_ids: List[str] = []
|
||||
|
||||
object_id: str
|
||||
|
||||
radius: LengthUnit
|
||||
|
||||
strategy: CutStrategy = "automatic" # type: ignore
|
||||
|
||||
tolerance: LengthUnit
|
||||
|
||||
type: Literal["solid3d_fillet_edge"] = "solid3d_fillet_edge"
|
||||
@ -1480,6 +1496,18 @@ class OptionSolid3DGetExtrusionFaceInfo(BaseModel):
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionSolid3DGetAdjacencyInfo(BaseModel):
|
||||
"""Get a concise description of all of solids edges."""
|
||||
|
||||
edge_id: str
|
||||
|
||||
object_id: str
|
||||
|
||||
type: Literal["solid3d_get_adjacency_info"] = "solid3d_get_adjacency_info"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionSelectClear(BaseModel):
|
||||
"""Clear the selection"""
|
||||
|
||||
@ -1516,6 +1544,44 @@ class OptionSetObjectTransform(BaseModel):
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionBooleanUnion(BaseModel):
|
||||
"""Create a new solid from combining other smaller solids. In other words, every part of the input solids will be included in the output solid."""
|
||||
|
||||
solid_ids: List[str]
|
||||
|
||||
tolerance: LengthUnit
|
||||
|
||||
type: Literal["boolean_union"] = "boolean_union"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionBooleanIntersection(BaseModel):
|
||||
"""Create a new solid from intersecting several other solids. In other words, the part of the input solids where they all overlap will be the output solid."""
|
||||
|
||||
solid_ids: List[str]
|
||||
|
||||
tolerance: LengthUnit
|
||||
|
||||
type: Literal["boolean_intersection"] = "boolean_intersection"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionBooleanSubtract(BaseModel):
|
||||
"""Create a new solid from subtracting several other solids. The 'target' is what will be cut from. The 'tool' is what will be cut out from 'target'."""
|
||||
|
||||
target_ids: List[str]
|
||||
|
||||
tolerance: LengthUnit
|
||||
|
||||
tool_ids: List[str]
|
||||
|
||||
type: Literal["boolean_subtract"] = "boolean_subtract"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionMakeOffsetPath(BaseModel):
|
||||
"""Make a new path by offsetting an object by a given distance. The new path's ID will be the ID of this command."""
|
||||
|
||||
@ -1674,10 +1740,14 @@ ModelingCmd = RootModel[
|
||||
OptionOrientToFace,
|
||||
OptionViewIsometric,
|
||||
OptionSolid3DGetExtrusionFaceInfo,
|
||||
OptionSolid3DGetAdjacencyInfo,
|
||||
OptionSelectClear,
|
||||
OptionSelectGet,
|
||||
OptionGetNumObjects,
|
||||
OptionSetObjectTransform,
|
||||
OptionBooleanUnion,
|
||||
OptionBooleanIntersection,
|
||||
OptionBooleanSubtract,
|
||||
OptionMakeOffsetPath,
|
||||
OptionAddHoleFromOffset,
|
||||
OptionSetGridReferencePlane,
|
||||
|
@ -8,6 +8,8 @@ class OAuth2ClientInfo(BaseModel):
|
||||
|
||||
csrf_token: Optional[str] = None
|
||||
|
||||
oidc_nonce: Optional[str] = None
|
||||
|
||||
pkce_code_verifier: Optional[str] = None
|
||||
|
||||
url: Optional[str] = None
|
||||
|
@ -4,11 +4,16 @@ from pydantic import BaseModel, ConfigDict, Field, RootModel
|
||||
from typing_extensions import Annotated
|
||||
|
||||
from ..models.add_hole_from_offset import AddHoleFromOffset
|
||||
from ..models.adjacency_info import AdjacencyInfo
|
||||
from ..models.boolean_intersection import BooleanIntersection
|
||||
from ..models.boolean_subtract import BooleanSubtract
|
||||
from ..models.boolean_union import BooleanUnion
|
||||
from ..models.camera_drag_end import CameraDragEnd
|
||||
from ..models.camera_drag_move import CameraDragMove
|
||||
from ..models.camera_drag_start import CameraDragStart
|
||||
from ..models.center_of_mass import CenterOfMass
|
||||
from ..models.close_path import ClosePath
|
||||
from ..models.complementary_edges import ComplementaryEdges
|
||||
from ..models.curve_get_control_points import CurveGetControlPoints
|
||||
from ..models.curve_get_end_points import CurveGetEndPoints
|
||||
from ..models.curve_get_type import CurveGetType
|
||||
@ -28,6 +33,7 @@ from ..models.default_camera_set_view import DefaultCameraSetView
|
||||
from ..models.default_camera_zoom import DefaultCameraZoom
|
||||
from ..models.density import Density
|
||||
from ..models.disable_dry_run import DisableDryRun
|
||||
from ..models.edge_info import EdgeInfo
|
||||
from ..models.edge_lines_visible import EdgeLinesVisible
|
||||
from ..models.enable_dry_run import EnableDryRun
|
||||
from ..models.enable_sketch_mode import EnableSketchMode
|
||||
@ -55,6 +61,7 @@ from ..models.export3d import Export3d
|
||||
from ..models.extend_path import ExtendPath
|
||||
from ..models.extrude import Extrude
|
||||
from ..models.extrusion_face_info import ExtrusionFaceInfo
|
||||
from ..models.face_edge_info import FaceEdgeInfo
|
||||
from ..models.face_get_center import FaceGetCenter
|
||||
from ..models.face_get_gradient import FaceGetGradient
|
||||
from ..models.face_get_position import FaceGetPosition
|
||||
@ -116,6 +123,7 @@ from ..models.set_tool import SetTool
|
||||
from ..models.sketch_mode_disable import SketchModeDisable
|
||||
from ..models.solid2d_add_hole import Solid2dAddHole
|
||||
from ..models.solid3d_fillet_edge import Solid3dFilletEdge
|
||||
from ..models.solid3d_get_adjacency_info import Solid3dGetAdjacencyInfo
|
||||
from ..models.solid3d_get_all_edge_faces import Solid3dGetAllEdgeFaces
|
||||
from ..models.solid3d_get_all_opposite_edges import Solid3dGetAllOppositeEdges
|
||||
from ..models.solid3d_get_common_edge import Solid3dGetCommonEdge
|
||||
@ -956,6 +964,16 @@ class OptionSelectGet(BaseModel):
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionSolid3DGetAdjacencyInfo(BaseModel):
|
||||
""""""
|
||||
|
||||
data: Solid3dGetAdjacencyInfo
|
||||
|
||||
type: Literal["solid3d_get_adjacency_info"] = "solid3d_get_adjacency_info"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionSolid3DGetAllEdgeFaces(BaseModel):
|
||||
""""""
|
||||
|
||||
@ -1298,6 +1316,26 @@ class OptionEntityGetDistance(BaseModel):
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionFaceEdgeInfo(BaseModel):
|
||||
""""""
|
||||
|
||||
data: FaceEdgeInfo
|
||||
|
||||
type: Literal["face_edge_info"] = "face_edge_info"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionEdgeInfo(BaseModel):
|
||||
""""""
|
||||
|
||||
data: EdgeInfo
|
||||
|
||||
type: Literal["edge_info"] = "edge_info"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionEntityClone(BaseModel):
|
||||
""""""
|
||||
|
||||
@ -1408,6 +1446,26 @@ class OptionExtrusionFaceInfo(BaseModel):
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionComplementaryEdges(BaseModel):
|
||||
""""""
|
||||
|
||||
data: ComplementaryEdges
|
||||
|
||||
type: Literal["complementary_edges"] = "complementary_edges"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionAdjacencyInfo(BaseModel):
|
||||
""""""
|
||||
|
||||
data: AdjacencyInfo
|
||||
|
||||
type: Literal["adjacency_info"] = "adjacency_info"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionSetGridReferencePlane(BaseModel):
|
||||
""""""
|
||||
|
||||
@ -1418,6 +1476,36 @@ class OptionSetGridReferencePlane(BaseModel):
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionBooleanUnion(BaseModel):
|
||||
""""""
|
||||
|
||||
data: BooleanUnion
|
||||
|
||||
type: Literal["boolean_union"] = "boolean_union"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionBooleanIntersection(BaseModel):
|
||||
""""""
|
||||
|
||||
data: BooleanIntersection
|
||||
|
||||
type: Literal["boolean_intersection"] = "boolean_intersection"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionBooleanSubtract(BaseModel):
|
||||
""""""
|
||||
|
||||
data: BooleanSubtract
|
||||
|
||||
type: Literal["boolean_subtract"] = "boolean_subtract"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
OkModelingCmdResponse = RootModel[
|
||||
Annotated[
|
||||
Union[
|
||||
@ -1503,6 +1591,7 @@ OkModelingCmdResponse = RootModel[
|
||||
OptionAddHoleFromOffset,
|
||||
OptionDefaultCameraFocusOn,
|
||||
OptionSelectGet,
|
||||
OptionSolid3DGetAdjacencyInfo,
|
||||
OptionSolid3DGetAllEdgeFaces,
|
||||
OptionSolid3DGetAllOppositeEdges,
|
||||
OptionSolid3DGetOppositeEdge,
|
||||
@ -1537,6 +1626,8 @@ OkModelingCmdResponse = RootModel[
|
||||
OptionCenterOfMass,
|
||||
OptionGetSketchModePlane,
|
||||
OptionEntityGetDistance,
|
||||
OptionFaceEdgeInfo,
|
||||
OptionEdgeInfo,
|
||||
OptionEntityClone,
|
||||
OptionEntityLinearPatternTransform,
|
||||
OptionEntityLinearPattern,
|
||||
@ -1548,7 +1639,12 @@ OkModelingCmdResponse = RootModel[
|
||||
OptionEntityMakeHelixFromEdge,
|
||||
OptionSolid3DGetExtrusionFaceInfo,
|
||||
OptionExtrusionFaceInfo,
|
||||
OptionComplementaryEdges,
|
||||
OptionAdjacencyInfo,
|
||||
OptionSetGridReferencePlane,
|
||||
OptionBooleanUnion,
|
||||
OptionBooleanIntersection,
|
||||
OptionBooleanSubtract,
|
||||
],
|
||||
Field(discriminator="type"),
|
||||
]
|
||||
|
@ -170,6 +170,24 @@ class OptionPong(BaseModel):
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class DebugData(BaseModel):
|
||||
""""""
|
||||
|
||||
name: str
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionDebug(BaseModel):
|
||||
"""Information about the connected instance"""
|
||||
|
||||
data: DebugData
|
||||
|
||||
type: Literal["debug"] = "debug"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
OkWebSocketResponseData = RootModel[
|
||||
Annotated[
|
||||
Union[
|
||||
@ -182,6 +200,7 @@ OkWebSocketResponseData = RootModel[
|
||||
OptionMetricsRequest,
|
||||
OptionModelingSessionData,
|
||||
OptionPong,
|
||||
OptionDebug,
|
||||
],
|
||||
Field(discriminator="type"),
|
||||
]
|
||||
|
17
kittycad/models/opposite_for_angle.py
Normal file
17
kittycad/models/opposite_for_angle.py
Normal file
@ -0,0 +1,17 @@
|
||||
from typing import Any
|
||||
|
||||
from pydantic import GetCoreSchemaHandler
|
||||
from pydantic_core import CoreSchema, core_schema
|
||||
|
||||
|
||||
class OppositeForAngle(str):
|
||||
""""""
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self
|
||||
|
||||
@classmethod
|
||||
def __get_pydantic_core_schema__(
|
||||
cls, source_type: Any, handler: GetCoreSchemaHandler
|
||||
) -> CoreSchema:
|
||||
return core_schema.no_info_after_validator_function(cls, handler(str))
|
17
kittycad/models/opposite_for_length_unit.py
Normal file
17
kittycad/models/opposite_for_length_unit.py
Normal file
@ -0,0 +1,17 @@
|
||||
from typing import Any
|
||||
|
||||
from pydantic import GetCoreSchemaHandler
|
||||
from pydantic_core import CoreSchema, core_schema
|
||||
|
||||
|
||||
class OppositeForLengthUnit(str):
|
||||
""""""
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self
|
||||
|
||||
@classmethod
|
||||
def __get_pydantic_core_schema__(
|
||||
cls, source_type: Any, handler: GetCoreSchemaHandler
|
||||
) -> CoreSchema:
|
||||
return core_schema.no_info_after_validator_function(cls, handler(str))
|
@ -1,4 +1,5 @@
|
||||
from typing import Literal, Union
|
||||
import datetime
|
||||
from typing import Literal, Optional, Union
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field, RootModel
|
||||
from typing_extensions import Annotated
|
||||
@ -16,6 +17,8 @@ from ..models.unit_length import UnitLength
|
||||
class OptionFbx(BaseModel):
|
||||
"""Autodesk Filmbox (FBX) format."""
|
||||
|
||||
created: Optional[datetime.datetime] = None
|
||||
|
||||
storage: FbxStorage
|
||||
|
||||
type: Literal["fbx"] = "fbx"
|
||||
@ -68,6 +71,8 @@ class OptionStep(BaseModel):
|
||||
|
||||
coords: System
|
||||
|
||||
created: Optional[datetime.datetime] = None
|
||||
|
||||
type: Literal["step"] = "step"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -93,6 +93,22 @@ class OptionArcTo(BaseModel):
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionCircularInvolute(BaseModel):
|
||||
"""Adds a circular involute from the current position that goes through the given end_radius and is rotated around the current point by angle."""
|
||||
|
||||
angle: Angle
|
||||
|
||||
end_radius: LengthUnit
|
||||
|
||||
reverse: bool
|
||||
|
||||
start_radius: LengthUnit
|
||||
|
||||
type: Literal["circular_involute"] = "circular_involute"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
PathSegment = RootModel[
|
||||
Annotated[
|
||||
Union[
|
||||
@ -102,6 +118,7 @@ PathSegment = RootModel[
|
||||
OptionTangentialArc,
|
||||
OptionTangentialArcTo,
|
||||
OptionArcTo,
|
||||
OptionCircularInvolute,
|
||||
],
|
||||
Field(discriminator="type"),
|
||||
]
|
||||
|
13
kittycad/models/relative_to.py
Normal file
13
kittycad/models/relative_to.py
Normal file
@ -0,0 +1,13 @@
|
||||
from enum import Enum
|
||||
|
||||
|
||||
class RelativeTo(str, Enum):
|
||||
"""What is the given geometry relative to?""" # noqa: E501
|
||||
|
||||
"""# Local/relative to a position centered within the plane being sketched on """ # noqa: E501
|
||||
SKETCH_PLANE = "sketch_plane"
|
||||
"""# Local/relative to the trajectory curve """ # noqa: E501
|
||||
TRAJECTORY_CURVE = "trajectory_curve"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.value)
|
13
kittycad/models/solid3d_get_adjacency_info.py
Normal file
13
kittycad/models/solid3d_get_adjacency_info.py
Normal file
@ -0,0 +1,13 @@
|
||||
from typing import List
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.adjacency_info import AdjacencyInfo
|
||||
|
||||
|
||||
class Solid3dGetAdjacencyInfo(BaseModel):
|
||||
"""Extrusion face info struct (useful for maintaining mappings between source path segment ids and extrusion faces) This includes the opposite and adjacent faces and edges."""
|
||||
|
||||
edges: List[AdjacencyInfo]
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
9
kittycad/models/subscribe.py
Normal file
9
kittycad/models/subscribe.py
Normal file
@ -0,0 +1,9 @@
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
|
||||
class Subscribe(BaseModel):
|
||||
"""The data for subscribing a user to the newsletter."""
|
||||
|
||||
email: str
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
@ -6,12 +6,12 @@ class SupportTier(str, Enum):
|
||||
|
||||
"""# Community support. """ # noqa: E501
|
||||
COMMUNITY = "community"
|
||||
"""# Standard support. """ # noqa: E501
|
||||
STANDARD = "standard"
|
||||
"""# Standard email support. """ # noqa: E501
|
||||
STANDARD_EMAIL = "standard_email"
|
||||
"""# Priority email support. """ # noqa: E501
|
||||
PRIORITY_EMAIL = "priority_email"
|
||||
"""# Premium support. """ # noqa: E501
|
||||
PREMIUM = "premium"
|
||||
"""# Priority support. """ # noqa: E501
|
||||
PRIORITY = "priority"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.value)
|
||||
|
@ -23,12 +23,18 @@ class TextToCadMultiFileIteration(BaseModel):
|
||||
|
||||
id: Uuid
|
||||
|
||||
kcl_version: Optional[str] = None
|
||||
|
||||
model: TextToCadModel
|
||||
|
||||
model_version: str
|
||||
|
||||
outputs: Optional[Dict[str, str]] = None
|
||||
|
||||
project_name: Optional[str] = None
|
||||
|
||||
prompt: Optional[str] = None
|
||||
|
||||
source_ranges: List[SourceRangePrompt]
|
||||
|
||||
started_at: Optional[datetime.datetime] = None
|
||||
|
@ -6,12 +6,14 @@ from ..models.source_range_prompt import SourceRangePrompt
|
||||
|
||||
|
||||
class TextToCadMultiFileIterationBody(BaseModel):
|
||||
"""Body for generating models from text."""
|
||||
"""Body for iterating on models from text prompts."""
|
||||
|
||||
kcl_version: Optional[str] = None
|
||||
|
||||
project_name: Optional[str] = None
|
||||
|
||||
source_ranges: List[SourceRangePrompt]
|
||||
prompt: Optional[str] = None
|
||||
|
||||
source_ranges: Optional[List[SourceRangePrompt]] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -6,10 +6,8 @@ from pydantic import BaseModel, ConfigDict
|
||||
class UpdatePaymentBalance(BaseModel):
|
||||
"""The data for updating a balance."""
|
||||
|
||||
monthly_credits_remaining: Optional[float] = None
|
||||
monthly_api_credits_remaining_monetary_value: Optional[float] = None
|
||||
|
||||
pre_pay_cash_remaining: Optional[float] = None
|
||||
|
||||
pre_pay_credits_remaining: Optional[float] = None
|
||||
stable_api_credits_remaining_monetary_value: Optional[float] = None
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
@ -16,6 +16,8 @@ class UpdateUser(BaseModel):
|
||||
|
||||
image: str
|
||||
|
||||
is_onboarded: Optional[bool] = None
|
||||
|
||||
last_name: Optional[str] = None
|
||||
|
||||
phone: str = ""
|
||||
|
@ -18,6 +18,8 @@ class User(BaseModel):
|
||||
|
||||
created_at: datetime.datetime
|
||||
|
||||
deletion_scheduled: bool = False
|
||||
|
||||
discord: Optional[str] = None
|
||||
|
||||
email: Optional[str] = None
|
||||
@ -32,6 +34,8 @@ class User(BaseModel):
|
||||
|
||||
image: str
|
||||
|
||||
is_onboarded: bool = False
|
||||
|
||||
is_service_account: bool = False
|
||||
|
||||
last_name: Optional[str] = None
|
||||
|
@ -75,6 +75,14 @@ class OptionMetricsResponse(BaseModel):
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionDebug(BaseModel):
|
||||
"""Return information about the connected instance"""
|
||||
|
||||
type: Literal["debug"] = "debug"
|
||||
|
||||
model_config = ConfigDict(protected_namespaces=())
|
||||
|
||||
|
||||
class OptionHeaders(BaseModel):
|
||||
"""Authentication header request."""
|
||||
|
||||
@ -94,6 +102,7 @@ WebSocketRequest = RootModel[
|
||||
OptionModelingCmdBatchReq,
|
||||
OptionPing,
|
||||
OptionMetricsResponse,
|
||||
OptionDebug,
|
||||
OptionHeaders,
|
||||
],
|
||||
Field(discriminator="type"),
|
||||
|
@ -2,6 +2,7 @@ from typing import List, Optional
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from ..models.api_endpoint import ApiEndpoint
|
||||
from ..models.modeling_app_share_links import ModelingAppShareLinks
|
||||
from ..models.modeling_app_subscription_tier_name import ModelingAppSubscriptionTierName
|
||||
from ..models.subscription_tier_feature import SubscriptionTierFeature
|
||||
@ -21,11 +22,17 @@ class ZooProductSubscription(BaseModel):
|
||||
|
||||
description: str
|
||||
|
||||
endpoints_included: Optional[List[ApiEndpoint]] = None
|
||||
|
||||
features: Optional[List[SubscriptionTierFeature]] = None
|
||||
|
||||
monthly_pay_as_you_go_api_credits: int = 0
|
||||
|
||||
monthly_pay_as_you_go_api_credits_monetary_value: float
|
||||
|
||||
name: ModelingAppSubscriptionTierName
|
||||
|
||||
pay_as_you_go_credits: float
|
||||
pay_as_you_go_api_credit_price: float = 0.0
|
||||
|
||||
price: SubscriptionTierPrice
|
||||
|
||||
|
@ -6,10 +6,10 @@ class ZooTool(str, Enum):
|
||||
|
||||
"""# The modeling app. """ # noqa: E501
|
||||
MODELING_APP = "modeling_app"
|
||||
"""# The Text-to-CAD UI. """ # noqa: E501
|
||||
TEXT_TO_CAD = "text_to_cad"
|
||||
"""# The Diff Chrome Extension. """ # noqa: E501
|
||||
DIFF_CHROME_EXTENSION = "diff_chrome_extension"
|
||||
"""# The Text-to-CAD UI. """ # noqa: E501
|
||||
TEXT_TO_CAD = "text_to_cad"
|
||||
|
||||
def __str__(self) -> str:
|
||||
return str(self.value)
|
||||
|
443
poetry.lock
generated
443
poetry.lock
generated
@ -84,14 +84,14 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "attrs"
|
||||
version = "25.2.0"
|
||||
version = "25.3.0"
|
||||
description = "Classes Without Boilerplate"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main", "dev"]
|
||||
files = [
|
||||
{file = "attrs-25.2.0-py3-none-any.whl", hash = "sha256:611344ff0a5fed735d86d7784610c84f8126b95e549bcad9ff61b4242f2d386b"},
|
||||
{file = "attrs-25.2.0.tar.gz", hash = "sha256:18a06db706db43ac232cce80443fcd9f2500702059ecf53489e3c5a3f417acaf"},
|
||||
{file = "attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3"},
|
||||
{file = "attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
@ -1423,20 +1423,21 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "pydantic"
|
||||
version = "2.10.6"
|
||||
version = "2.11.4"
|
||||
description = "Data validation using Python type hints"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584"},
|
||||
{file = "pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236"},
|
||||
{file = "pydantic-2.11.4-py3-none-any.whl", hash = "sha256:d9615eaa9ac5a063471da949c8fc16376a84afb5024688b3ff885693506764eb"},
|
||||
{file = "pydantic-2.11.4.tar.gz", hash = "sha256:32738d19d63a226a52eed76645a98ee07c1f410ee41d93b4afbfa85ed8111c2d"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
annotated-types = ">=0.6.0"
|
||||
pydantic-core = "2.27.2"
|
||||
pydantic-core = "2.33.2"
|
||||
typing-extensions = ">=4.12.2"
|
||||
typing-inspection = ">=0.4.0"
|
||||
|
||||
[package.extras]
|
||||
email = ["email-validator (>=2.0.0)"]
|
||||
@ -1449,112 +1450,111 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "pydantic-core"
|
||||
version = "2.27.2"
|
||||
version = "2.33.2"
|
||||
description = "Core functionality for Pydantic validation and serialization"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4"},
|
||||
{file = "pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8e10c99ef58cfdf2a66fc15d66b16c4a04f62bca39db589ae8cba08bc55331bc"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c19d1ea0673cd13cc2f872f6c9ab42acc4e4f492a7ca9d3795ce2b112dd7e15"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e68c4446fe0810e959cdff46ab0a41ce2f2c86d227d96dc3847af0ba7def306"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d9640b0059ff4f14d1f37321b94061c6db164fbe49b334b31643e0528d100d99"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:40d02e7d45c9f8af700f3452f329ead92da4c5f4317ca9b896de7ce7199ea459"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d81d2068e1c1228a565af076598f9e7451712700b673de8f502f0334f281387d"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:1a4207639fb02ec2dbb76227d7c751a20b1a6b4bc52850568e52260cae64ca3b"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:3de3ce3c9ddc8bbd88f6e0e304dea0e66d843ec9de1b0042b0911c1663ffd474"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:30c5f68ded0c36466acede341551106821043e9afaad516adfb6e8fa80a4e6a6"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc"},
|
||||
{file = "pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9e0c8cfefa0ef83b4da9588448b6d8d2a2bf1a53c3f1ae5fca39eb3061e2f0b0"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:83097677b8e3bd7eaa6775720ec8e0405f1575015a463285a92bfdfe254529ef"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:172fce187655fece0c90d90a678424b013f8fbb0ca8b036ac266749c09438cb7"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:519f29f5213271eeeeb3093f662ba2fd512b91c5f188f3bb7b27bc5973816934"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:05e3a55d124407fffba0dd6b0c0cd056d10e983ceb4e5dbd10dda135c31071d6"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c3ed807c7b91de05e63930188f19e921d1fe90de6b4f5cd43ee7fcc3525cb8c"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fb4aadc0b9a0c063206846d603b92030eb6f03069151a625667f982887153e2"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:28ccb213807e037460326424ceb8b5245acb88f32f3d2777427476e1b32c48c4"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:de3cd1899e2c279b140adde9357c4495ed9d47131b4a4eaff9052f23398076b3"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:220f892729375e2d736b97d0e51466252ad84c51857d4d15f5e9692f9ef12be4"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a0fcd29cd6b4e74fe8ddd2c90330fd8edf2e30cb52acda47f06dd615ae72da57"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9"},
|
||||
{file = "pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7d14bd329640e63852364c306f4d23eb744e0f8193148d4044dd3dacdaacbd8b"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:82f91663004eb8ed30ff478d77c4d1179b3563df6cdb15c0817cd1cdaf34d154"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71b24c7d61131bb83df10cc7e687433609963a944ccf45190cfc21e0887b08c9"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa8e459d4954f608fa26116118bb67f56b93b209c39b008277ace29937453dc9"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce8918cbebc8da707ba805b7fd0b382816858728ae7fe19a942080c24e5b7cd1"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eda3f5c2a021bbc5d976107bb302e0131351c2ba54343f8a496dc8783d3d3a6a"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bd8086fa684c4775c27f03f062cbb9eaa6e17f064307e86b21b9e0abc9c0f02e"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8d9b3388db186ba0c099a6d20f0604a44eabdeef1777ddd94786cdae158729e4"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7a66efda2387de898c8f38c0cf7f14fca0b51a8ef0b24bfea5849f1b3c95af27"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:18a101c168e4e092ab40dbc2503bdc0f62010e95d292b27827871dc85450d7ee"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ba5dd002f88b78a4215ed2f8ddbdf85e8513382820ba15ad5ad8955ce0ca19a1"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-win32.whl", hash = "sha256:1ebaf1d0481914d004a573394f4be3a7616334be70261007e47c2a6fe7e50130"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-win_amd64.whl", hash = "sha256:953101387ecf2f5652883208769a79e48db18c6df442568a0b5ccd8c2723abee"},
|
||||
{file = "pydantic_core-2.27.2-cp313-cp313-win_arm64.whl", hash = "sha256:ac4dbfd1691affb8f48c2c13241a2e3b60ff23247cbcf981759c768b6633cf8b"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d3e8d504bdd3f10835468f29008d72fc8359d95c9c415ce6e767203db6127506"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:521eb9b7f036c9b6187f0b47318ab0d7ca14bd87f776240b90b21c1f4f149320"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85210c4d99a0114f5a9481b44560d7d1e35e32cc5634c656bc48e590b669b145"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d716e2e30c6f140d7560ef1538953a5cd1a87264c737643d481f2779fc247fe1"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f66d89ba397d92f840f8654756196d93804278457b5fbede59598a1f9f90b228"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:669e193c1c576a58f132e3158f9dfa9662969edb1a250c54d8fa52590045f046"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdbe7629b996647b99c01b37f11170a57ae675375b14b8c13b8518b8320ced5"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d262606bf386a5ba0b0af3b97f37c83d7011439e3dc1a9298f21efb292e42f1a"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cabb9bcb7e0d97f74df8646f34fc76fbf793b7f6dc2438517d7a9e50eee4f14d"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:d2d63f1215638d28221f664596b1ccb3944f6e25dd18cd3b86b0a4c408d5ebb9"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bca101c00bff0adb45a833f8451b9105d9df18accb8743b08107d7ada14bd7da"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-win32.whl", hash = "sha256:f6f8e111843bbb0dee4cb6594cdc73e79b3329b526037ec242a3e49012495b3b"},
|
||||
{file = "pydantic_core-2.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:fd1aea04935a508f62e0d0ef1f5ae968774a32afc306fb8545e06f5ff5cdf3ad"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c10eb4f1659290b523af58fa7cffb452a61ad6ae5613404519aee4bfbf1df993"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef592d4bad47296fb11f96cd7dc898b92e795032b4894dfb4076cfccd43a9308"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c61709a844acc6bf0b7dce7daae75195a10aac96a596ea1b776996414791ede4"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c5f762659e47fdb7b16956c71598292f60a03aa92f8b6351504359dbdba6cf"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c9775e339e42e79ec99c441d9730fccf07414af63eac2f0e48e08fd38a64d76"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57762139821c31847cfb2df63c12f725788bd9f04bc2fb392790959b8f70f118"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d1e85068e818c73e048fe28cfc769040bb1f475524f4745a5dc621f75ac7630"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:097830ed52fd9e427942ff3b9bc17fab52913b2f50f2880dc4a5611446606a54"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:044a50963a614ecfae59bb1eaf7ea7efc4bc62f49ed594e18fa1e5d953c40e9f"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:4e0b4220ba5b40d727c7f879eac379b822eee5d8fff418e9d3381ee45b3b0362"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5e4f4bb20d75e9325cc9696c6802657b58bc1dbbe3022f32cc2b2b632c3fbb96"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-win32.whl", hash = "sha256:cca63613e90d001b9f2f9a9ceb276c308bfa2a43fafb75c8031c4f66039e8c6e"},
|
||||
{file = "pydantic_core-2.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:77d1bca19b0f7021b3a982e6f903dcd5b2b06076def36a652e3907f596e29f67"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9"},
|
||||
{file = "pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151"},
|
||||
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c33939a82924da9ed65dab5a65d427205a73181d8098e79b6b426bdf8ad4e656"},
|
||||
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:00bad2484fa6bda1e216e7345a798bd37c68fb2d97558edd584942aa41b7d278"},
|
||||
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817e2b40aba42bac6f457498dacabc568c3b7a986fc9ba7c8d9d260b71485fb"},
|
||||
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:251136cdad0cb722e93732cb45ca5299fb56e1344a833640bf93b2803f8d1bfd"},
|
||||
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d2088237af596f0a524d3afc39ab3b036e8adb054ee57cbb1dcf8e09da5b29cc"},
|
||||
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d4041c0b966a84b4ae7a09832eb691a35aec90910cd2dbe7a208de59be77965b"},
|
||||
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:8083d4e875ebe0b864ffef72a4304827015cff328a1be6e22cc850753bfb122b"},
|
||||
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f141ee28a0ad2123b6611b6ceff018039df17f32ada8b534e6aa039545a3efb2"},
|
||||
{file = "pydantic_core-2.27.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7d0c8399fcc1848491f00e0314bd59fb34a9c008761bcb422a057670c3f65e35"},
|
||||
{file = "pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2b3d326aaef0c0399d9afffeb6367d5e26ddc24d351dbc9c636840ac355dc5d8"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e5b2671f05ba48b94cb90ce55d8bdcaaedb8ba00cc5359f6810fc918713983d"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0069c9acc3f3981b9ff4cdfaf088e98d83440a4c7ea1bc07460af3d4dc22e72d"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d53b22f2032c42eaaf025f7c40c2e3b94568ae077a606f006d206a463bc69572"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0405262705a123b7ce9f0b92f123334d67b70fd1f20a9372b907ce1080c7ba02"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b25d91e288e2c4e0662b8038a28c6a07eaac3e196cfc4ff69de4ea3db992a1b"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bdfe4b3789761f3bcb4b1ddf33355a71079858958e3a552f16d5af19768fef2"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efec8db3266b76ef9607c2c4c419bdb06bf335ae433b80816089ea7585816f6a"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:031c57d67ca86902726e0fae2214ce6770bbe2f710dc33063187a68744a5ecac"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:f8de619080e944347f5f20de29a975c2d815d9ddd8be9b9b7268e2e3ef68605a"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:73662edf539e72a9440129f231ed3757faab89630d291b784ca99237fb94db2b"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-win32.whl", hash = "sha256:0a39979dcbb70998b0e505fb1556a1d550a0781463ce84ebf915ba293ccb7e22"},
|
||||
{file = "pydantic_core-2.33.2-cp310-cp310-win_amd64.whl", hash = "sha256:b0379a2b24882fef529ec3b4987cb5d003b9cda32256024e6fe1586ac45fc640"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab"},
|
||||
{file = "pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2"},
|
||||
{file = "pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5"},
|
||||
{file = "pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a2b911a5b90e0374d03813674bf0a5fbbb7741570dcd4b4e85a2e48d17def29d"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6fa6dfc3e4d1f734a34710f391ae822e0a8eb8559a85c6979e14e65ee6ba2954"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c54c939ee22dc8e2d545da79fc5381f1c020d6d3141d3bd747eab59164dc89fb"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:53a57d2ed685940a504248187d5685e49eb5eef0f696853647bf37c418c538f7"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09fb9dd6571aacd023fe6aaca316bd01cf60ab27240d7eb39ebd66a3a15293b4"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e6116757f7959a712db11f3e9c0a99ade00a5bbedae83cb801985aa154f071b"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d55ab81c57b8ff8548c3e4947f119551253f4e3787a7bbc0b6b3ca47498a9d3"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c20c462aa4434b33a2661701b861604913f912254e441ab8d78d30485736115a"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44857c3227d3fb5e753d5fe4a3420d6376fa594b07b621e220cd93703fe21782"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:eb9b459ca4df0e5c87deb59d37377461a538852765293f9e6ee834f0435a93b9"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9fcd347d2cc5c23b06de6d3b7b8275be558a0c90549495c699e379a80bf8379e"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-win32.whl", hash = "sha256:83aa99b1285bc8f038941ddf598501a86f1536789740991d7d8756e34f1e74d9"},
|
||||
{file = "pydantic_core-2.33.2-cp39-cp39-win_amd64.whl", hash = "sha256:f481959862f57f29601ccced557cc2e817bce7533ab8e01a797a48b49c9692b3"},
|
||||
{file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5c4aa4e82353f65e548c476b37e64189783aa5384903bfea4f41580f255fddfa"},
|
||||
{file = "pydantic_core-2.33.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d946c8bf0d5c24bf4fe333af284c59a19358aa3ec18cb3dc4370080da1e8ad29"},
|
||||
{file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:87b31b6846e361ef83fedb187bb5b4372d0da3f7e28d85415efa92d6125d6e6d"},
|
||||
{file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa9d91b338f2df0508606f7009fde642391425189bba6d8c653afd80fd6bb64e"},
|
||||
{file = "pydantic_core-2.33.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2058a32994f1fde4ca0480ab9d1e75a0e8c87c22b53a3ae66554f9af78f2fe8c"},
|
||||
{file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:0e03262ab796d986f978f79c943fc5f620381be7287148b8010b4097f79a39ec"},
|
||||
{file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1a8695a8d00c73e50bff9dfda4d540b7dee29ff9b8053e38380426a85ef10052"},
|
||||
{file = "pydantic_core-2.33.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:fa754d1850735a0b0e03bcffd9d4b4343eb417e47196e4485d9cca326073a42c"},
|
||||
{file = "pydantic_core-2.33.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a11c8d26a50bfab49002947d3d237abe4d9e4b5bdc8846a63537b6488e197808"},
|
||||
{file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8"},
|
||||
{file = "pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593"},
|
||||
{file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612"},
|
||||
{file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7"},
|
||||
{file = "pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e"},
|
||||
{file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8"},
|
||||
{file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf"},
|
||||
{file = "pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb"},
|
||||
{file = "pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1"},
|
||||
{file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:87acbfcf8e90ca885206e98359d7dca4bcbb35abdc0ff66672a293e1d7a19101"},
|
||||
{file = "pydantic_core-2.33.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:7f92c15cd1e97d4b12acd1cc9004fa092578acfa57b67ad5e43a197175d01a64"},
|
||||
{file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3f26877a748dc4251cfcfda9dfb5f13fcb034f5308388066bcfe9031b63ae7d"},
|
||||
{file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dac89aea9af8cd672fa7b510e7b8c33b0bba9a43186680550ccf23020f32d535"},
|
||||
{file = "pydantic_core-2.33.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:970919794d126ba8645f3837ab6046fb4e72bbc057b3709144066204c19a455d"},
|
||||
{file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:3eb3fe62804e8f859c49ed20a8451342de53ed764150cb14ca71357c765dc2a6"},
|
||||
{file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:3abcd9392a36025e3bd55f9bd38d908bd17962cc49bc6da8e7e96285336e2bca"},
|
||||
{file = "pydantic_core-2.33.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3a1c81334778f9e3af2f8aeb7a960736e5cab1dfebfb26aabca09afd2906c039"},
|
||||
{file = "pydantic_core-2.33.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2807668ba86cb38c6817ad9bc66215ab8584d1d304030ce4f0887336f28a5e27"},
|
||||
{file = "pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -1567,14 +1567,14 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "pydantic-extra-types"
|
||||
version = "2.10.3"
|
||||
version = "2.10.4"
|
||||
description = "Extra Pydantic types."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "pydantic_extra_types-2.10.3-py3-none-any.whl", hash = "sha256:e8b372752b49019cd8249cc192c62a820d8019f5382a8789d0f887338a59c0f3"},
|
||||
{file = "pydantic_extra_types-2.10.3.tar.gz", hash = "sha256:dcc0a7b90ac9ef1b58876c9b8fdede17fbdde15420de9d571a9fccde2ae175bb"},
|
||||
{file = "pydantic_extra_types-2.10.4-py3-none-any.whl", hash = "sha256:ce064595af3cab05e39ae062752432dcd0362ff80f7e695b61a3493a4d842db7"},
|
||||
{file = "pydantic_extra_types-2.10.4.tar.gz", hash = "sha256:bf8236a63d061eb3ecb1b2afa78ba0f97e3f67aa11dbbff56ec90491e8772edc"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -1582,9 +1582,9 @@ pydantic = ">=2.5.2"
|
||||
typing-extensions = "*"
|
||||
|
||||
[package.extras]
|
||||
all = ["pendulum (>=3.0.0,<4.0.0)", "phonenumbers (>=8,<9)", "pycountry (>=23)", "pymongo (>=4.0.0,<5.0.0)", "python-ulid (>=1,<2) ; python_version < \"3.9\"", "python-ulid (>=1,<4) ; python_version >= \"3.9\"", "pytz (>=2024.1)", "semver (>=3.0.2)", "semver (>=3.0.2,<3.1.0)", "tzdata (>=2024.1)"]
|
||||
all = ["pendulum (>=3.0.0,<4.0.0)", "phonenumbers (>=8,<10)", "pycountry (>=23)", "pymongo (>=4.0.0,<5.0.0)", "python-ulid (>=1,<2) ; python_version < \"3.9\"", "python-ulid (>=1,<4) ; python_version >= \"3.9\"", "pytz (>=2024.1)", "semver (>=3.0.2)", "semver (>=3.0.2,<3.1.0)", "tzdata (>=2024.1)"]
|
||||
pendulum = ["pendulum (>=3.0.0,<4.0.0)"]
|
||||
phonenumbers = ["phonenumbers (>=8,<9)"]
|
||||
phonenumbers = ["phonenumbers (>=8,<10)"]
|
||||
pycountry = ["pycountry (>=23)"]
|
||||
python-ulid = ["python-ulid (>=1,<2) ; python_version < \"3.9\"", "python-ulid (>=1,<4) ; python_version >= \"3.9\""]
|
||||
semver = ["semver (>=3.0.2)"]
|
||||
@ -1635,69 +1635,69 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "pymongo"
|
||||
version = "4.11.2"
|
||||
version = "4.12.1"
|
||||
description = "Python driver for MongoDB <http://www.mongodb.org>"
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "pymongo-4.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2a5184fd5ff4d96eb7758316646c9cc47ca8b8a8125853a537fe7a47ae50fe51"},
|
||||
{file = "pymongo-4.11.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:979cc5ea601f1c1c33824bd4550ab4aa71b367cf5206697cc915840cc495dd73"},
|
||||
{file = "pymongo-4.11.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b08c83538635c04694a22a5b6bf6b8156a3c9bc35bcdfb12de157ad1f0fc4d41"},
|
||||
{file = "pymongo-4.11.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8ebb30e04c362576351fb34b1360b3fcfa6e2227a4bafa9bab2acba9c705239d"},
|
||||
{file = "pymongo-4.11.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4fca5a81546ab91b7ad0fbab754a6932ffc3240fa8ab06b238a3cb97e1395b2"},
|
||||
{file = "pymongo-4.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5848c7180103a7d9bacb32ddf41cd4ec2bfac35f94eaef77d323c8cc8c2ea665"},
|
||||
{file = "pymongo-4.11.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81273ed1faf58e89c9e0f6290c8026aa31d8d9e45ea8bf0d96713e0433fd1764"},
|
||||
{file = "pymongo-4.11.2-cp310-cp310-win32.whl", hash = "sha256:842de0a38ac2579e1c640564e36749c3b596095e7c8701384a70ed1acf16632b"},
|
||||
{file = "pymongo-4.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:1d679e099d15dac7fd25513dd91032869e291abf2bf6fac33494fc973b0e2346"},
|
||||
{file = "pymongo-4.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c87ad59bbc88bc41a0396ee87f2d0ad45d23db5649fd0ee2eff6fbc35c046db0"},
|
||||
{file = "pymongo-4.11.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ad13aee24d77aef19606eff569bea18124be097a64767ab631e7980f4b3a0a74"},
|
||||
{file = "pymongo-4.11.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9ace309794cc5ad5be94b873ad17e85dda09c3bb54c150aa71e9c03447d6763"},
|
||||
{file = "pymongo-4.11.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec7c1cfa6dc290f8d7bd85a6ab1e942a2fac4671b2d8c67437fc7c33b2d4e8b4"},
|
||||
{file = "pymongo-4.11.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0c6dfa545205547fb9205243a7327de02141c17cc6910544f2805b07ad45a96"},
|
||||
{file = "pymongo-4.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cedc2e38e0186676f96e1d76f40aa2cc016f392ed71f0649a67fd2520dcb35b"},
|
||||
{file = "pymongo-4.11.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:74ebb54f450e557e6f0e950790bab9c9f190243077262e72085ff8feff17a10f"},
|
||||
{file = "pymongo-4.11.2-cp311-cp311-win32.whl", hash = "sha256:ef32b5622dcf7cac2f81af5e14ce9989802bf19b691adb8ad00484e4fa9391c6"},
|
||||
{file = "pymongo-4.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:ab4c1dd1970e34d37c8ab22a2c28578cfe694347997d3692b8440541f4798d85"},
|
||||
{file = "pymongo-4.11.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9955ddeffa7b236a985ed9c9ab87ca6c98eb02d7bd5034960f385fbfbdb54a0"},
|
||||
{file = "pymongo-4.11.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b94a9c22b31c158d254ba74ad41f928b0c3a208caac8d1436ddff711459b3cad"},
|
||||
{file = "pymongo-4.11.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05014366bea8b6e403591f81f9ef03871bace4802dc7afe7a066836b2f64e50"},
|
||||
{file = "pymongo-4.11.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bfbfabc46b1bb9253a3916e3c5c5112a0799d2b82bac789528acc579d7294508"},
|
||||
{file = "pymongo-4.11.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7bb3de24ec209c44b8b70196252f4294bbf61095747153b0deab358c7085764b"},
|
||||
{file = "pymongo-4.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e75c88f2a765005a3a93fb2367d11451efc90c3a288ade84c247621e3044ff64"},
|
||||
{file = "pymongo-4.11.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13a395554584a50dec350f69df0dc240be11d2b59399f1371311d07bb18133b5"},
|
||||
{file = "pymongo-4.11.2-cp312-cp312-win32.whl", hash = "sha256:d563d16a693c6e38180a54e2a07cb41111422e99267e46304cd6d616a3759d68"},
|
||||
{file = "pymongo-4.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:9609849dfd00f2c2e3d17403cdce1a0d81494dc5a4d602d6584a0326be0d46c9"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:587328d77d03d380342290d6494df6e7becca25c0621c3ad0be41e3ae751540d"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:57474d83511292e06f2da585fd3a6cb013d1cba6173df30b3658efb46f74d579"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29fc4707d5f3918c6ee39250439ff41a70d96dc91ae5bfbc1a74bc204775cb82"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0734940f9f347904796a98481fb4100859f121017e68b756e7426b66d8b2e176"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:63239e2466d8324564cb4725c12fdd2be0ddfa7d250b4d0e41a47cd269c4cc1c"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:164865b78bd9e0ec6fdbe2ee58fc1a33666f32f8c455af3c9897c5c58c7b3d00"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbbc3ba041cf2e3f1f4eac293af15ce91cfbac68540f6b3733b834ad768aa319"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313-win32.whl", hash = "sha256:5da59332ec88ea662c4a9a99f84b322ed6b9d2999bfb947e186936ccae3941be"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313-win_amd64.whl", hash = "sha256:a4ba602980f43aa9998b0b8e77fd907cec9c7a845c385dc4e08a8b5716d2a85f"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:77c7edf2dc7f0e46a66f440a0d291ae76533a2ead308d176681745b334d714a9"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7f98a4493a221ee5330dad1721181731f122b7492caac7f56cf7d0a695c88ee2"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f28d42f9f6d8a5ae05a62401a9cb7c44c5d448dc58299a0ce657084d070ea5f6"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5a1cfff63667179d4f165124af5843cfd865bc1e774a2bd76fc56592c5dfe5fa"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c012d44b841320148095b59e246cc0c8891f3ca125dcfa3cc9d89dc1573948b"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3410b5ee877430a99ed29b0e2bad8827015d313bbef19dbdba4f470049258d1"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36f9a3276dfb28b526eb5ca9511b627788cea6c4c8783a0dc609be1999b3506e"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313t-win32.whl", hash = "sha256:e04a102ccb4c9f5a6b06108aa5fc26bfe77c18747bf5b0fbd5f4a3a4298ddb53"},
|
||||
{file = "pymongo-4.11.2-cp313-cp313t-win_amd64.whl", hash = "sha256:54e24645ceeddaa3224909f073e2695ff3e5c393a82c1e16cd46236d2681651f"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8402f5d09540f4a0542624245009f3aec8a9c7d2b7c1a09d6d399a64f6000d5e"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6e26ffb4c05b9abdd9d063020c39dfeef6d6fc79945a606ecd35add528e86bbe"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9486db58c8d8048b59baac821885d91316a7219a97da13122142fdad1de916c0"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:830eeeb7536b901c40aa20c913d431c1d9d10711ee01692d6fb9e4aa891e8444"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fea45642c3289304437dd0f459aee47b9dff994f8fff990dd3fd723c0f22caf1"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f01c5d7634db67b4e386735edcb7419041ddc3cdaa95dbdb0bbe19fd8f08dda"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db32510aba8968b62531135ff86c689075e3c6d60636636287ff060469226d07"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a3572eb86d55ddbb20134f6c5c2af5aeb05120188ca907596561ffeaa4c2644"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:80b5dc9a8d99d3891cff2664ad21e11bd4d9448a2dd00509bb9c057be31d0a6a"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-win32.whl", hash = "sha256:3481ece566991a796a63bd5ffc3822cc974554485e5790653369e1fe96998b41"},
|
||||
{file = "pymongo-4.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:84643c86a41bc254466be3be0d85e7bc3f4c9ceb4eca44ee7ac751b12fec4785"},
|
||||
{file = "pymongo-4.11.2.tar.gz", hash = "sha256:d0ee3e0275f67bddcd83b2263818b7c4ae7af1ecafebe7eb7fd16389457ec210"},
|
||||
{file = "pymongo-4.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1897c64a11e19aae4e85126441f319c3bf3fb7b60d122f51528cab2b95caaad3"},
|
||||
{file = "pymongo-4.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0ba42b4f2046595f64c492ef73c92ac78c502db59024c9be0113d0a33ed60c15"},
|
||||
{file = "pymongo-4.12.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:777800dc731ea7713635a44dcfb93d88eb2be4b31883feb3238afce5d32ef6d5"},
|
||||
{file = "pymongo-4.12.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:670bb6c9163f2623d8e3c42ff029dc89d2e8bf41feeeea4c11a8a21f9a9b0df7"},
|
||||
{file = "pymongo-4.12.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c9d447042433b3574df8d7d1b3bb9b1f1277d019534b29a39fd92670ab72d4e"},
|
||||
{file = "pymongo-4.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0c8dbb6a10753cbbbcb3e8ab723f87cb520de855e667a32dd2889e73323e82f"},
|
||||
{file = "pymongo-4.12.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bd0cc14726baa07081abe8ecda309a1049992b84b37d3c50c5fbd7f935b8925"},
|
||||
{file = "pymongo-4.12.1-cp310-cp310-win32.whl", hash = "sha256:e75c42dedc5f59a985976f8bc2e2f0b90c44ce40fa9a2e99b147ec7e64c735a2"},
|
||||
{file = "pymongo-4.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:13953f8bbdbfee00530ac9f5c09a2474b81cd76648925012b5cfd2727293bd17"},
|
||||
{file = "pymongo-4.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72b45f7e72b2db4cd7abd40c38c57ed4105d7be0d4dce85a6b77a730e8a613f7"},
|
||||
{file = "pymongo-4.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f3104bd97642f508f70a83af256b9d88e9a7319e8048c27f1c8ca6572ad7b7f"},
|
||||
{file = "pymongo-4.12.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730a19d96ef902ee8d8f9e84738142d355096becb677ec82489dc9ad8e54d8e9"},
|
||||
{file = "pymongo-4.12.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:40dd2b771387e3ac297399b7b4d9a4bfffbaabba6f17c79996e8462cde3e7c30"},
|
||||
{file = "pymongo-4.12.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b5e5968da22f5534fc678dad58d3e9f7305bf53abc94968c800335b1f511ab8b"},
|
||||
{file = "pymongo-4.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc5fad32274a1de9dfe13d06da169cf2a405a98f049595aafda13af02921853e"},
|
||||
{file = "pymongo-4.12.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:808168f5f4398c0057d15f21b1453de323157447915179c7afedf4334d2a1815"},
|
||||
{file = "pymongo-4.12.1-cp311-cp311-win32.whl", hash = "sha256:ee69dba3e023e0fa1b547b4f7a41182618f2e612df09ff954bba32de0111a596"},
|
||||
{file = "pymongo-4.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:40e2812e5b546f7ceef4abf82c31d4790d9878f2a0d43a67a2645de3eb06bdca"},
|
||||
{file = "pymongo-4.12.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a7b771aa2f0854ddf7861e8ce2365f29df9159393543d047e43d8475bc4b8813"},
|
||||
{file = "pymongo-4.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:34fd8681b6fa6e1025dd1000004f6b81cbf1961f145b8c58bd15e3957976068d"},
|
||||
{file = "pymongo-4.12.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:981e19b8f1040247dee5f7879e45f640f7e21a4d87eabb19283ce5a2927dd2e7"},
|
||||
{file = "pymongo-4.12.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c9a487dc1fe92736987a156325d3d9c66cbde6eac658b2875f5f222b6d82edca"},
|
||||
{file = "pymongo-4.12.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1525051c13984365c4a9b88ee2d63009fae277921bc89a0d323b52c51f91cbac"},
|
||||
{file = "pymongo-4.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ad689e0e4f364809084f9e5888b2dcd6f0431b682a1c68f3fdf241e20e14475"},
|
||||
{file = "pymongo-4.12.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8f9b18abca210c2917041ab2a380c12f6ddd2810844f1d64afb39caf8a15425e"},
|
||||
{file = "pymongo-4.12.1-cp312-cp312-win32.whl", hash = "sha256:d9d90fec041c6d695a639c26ca83577aa74383f5e3744fd7931537b208d5a1b5"},
|
||||
{file = "pymongo-4.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:d004b13e4f03d73a3ad38505ba84b61a2c8ba0a304f02fe1b27bfc986c244192"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:90de2b060d69c22658ada162a5380a0f88cb8c0149023241b9e379732bd36152"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:edf4e05331ac875d3b27b4654b74d81e44607af4aa7d6bcd4a31801ca164e6fd"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fa7a817c9afb7b8775d98c469ddb3fe9c17daf53225394c1a74893cf45d3ade9"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f9d142ca531694e9324b3c9ba86c0e905c5f857599c4018a386c4dc02ca490fa"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5d4c0461f5cd84d9fe87d5a84b1bc16371c4dd64d56dcfe5e69b15c0545a5ac"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:43afd2f39182731ac9fb81bbc9439d539e4bd2eda72cdee829d2fa906a1c4d37"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:827ac668c003da7b175b8e5f521850e2c182b4638a3dec96d97f0866d5508a1e"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313-win32.whl", hash = "sha256:7c2269b37f034124a245eaeb34ce031cee64610437bd597d4a883304babda3cd"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313-win_amd64.whl", hash = "sha256:3b28ecd1305b89089be14f137ffbdf98a3b9f5c8dbbb2be4dec084f2813fbd5f"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f27b22a8215caff68bdf46b5b61ccd843a68334f2aa4658e8d5ecb5d3fbebb3b"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e9d23a3c290cf7409515466a7f11069b70e38ea2b786bbd7437bdc766c9e176"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efeb430f7ca8649a6544a50caefead343d1fd096d04b6b6a002c6ce81148a85c"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a34e4a08bbcff56fdee86846afbc9ce751de95706ca189463e01bf5de3dd9927"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b063344e0282537f05dbb11147591cbf58fc09211e24fc374749e343f880910a"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3f7941e01b3e5d4bfb3b4711425e809df8c471b92d1da8d6fab92c7e334a4cb"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b41235014031739f32be37ff13992f51091dae9a5189d3bcc22a5bf81fd90dae"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313t-win32.whl", hash = "sha256:9a1f07fe83a8a34651257179bd38d0f87bd9d90577fcca23364145c5e8ba1bc0"},
|
||||
{file = "pymongo-4.12.1-cp313-cp313t-win_amd64.whl", hash = "sha256:46d86cf91ee9609d0713242a1d99fa9e9c60b4315e1a067b9a9e769bedae629d"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0517c363f31f770cfa450df7d52a73340168bde71fac423b2b3eea0336468f3e"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:07c6e9ade249fa811fa344467889f61221eb533b8465de7e1c467cca03b38a1e"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e95211e335a2a762fd9dfb084579e6ebaec59cd2c6848d7a898af3342ef63f06"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4285d7ffedc7adc0531949e66d5f884801c522e7a30cdfcf80e2727b9dbee8c"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:71edcd51265e69d73d10f032164983701d3efa768c946a2736ec4d40793bf63e"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3e90b2114e876c0a2864f729f32b025114920c6f00898a6d5ef41dba98d8690"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5db1a20d0223af2bbbbfd5f8b7f1ff0f08628c245096bad12ddeee86db226925"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:457eed26aa307c8d92edaf9be2ba9551b54af72bc7cd555706644374f155331c"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:27806c4310203a19af868f4aedd09615ffa613d4e13570954df10193b29f7fd3"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-win32.whl", hash = "sha256:3dc3c26f52214119b86decdd8ef4595610cfbff67401f47be14eb433afb1d838"},
|
||||
{file = "pymongo-4.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:7af466b5dc2c6dcdce78677b4d60886c48c70810c3ebe355f210a0f9ededb156"},
|
||||
{file = "pymongo-4.12.1.tar.gz", hash = "sha256:8921bac7f98cccb593d76c4d8eaa1447e7d537ba9a2a202973e92372a05bd1eb"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -1706,7 +1706,7 @@ dnspython = ">=1.16.0,<3.0.0"
|
||||
[package.extras]
|
||||
aws = ["pymongo-auth-aws (>=1.1.0,<2.0.0)"]
|
||||
docs = ["furo (==2024.8.6)", "readthedocs-sphinx-search (>=0.3,<1.0)", "sphinx (>=5.3,<9)", "sphinx-autobuild (>=2020.9.1)", "sphinx-rtd-theme (>=2,<4)", "sphinxcontrib-shellcheck (>=1,<2)"]
|
||||
encryption = ["certifi ; os_name == \"nt\" or sys_platform == \"darwin\"", "pymongo-auth-aws (>=1.1.0,<2.0.0)", "pymongocrypt (>=1.12.0,<2.0.0)"]
|
||||
encryption = ["certifi ; os_name == \"nt\" or sys_platform == \"darwin\"", "pymongo-auth-aws (>=1.1.0,<2.0.0)", "pymongocrypt (>=1.13.0,<2.0.0)"]
|
||||
gssapi = ["pykerberos ; os_name != \"nt\"", "winkerberos (>=0.5.0) ; os_name == \"nt\""]
|
||||
ocsp = ["certifi ; os_name == \"nt\" or sys_platform == \"darwin\"", "cryptography (>=2.5)", "pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identity (>=18.1.0)"]
|
||||
snappy = ["python-snappy"]
|
||||
@ -1748,18 +1748,19 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "pytest-asyncio"
|
||||
version = "0.25.3"
|
||||
version = "0.26.0"
|
||||
description = "Pytest support for asyncio"
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "pytest_asyncio-0.25.3-py3-none-any.whl", hash = "sha256:9e89518e0f9bd08928f97a3482fdc4e244df17529460bc038291ccaf8f85c7c3"},
|
||||
{file = "pytest_asyncio-0.25.3.tar.gz", hash = "sha256:fc1da2cf9f125ada7e710b4ddad05518d4cee187ae9412e9ac9271003497f07a"},
|
||||
{file = "pytest_asyncio-0.26.0-py3-none-any.whl", hash = "sha256:7b51ed894f4fbea1340262bdae5135797ebbe21d8638978e35d31c6d19f72fb0"},
|
||||
{file = "pytest_asyncio-0.26.0.tar.gz", hash = "sha256:c4df2a697648241ff39e7f0e4a73050b03f123f760673956cf0d72a4990e312f"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
pytest = ">=8.2,<9"
|
||||
typing-extensions = {version = ">=4.12", markers = "python_version < \"3.10\""}
|
||||
|
||||
[package.extras]
|
||||
docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1)"]
|
||||
@ -1772,14 +1773,14 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "pytest-cov"
|
||||
version = "6.0.0"
|
||||
version = "6.1.1"
|
||||
description = "Pytest plugin for measuring coverage."
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "pytest-cov-6.0.0.tar.gz", hash = "sha256:fde0b595ca248bb8e2d76f020b465f3b107c9632e6a1d1705f17834c89dcadc0"},
|
||||
{file = "pytest_cov-6.0.0-py3-none-any.whl", hash = "sha256:eee6f1b9e61008bd34975a4d5bab25801eb31898b032dd55addc93e96fcaaa35"},
|
||||
{file = "pytest_cov-6.1.1-py3-none-any.whl", hash = "sha256:bddf29ed2d0ab6f4df17b4c55b0a657287db8684af9c42ea546b21b1041b3dde"},
|
||||
{file = "pytest_cov-6.1.1.tar.gz", hash = "sha256:46935f7aaefba760e716c2ebfbe1c216240b9592966e7da99ea8292d4d3e2a0a"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -2212,30 +2213,30 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "ruff"
|
||||
version = "0.9.10"
|
||||
version = "0.11.10"
|
||||
description = "An extremely fast Python linter and code formatter, written in Rust."
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "ruff-0.9.10-py3-none-linux_armv6l.whl", hash = "sha256:eb4d25532cfd9fe461acc83498361ec2e2252795b4f40b17e80692814329e42d"},
|
||||
{file = "ruff-0.9.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:188a6638dab1aa9bb6228a7302387b2c9954e455fb25d6b4470cb0641d16759d"},
|
||||
{file = "ruff-0.9.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5284dcac6b9dbc2fcb71fdfc26a217b2ca4ede6ccd57476f52a587451ebe450d"},
|
||||
{file = "ruff-0.9.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:47678f39fa2a3da62724851107f438c8229a3470f533894b5568a39b40029c0c"},
|
||||
{file = "ruff-0.9.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99713a6e2766b7a17147b309e8c915b32b07a25c9efd12ada79f217c9c778b3e"},
|
||||
{file = "ruff-0.9.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:524ee184d92f7c7304aa568e2db20f50c32d1d0caa235d8ddf10497566ea1a12"},
|
||||
{file = "ruff-0.9.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:df92aeac30af821f9acf819fc01b4afc3dfb829d2782884f8739fb52a8119a16"},
|
||||
{file = "ruff-0.9.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de42e4edc296f520bb84954eb992a07a0ec5a02fecb834498415908469854a52"},
|
||||
{file = "ruff-0.9.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d257f95b65806104b6b1ffca0ea53f4ef98454036df65b1eda3693534813ecd1"},
|
||||
{file = "ruff-0.9.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b60dec7201c0b10d6d11be00e8f2dbb6f40ef1828ee75ed739923799513db24c"},
|
||||
{file = "ruff-0.9.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:d838b60007da7a39c046fcdd317293d10b845001f38bcb55ba766c3875b01e43"},
|
||||
{file = "ruff-0.9.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ccaf903108b899beb8e09a63ffae5869057ab649c1e9231c05ae354ebc62066c"},
|
||||
{file = "ruff-0.9.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f9567d135265d46e59d62dc60c0bfad10e9a6822e231f5b24032dba5a55be6b5"},
|
||||
{file = "ruff-0.9.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5f202f0d93738c28a89f8ed9eaba01b7be339e5d8d642c994347eaa81c6d75b8"},
|
||||
{file = "ruff-0.9.10-py3-none-win32.whl", hash = "sha256:bfb834e87c916521ce46b1788fbb8484966e5113c02df216680102e9eb960029"},
|
||||
{file = "ruff-0.9.10-py3-none-win_amd64.whl", hash = "sha256:f2160eeef3031bf4b17df74e307d4c5fb689a6f3a26a2de3f7ef4044e3c484f1"},
|
||||
{file = "ruff-0.9.10-py3-none-win_arm64.whl", hash = "sha256:5fd804c0327a5e5ea26615550e706942f348b197d5475ff34c19733aee4b2e69"},
|
||||
{file = "ruff-0.9.10.tar.gz", hash = "sha256:9bacb735d7bada9cfb0f2c227d3658fc443d90a727b47f206fb33f52f3c0eac7"},
|
||||
{file = "ruff-0.11.10-py3-none-linux_armv6l.whl", hash = "sha256:859a7bfa7bc8888abbea31ef8a2b411714e6a80f0d173c2a82f9041ed6b50f58"},
|
||||
{file = "ruff-0.11.10-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:968220a57e09ea5e4fd48ed1c646419961a0570727c7e069842edd018ee8afed"},
|
||||
{file = "ruff-0.11.10-py3-none-macosx_11_0_arm64.whl", hash = "sha256:1067245bad978e7aa7b22f67113ecc6eb241dca0d9b696144256c3a879663bca"},
|
||||
{file = "ruff-0.11.10-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4854fd09c7aed5b1590e996a81aeff0c9ff51378b084eb5a0b9cd9518e6cff2"},
|
||||
{file = "ruff-0.11.10-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b4564e9f99168c0f9195a0fd5fa5928004b33b377137f978055e40008a082c5"},
|
||||
{file = "ruff-0.11.10-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b6a9cc5b62c03cc1fea0044ed8576379dbaf751d5503d718c973d5418483641"},
|
||||
{file = "ruff-0.11.10-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:607ecbb6f03e44c9e0a93aedacb17b4eb4f3563d00e8b474298a201622677947"},
|
||||
{file = "ruff-0.11.10-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7b3a522fa389402cd2137df9ddefe848f727250535c70dafa840badffb56b7a4"},
|
||||
{file = "ruff-0.11.10-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2f071b0deed7e9245d5820dac235cbdd4ef99d7b12ff04c330a241ad3534319f"},
|
||||
{file = "ruff-0.11.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a60e3a0a617eafba1f2e4186d827759d65348fa53708ca547e384db28406a0b"},
|
||||
{file = "ruff-0.11.10-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:da8ec977eaa4b7bf75470fb575bea2cb41a0e07c7ea9d5a0a97d13dbca697bf2"},
|
||||
{file = "ruff-0.11.10-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:ddf8967e08227d1bd95cc0851ef80d2ad9c7c0c5aab1eba31db49cf0a7b99523"},
|
||||
{file = "ruff-0.11.10-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5a94acf798a82db188f6f36575d80609072b032105d114b0f98661e1679c9125"},
|
||||
{file = "ruff-0.11.10-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:3afead355f1d16d95630df28d4ba17fb2cb9c8dfac8d21ced14984121f639bad"},
|
||||
{file = "ruff-0.11.10-py3-none-win32.whl", hash = "sha256:dc061a98d32a97211af7e7f3fa1d4ca2fcf919fb96c28f39551f35fc55bdbc19"},
|
||||
{file = "ruff-0.11.10-py3-none-win_amd64.whl", hash = "sha256:5cc725fbb4d25b0f185cb42df07ab6b76c4489b4bfb740a175f3a59c70e8a224"},
|
||||
{file = "ruff-0.11.10-py3-none-win_arm64.whl", hash = "sha256:ef69637b35fb8b210743926778d0e45e1bffa850a7c61e428c6b971549b5f5d1"},
|
||||
{file = "ruff-0.11.10.tar.gz", hash = "sha256:d522fb204b4959909ecac47da02830daec102eeb100fb50ea9554818d47a5fa6"},
|
||||
]
|
||||
|
||||
[package.source]
|
||||
@ -2613,18 +2614,22 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "sphinxext-opengraph"
|
||||
version = "0.9.1"
|
||||
version = "0.10.0"
|
||||
description = "Sphinx Extension to enable OGP support"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
python-versions = ">=3.9"
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "sphinxext-opengraph-0.9.1.tar.gz", hash = "sha256:dd2868a1e7c9497977fbbf44cc0844a42af39ca65fe1bb0272518af225d06fc5"},
|
||||
{file = "sphinxext_opengraph-0.9.1-py3-none-any.whl", hash = "sha256:b3b230cc6a5b5189139df937f0d9c7b23c7c204493b22646273687969dcb760e"},
|
||||
{file = "sphinxext_opengraph-0.10.0-py3-none-any.whl", hash = "sha256:8afd33f96a02d9506d9dc8f284840888ca8948482ac93015a68d88493df43712"},
|
||||
{file = "sphinxext_opengraph-0.10.0.tar.gz", hash = "sha256:5781149c1dfc306c3701661acdd02c512c2e6f21d2253487bf0b39639017fc24"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
sphinx = ">=4.0"
|
||||
Sphinx = ">=6.0"
|
||||
|
||||
[package.extras]
|
||||
rtd = ["furo (>=2024)", "sphinx (>=8.1.0,<8.2.0)", "sphinx-design"]
|
||||
social-cards = ["matplotlib (>=3)"]
|
||||
|
||||
[package.source]
|
||||
type = "legacy"
|
||||
@ -2765,14 +2770,14 @@ reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "types-python-dateutil"
|
||||
version = "2.9.0.20241206"
|
||||
version = "2.9.0.20250516"
|
||||
description = "Typing stubs for python-dateutil"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
python-versions = ">=3.9"
|
||||
groups = ["dev"]
|
||||
files = [
|
||||
{file = "types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53"},
|
||||
{file = "types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb"},
|
||||
{file = "types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93"},
|
||||
{file = "types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5"},
|
||||
]
|
||||
|
||||
[package.source]
|
||||
@ -2835,6 +2840,26 @@ type = "legacy"
|
||||
url = "https://pypi.org/simple"
|
||||
reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "typing-inspection"
|
||||
version = "0.4.0"
|
||||
description = "Runtime typing introspection tools"
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f"},
|
||||
{file = "typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
typing-extensions = ">=4.12.0"
|
||||
|
||||
[package.source]
|
||||
type = "legacy"
|
||||
url = "https://pypi.org/simple"
|
||||
reference = "pypi-public"
|
||||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "2.2.3"
|
||||
@ -2971,4 +2996,4 @@ reference = "pypi-public"
|
||||
[metadata]
|
||||
lock-version = "2.1"
|
||||
python-versions = ">=3.9,<4.0"
|
||||
content-hash = "8fe1757709d021659da230b1b6d4aba1fd79576ec7d44de1280d696d6c56862e"
|
||||
content-hash = "679e9384e1bf5fd33be0513fc15546c27a1e43510bef22bc3d0c9535e73635f1"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[tool.poetry]
|
||||
name = "kittycad"
|
||||
version = "0.7.6"
|
||||
version = "0.7.8"
|
||||
description = "A client library for accessing KittyCAD"
|
||||
|
||||
authors = []
|
||||
@ -35,15 +35,15 @@ openapi-spec-validator = "^0.7.1"
|
||||
prance = "^23.6.21"
|
||||
pyenchant = "^3.2.2"
|
||||
pytest = "^8.3.5"
|
||||
pytest-asyncio = "^0.25.3"
|
||||
pytest-cov = "^6.0.0"
|
||||
ruff = "^0.9.10"
|
||||
pytest-asyncio = "^0.26.0"
|
||||
pytest-cov = "^6.1.1"
|
||||
ruff = "^0.11.10"
|
||||
Sphinx = "^7.1.2"
|
||||
sphinx-autoapi = "^3.6.0"
|
||||
sphinx-autodoc-typehints = "^2.3.0"
|
||||
sphinxcontrib-spelling = "^8.0.0"
|
||||
sphinx-copybutton = "^0.5.2"
|
||||
sphinxext-opengraph = "^0.9.1"
|
||||
sphinxext-opengraph = "^0.10.0"
|
||||
sphinx-rtd-theme = "^3.0.2"
|
||||
toml = "^0.10.2"
|
||||
types-python-dateutil = "^2.9.0"
|
||||
|
Reference in New Issue
Block a user