diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index ca0a5ef4..ff4a2224 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,19 +2,20 @@ speakeasyVersion: 1.488.0 sources: Gusto-OAS: sourceNamespace: gusto-oas - sourceRevisionDigest: sha256:264db8f0d697d8cc4a19b7f26ec6de77e184b730e3960576d6b687669a9a5907 - sourceBlobDigest: sha256:16a04557fc981ac526449d2d5aa2b68a2b20136f59a5e60fe375ee8d39f2690c + sourceRevisionDigest: sha256:56267ffc83b356afb926f4f33e25129ca4cf536c3d3000b4039652f633edfca0 + sourceBlobDigest: sha256:a8e49c6e476c51ffcc73653a800deb3d3eca380083f2b4f9d227813c97a6197d tags: - latest + - speakeasy-sdk-regen-1739229111 - "2024-04-01" targets: gusto: source: Gusto-OAS sourceNamespace: gusto-oas - sourceRevisionDigest: sha256:264db8f0d697d8cc4a19b7f26ec6de77e184b730e3960576d6b687669a9a5907 - sourceBlobDigest: sha256:16a04557fc981ac526449d2d5aa2b68a2b20136f59a5e60fe375ee8d39f2690c + sourceRevisionDigest: sha256:56267ffc83b356afb926f4f33e25129ca4cf536c3d3000b4039652f633edfca0 + sourceBlobDigest: sha256:a8e49c6e476c51ffcc73653a800deb3d3eca380083f2b4f9d227813c97a6197d codeSamplesNamespace: gusto-oas-python-code-samples - codeSamplesRevisionDigest: sha256:fbd221b51b4511d9fe42c15694dec259a73e22297aaf214f017bcbc86fbd7031 + codeSamplesRevisionDigest: sha256:ef7126fa10348b852916fdaa2ef4c88243efe255b81d28d2f4e5ae9a4b1d6e61 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/gusto_embedded/.devcontainer/README.md b/gusto_embedded/.devcontainer/README.md index fee00202..836e43c1 100644 --- a/gusto_embedded/.devcontainer/README.md +++ b/gusto_embedded/.devcontainer/README.md @@ -1,4 +1,9 @@ +
+ +
+
+ > **Remember to shutdown a GitHub Codespace when it is not in use!** # Dev Containers Quick Start diff --git a/gusto_embedded/.speakeasy/gen.lock b/gusto_embedded/.speakeasy/gen.lock index 0e6dc930..656a16c6 100644 --- a/gusto_embedded/.speakeasy/gen.lock +++ b/gusto_embedded/.speakeasy/gen.lock @@ -1,12 +1,15 @@ lockVersion: 2.0.0 id: f70034eb-4870-4b8d-aeb4-4c71b6c1ec45 management: - docChecksum: 74ac5c3a594ac7b28ada47c9d8730e63 + docChecksum: eb643d6727733f900bdf394468313a87 docVersion: "2024-04-01" speakeasyVersion: 1.488.0 generationVersion: 2.506.0 - releaseVersion: 0.0.4 - configChecksum: 096eab96163d3932c4cce59ec7f4e13f + releaseVersion: 0.0.5 + configChecksum: b5b2b7ec27628d09bab5d0a84844a274 + repoURL: https://github.com/Gusto/gusto-python-client.git + repoSubDirectory: gusto_embedded + installationURL: https://github.com/Gusto/gusto-python-client.git#subdirectory=gusto_embedded features: python: additionalDependencies: 1.0.0 diff --git a/gusto_embedded/.speakeasy/gen.yaml b/gusto_embedded/.speakeasy/gen.yaml index 15f80d87..2a9a2828 100644 --- a/gusto_embedded/.speakeasy/gen.yaml +++ b/gusto_embedded/.speakeasy/gen.yaml @@ -16,7 +16,7 @@ generation: oAuth2ClientCredentialsEnabled: true oAuth2PasswordEnabled: true python: - version: 0.0.4 + version: 0.0.5 additionalDependencies: dev: {} main: {} diff --git a/gusto_embedded/README-PYPI.md b/gusto_embedded/README-PYPI.md new file mode 100644 index 00000000..7db72e86 --- /dev/null +++ b/gusto_embedded/README-PYPI.md @@ -0,0 +1,983 @@ +# gusto + +Developer-friendly & type-safe Python SDK specifically catered to leverage *gusto* API. + +
+ + + + +
+ + +

+> [!IMPORTANT] +> This SDK is not yet ready for production use. To complete setup please follow the steps outlined in your [workspace](https://app.speakeasy.com/org/gusto/ruby-sdk). Delete this section before > publishing to a package manager. + + +## Summary + +Gusto API: Welcome to Gusto's Embedded Payroll API documentation! + + + +## Table of Contents + +* [gusto](https://github.com/Gusto/gusto-python-client/blob/master/#gusto) + * [SDK Installation](https://github.com/Gusto/gusto-python-client/blob/master/#sdk-installation) + * [IDE Support](https://github.com/Gusto/gusto-python-client/blob/master/#ide-support) + * [SDK Example Usage](https://github.com/Gusto/gusto-python-client/blob/master/#sdk-example-usage) + * [Authentication](https://github.com/Gusto/gusto-python-client/blob/master/#authentication) + * [Available Resources and Operations](https://github.com/Gusto/gusto-python-client/blob/master/#available-resources-and-operations) + * [File uploads](https://github.com/Gusto/gusto-python-client/blob/master/#file-uploads) + * [Retries](https://github.com/Gusto/gusto-python-client/blob/master/#retries) + * [Error Handling](https://github.com/Gusto/gusto-python-client/blob/master/#error-handling) + * [Server Selection](https://github.com/Gusto/gusto-python-client/blob/master/#server-selection) + * [Custom HTTP Client](https://github.com/Gusto/gusto-python-client/blob/master/#custom-http-client) + * [Resource Management](https://github.com/Gusto/gusto-python-client/blob/master/#resource-management) + * [Debugging](https://github.com/Gusto/gusto-python-client/blob/master/#debugging) +* [Development](https://github.com/Gusto/gusto-python-client/blob/master/#development) + * [Maturity](https://github.com/Gusto/gusto-python-client/blob/master/#maturity) + * [Contributions](https://github.com/Gusto/gusto-python-client/blob/master/#contributions) + + + + +## SDK Installation + +> [!TIP] +> To finish publishing your SDK to PyPI you must [run your first generation action](https://www.speakeasy.com/docs/github-setup#step-by-step-guide). + + +> [!NOTE] +> **Python version upgrade policy** +> +> Once a Python version reaches its [official end of life date](https://devguide.python.org/versions/), a 3-month grace period is provided for users to upgrade. Following this grace period, the minimum python version supported in the SDK will be updated. + +The SDK can be installed with either *pip* or *poetry* package managers. + +### PIP + +*PIP* is the default package installer for Python, enabling easy installation and management of packages from PyPI via the command line. + +```bash +pip install git+https://github.com/Gusto/gusto-python-client.git#subdirectory=gusto_embedded +``` + +### Poetry + +*Poetry* is a modern tool that simplifies dependency management and package publishing by using a single `pyproject.toml` file to handle project metadata and dependencies. + +```bash +poetry add git+https://github.com/Gusto/gusto-python-client.git#subdirectory=gusto_embedded +``` + +### Shell and script usage with `uv` + +You can use this SDK in a Python shell with [uv](https://docs.astral.sh/uv/) and the `uvx` command that comes with it like so: + +```shell +uvx --from gusto python +``` + +It's also possible to write a standalone Python script without needing to set up a whole project like so: + +```python +#!/usr/bin/env -S uv run --script +# /// script +# requires-python = ">=3.9" +# dependencies = [ +# "gusto", +# ] +# /// + +from gusto import Gusto + +sdk = Gusto( + # SDK arguments +) + +# Rest of script here... +``` + +Once that is saved to a file, you can run it with `uv run script.py` where +`script.py` can be replaced with the actual file name. + + + +## IDE Support + +### PyCharm + +Generally, the SDK will work well with most IDEs out of the box. However, when using PyCharm, you can enjoy much better integration with Pydantic by installing an additional plugin. + +- [PyCharm Pydantic Plugin](https://docs.pydantic.dev/latest/integrations/pycharm/) + + + +## SDK Example Usage + +### Example + +```python +# Synchronous Example +from gusto import Gusto +import os + +with Gusto( + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), +) as g_client: + + res = g_client.introspection.get_v1_token_info() + + # Handle response + print(res) +``` + +
+ +The same SDK client can also be used to make asychronous requests by importing asyncio. +```python +# Asynchronous Example +import asyncio +from gusto import Gusto +import os + +async def main(): + async with Gusto( + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), + ) as g_client: + + res = await g_client.introspection.get_v1_token_info_async() + + # Handle response + print(res) + +asyncio.run(main()) +``` + + + +## Authentication + +### Per-Client Security Schemes + +This SDK supports the following security scheme globally: + +| Name | Type | Scheme | Environment Variable | +| --------------------- | ---- | ----------- | --------------------------- | +| `company_access_auth` | http | HTTP Bearer | `GUSTO_COMPANY_ACCESS_AUTH` | + +To authenticate with the API the `company_access_auth` parameter must be set when initializing the SDK client instance. For example: +```python +from gusto import Gusto +import os + +with Gusto( + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), +) as g_client: + + res = g_client.introspection.get_v1_token_info() + + # Handle response + print(res) + +``` + +### Per-Operation Security Schemes + +Some operations in this SDK require the security scheme to be specified at the request level. For example: +```python +import gusto +from gusto import Gusto +import os + +with Gusto() as g_client: + + res = g_client.companies.post_v1_partner_managed_companies(security=gusto.PostV1PartnerManagedCompaniesSecurity( + system_access_auth=os.getenv("GUSTO_SYSTEM_ACCESS_AUTH", ""), + ), user={ + "first_name": "Frank", + "last_name": "Ocean", + "email": "frank@example.com", + "phone": "2345558899", + }, company={ + "name": "Frank's Ocean, LLC", + "trade_name": "Frank’s Ocean", + "ein": "123456789", + "contractor_only": False, + }) + + # Handle response + print(res) + +``` + + + +## Available Resources and Operations + +
+Available methods + +### [ach_transactions](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/achtransactions/README.md) + +* [list](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/achtransactions/README.md#list) - Get all ACH transactions for a company + +### [bank_accounts](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/bankaccounts/README.md) + +* [post_v1_companies_company_id_bank_accounts](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/bankaccounts/README.md#post_v1_companies_company_id_bank_accounts) - Create a company bank account +* [get_v1_companies_company_id_bank_accounts](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/bankaccounts/README.md#get_v1_companies_company_id_bank_accounts) - Get all company bank accounts +* [put_v1_companies_company_id_bank_accounts_verify](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/bankaccounts/README.md#put_v1_companies_company_id_bank_accounts_verify) - Verify a company bank account +* [post_v1_plaid_processor_token](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/bankaccounts/README.md#post_v1_plaid_processor_token) - Create a bank account from a plaid processor token + +### [companies](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md) + +* [post_v1_partner_managed_companies](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#post_v1_partner_managed_companies) - Create a partner managed company +* [get_v1_companies](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#get_v1_companies) - Get a company +* [put_v1_companies](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#put_v1_companies) - Update a company +* [put_v1_partner_managed_companies_company_uuid_migrate](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#put_v1_partner_managed_companies_company_uuid_migrate) - Migrate company to embedded payroll +* [post_partner_managed_companies_company_uuid_accept_terms_of_service](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#post_partner_managed_companies_company_uuid_accept_terms_of_service) - Accept terms of service for a company user +* [post_partner_managed_companies_company_uuid_retrieve_terms_of_service](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#post_partner_managed_companies_company_uuid_retrieve_terms_of_service) - Retrieve terms of service status for a company user +* [post_v1_companies_company_id_admins](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#post_v1_companies_company_id_admins) - Create an admin for the company +* [get_v1_companies_company_id_admins](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#get_v1_companies_company_id_admins) - Get all the admins at a company +* [get_v1_company_onboarding_status](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#get_v1_company_onboarding_status) - Get the company's onboarding status +* [get_v1_company_finish_onboarding](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#get_v1_company_finish_onboarding) - Finish company onboarding +* [get_v1_companies_company_id_custom_fields](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companies/README.md#get_v1_companies_company_id_custom_fields) - Get the custom fields of a company + +### [company_attachment](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyattachmentsdk/README.md) + +* [get_v1_companies_attachment](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyattachmentsdk/README.md#get_v1_companies_attachment) - Get Company Attachment Details +* [get_v1_companies_attachment_url](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyattachmentsdk/README.md#get_v1_companies_attachment_url) - Get a temporary url to download the Company Attachment file +* [get_v1_companies_attachments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyattachmentsdk/README.md#get_v1_companies_attachments) - Get List of Company Attachments +* [post_v1_companies_attachment](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyattachmentsdk/README.md#post_v1_companies_attachment) - Create Company Attachment and Upload File + +### [company_benefits](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md) + +* [post_v1_companies_company_id_company_benefits](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#post_v1_companies_company_id_company_benefits) - Create a company benefit +* [get_v1_companies_company_id_company_benefits](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#get_v1_companies_company_id_company_benefits) - Get benefits for a company +* [get_v1_company_benefits_company_benefit_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#get_v1_company_benefits_company_benefit_id) - Get a company benefit +* [put_v1_company_benefits_company_benefit_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#put_v1_company_benefits_company_benefit_id) - Update a company benefit +* [delete_v1_company_benefits_company_benefit_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#delete_v1_company_benefits_company_benefit_id) - Delete a company benefit +* [get_v1_benefits](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#get_v1_benefits) - Get all benefits supported by Gusto +* [get_v1_benefits_benefit_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#get_v1_benefits_benefit_id) - Get a supported benefit by ID +* [get_v1_benefits_company_benefit_id_summary](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#get_v1_benefits_company_benefit_id_summary) - Get company benefit summary by company benefit id. +* [get_v1_company_benefits_company_benefit_id_employee_benefits](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#get_v1_company_benefits_company_benefit_id_employee_benefits) - Get all employee benefits for a company benefit +* [bulk_update](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#bulk_update) - Bulk update employee benefits for a company benefit +* [get_v1_benefits_benefits_id_requirements](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companybenefits/README.md#get_v1_benefits_benefits_id_requirements) - Get benefit fields requirements by ID + +### [company_federal_taxes](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyfederaltaxes/README.md) + +* [get_details](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyfederaltaxes/README.md#get_details) - Get Federal Tax Details + +### [company_forms](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyforms/README.md) + +* [get_v1_company_forms](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyforms/README.md#get_v1_company_forms) - Get all company forms +* [get_v1_company_form](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyforms/README.md#get_v1_company_form) - Get a company form +* [get_v1_company_form_pdf](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyforms/README.md#get_v1_company_form_pdf) - Get a company form pdf +* [put_v1_company_form_sign](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/companyforms/README.md#put_v1_company_form_sign) - Sign a company form + +### [compensations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/compensations/README.md) + +* [update](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/compensations/README.md#update) - Update a compensation +* [delete](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/compensations/README.md#delete) - Delete a compensation + +### [contractor_documents](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractordocuments/README.md) + +* [get_v1_contractor_documents](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractordocuments/README.md#get_v1_contractor_documents) - Get all contractor documents +* [get_v1_contractor_document](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractordocuments/README.md#get_v1_contractor_document) - Get a contractor document +* [get_v1_contractor_document_pdf](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractordocuments/README.md#get_v1_contractor_document_pdf) - Get the contractor document pdf +* [put_v1_contractor_document_sign](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractordocuments/README.md#put_v1_contractor_document_sign) - Sign a contractor document + +### [contractor_forms](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorforms/README.md) + +* [get_v1_contractor_form](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorforms/README.md#get_v1_contractor_form) - Get a contractor form +* [get_v1_contractor_form_pdf](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorforms/README.md#get_v1_contractor_form_pdf) - Get the contractor form pdf +* [post_v1_sandbox_generate_1099](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorforms/README.md#post_v1_sandbox_generate_1099) - Generate a 1099 form [DEMO] + +### [contractor_payment_groups](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentgroups/README.md) + +* [post_v1_companies_company_id_contractor_payment_groups](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentgroups/README.md#post_v1_companies_company_id_contractor_payment_groups) - Create a contractor payment group +* [get_v1_companies_company_id_contractor_payment_groups](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentgroups/README.md#get_v1_companies_company_id_contractor_payment_groups) - Get contractor payment groups for a company +* [post_v1_companies_company_id_contractor_payment_groups_preview](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentgroups/README.md#post_v1_companies_company_id_contractor_payment_groups_preview) - Preview a contractor payment group +* [get_v1_contractor_payment_groups_contractor_payment_group_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentgroups/README.md#get_v1_contractor_payment_groups_contractor_payment_group_id) - Fetch a contractor payment group +* [delete_v1_contractor_payment_groups_contractor_payment_group_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentgroups/README.md#delete_v1_contractor_payment_groups_contractor_payment_group_id) - Cancel a contractor payment group +* [put_v1_contractor_payment_groups_contractor_payment_group_id_fund](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentgroups/README.md#put_v1_contractor_payment_groups_contractor_payment_group_id_fund) - Fund a contractor payment group [DEMO] + +### [contractor_payment_method](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentmethodsdk/README.md) + +* [list_bank_accounts](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentmethodsdk/README.md#list_bank_accounts) - Get all contractor bank accounts + +### [contractor_payment_methods](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentmethods/README.md) + +* [create](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentmethods/README.md#create) - Create a contractor bank account +* [get_v1_contractors_contractor_uuid_payment_method](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpaymentmethods/README.md#get_v1_contractors_contractor_uuid_payment_method) - Get a contractor's payment method + +### [contractor_payments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpayments/README.md) + +* [get_v1_contractor_payments_contractor_payment_uuid_receipt](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpayments/README.md#get_v1_contractor_payments_contractor_payment_uuid_receipt) - Get a single contractor payment receipt +* [get_v1_contractor_payments_contractor_payment_uuid_fund](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpayments/README.md#get_v1_contractor_payments_contractor_payment_uuid_fund) - Fund a contractor payment [DEMO] +* [post_v1_companies_company_id_contractor_payments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpayments/README.md#post_v1_companies_company_id_contractor_payments) - Create a contractor payment +* [get](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpayments/README.md#get) - Get contractor payments for a company +* [get_by_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpayments/README.md#get_by_id) - Get a single contractor payment +* [delete](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpayments/README.md#delete) - Cancel a contractor payment +* [get_companies_company_uuid_contractor_payments_preview](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractorpayments/README.md#get_companies_company_uuid_contractor_payments_preview) - Preview contractor payment debit date + +### [contractors](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md) + +* [post_v1_companies_company_uuid_contractors](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#post_v1_companies_company_uuid_contractors) - Create a contractor +* [get_v1_companies_company_uuid_contractors](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#get_v1_companies_company_uuid_contractors) - Get contractors of a company +* [get_v1_contractors_contractor_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#get_v1_contractors_contractor_uuid) - Get a contractor +* [put_v1_contractors_contractor_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#put_v1_contractors_contractor_uuid) - Update a contractor +* [delete_v1_contractors_contractor_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#delete_v1_contractors_contractor_uuid) - Delete a contractor +* [get_v1_contractors_contractor_uuid_onboarding_status](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#get_v1_contractors_contractor_uuid_onboarding_status) - Get the contractor's onboarding status +* [put_v1_contractors_contractor_uuid_onboarding_status](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#put_v1_contractors_contractor_uuid_onboarding_status) - Change the contractor's onboarding status +* [get_v1_contractors_contractor_uuid_address](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#get_v1_contractors_contractor_uuid_address) - Get a contractor address +* [put_v1_contractors_contractor_uuid_address](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#put_v1_contractors_contractor_uuid_address) - Update a contractor's address +* [get_forms](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#get_forms) - Get all contractor forms +* [put_v1_contractors_contractor_id_payment_method](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/contractors/README.md#put_v1_contractors_contractor_id_payment_method) - Update a contractor's payment method + +### [departments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/departments/README.md) + +* [post_departments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/departments/README.md#post_departments) - Create a department +* [get_companies_departments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/departments/README.md#get_companies_departments) - Get all departments of a company +* [get_department](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/departments/README.md#get_department) - Get a department +* [put_departments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/departments/README.md#put_departments) - Update a department +* [delete_department](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/departments/README.md#delete_department) - Delete a department +* [put_add_people_to_department](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/departments/README.md#put_add_people_to_department) - Add people to a department +* [put_remove_people_from_department](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/departments/README.md#put_remove_people_from_department) - Remove people from a department + +### [earning_types](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/earningtypes/README.md) + +* [post_v1_companies_company_id_earning_types](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/earningtypes/README.md#post_v1_companies_company_id_earning_types) - Create a custom earning type +* [get_v1_companies_company_id_earning_types](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/earningtypes/README.md#get_v1_companies_company_id_earning_types) - Get all earning types for a company +* [put_v1_companies_company_id_earning_types_earning_type_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/earningtypes/README.md#put_v1_companies_company_id_earning_types_earning_type_uuid) - Update an earning type +* [delete_v1_companies_company_id_earning_types_earning_type_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/earningtypes/README.md#delete_v1_companies_company_id_earning_types_earning_type_uuid) - Deactivate an earning type + +### [employee_addresses](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeaddresses/README.md) + +* [get_home](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeaddresses/README.md#get_home) - Get an employee's home addresses +* [post_v1_employees_employee_id_home_addresses](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeaddresses/README.md#post_v1_employees_employee_id_home_addresses) - Create an employee's home address +* [get](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeaddresses/README.md#get) - Get an employee's home address +* [delete](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeaddresses/README.md#delete) - Delete an employee's home address +* [list_work_addresses](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeaddresses/README.md#list_work_addresses) - Get an employee's work addresses +* [update](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeaddresses/README.md#update) - Update an employee work address + +### [employee_bank_accounts](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebankaccounts/README.md) + +* [delete](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebankaccounts/README.md#delete) - Delete an employee bank account + +### [employee_benefits](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebenefits/README.md) + +* [create](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebenefits/README.md#create) - Create an employee benefit +* [get_v1_employees_employee_id_employee_benefits](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebenefits/README.md#get_v1_employees_employee_id_employee_benefits) - Get all benefits for an employee +* [get_v1_employee_benefits_employee_benefit_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebenefits/README.md#get_v1_employee_benefits_employee_benefit_id) - Get an employee benefit +* [put_v1_employee_benefits_employee_benefit_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebenefits/README.md#put_v1_employee_benefits_employee_benefit_id) - Update an employee benefit +* [delete_v1_employee_benefits_employee_benefit_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebenefits/README.md#delete_v1_employee_benefits_employee_benefit_id) - Delete an employee benefit +* [create_ytd_benefit_amounts](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebenefits/README.md#create_ytd_benefit_amounts) - Create year-to-date benefit amounts from a different company +* [get_ytd_from_different_company](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeebenefits/README.md#get_ytd_from_different_company) - Get year-to-date benefit amounts from a different company + +### [employee_employments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeemployments/README.md) + +* [list_terminations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeemployments/README.md#list_terminations) - Get terminations for an employee +* [put_v1_terminations_employee_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeemployments/README.md#put_v1_terminations_employee_id) - Update an employee termination +* [put_v1_employees_employee_id_rehire](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeemployments/README.md#put_v1_employees_employee_id_rehire) - Update an employee rehire +* [get_v1_employees_employee_id_rehire](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeemployments/README.md#get_v1_employees_employee_id_rehire) - Get an employee rehire +* [delete_v1_employees_employee_id_rehire](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeemployments/README.md#delete_v1_employees_employee_id_rehire) - Delete an employee rehire +* [get_v1_employees_employee_id_employment_history](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeemployments/README.md#get_v1_employees_employee_id_employment_history) - Get employment history for an employee + +### [employee_forms](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeforms/README.md) + +* [post_v1_sandbox_generate_w2](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeforms/README.md#post_v1_sandbox_generate_w2) - Generate a W2 form [DEMO] +* [get_v1_employee_forms](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeforms/README.md#get_v1_employee_forms) - Get all employee forms +* [get](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeforms/README.md#get) - Get an employee form +* [get_v1_employee_form_pdf](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeforms/README.md#get_v1_employee_form_pdf) - Get the employee form pdf +* [put_v1_employee_form_sign](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeforms/README.md#put_v1_employee_form_sign) - Sign an employee form + +### [employee_onboarding](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeonboarding/README.md) + +* [update_documents_config](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeonboarding/README.md#update_documents_config) - Update an employee's onboarding documents config + +### [employee_payment_method](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeepaymentmethodsdk/README.md) + +* [get_all](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeepaymentmethodsdk/README.md#get_all) - Get all employee bank accounts +* [put_v1_employees_employee_id_payment_method](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeepaymentmethodsdk/README.md#put_v1_employees_employee_id_payment_method) - Update an employee's payment method + +### [employee_payment_methods](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeepaymentmethods/README.md) + +* [post_v1_employees_employee_id_bank_accounts](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeepaymentmethods/README.md#post_v1_employees_employee_id_bank_accounts) - Create an employee bank account +* [update](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeepaymentmethods/README.md#update) - Update an employee bank account +* [get_v1_employees_employee_id_payment_method](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeepaymentmethods/README.md#get_v1_employees_employee_id_payment_method) - Get an employee's payment method + +### [employee_tax_setup](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeetaxsetup/README.md) + +* [get_v1_employees_employee_id_federal_taxes](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeetaxsetup/README.md#get_v1_employees_employee_id_federal_taxes) - Get an employee's federal taxes +* [put_v1_employees_employee_id_federal_taxes](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeetaxsetup/README.md#put_v1_employees_employee_id_federal_taxes) - Update an employee's federal taxes +* [get_v1_employees_employee_id_state_taxes](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeetaxsetup/README.md#get_v1_employees_employee_id_state_taxes) - Get an employee's state taxes + +### [employee_taxes](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeetaxes/README.md) + +* [update](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeetaxes/README.md#update) - Update an employee's state taxes + +### [employee_terminations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeterminations/README.md) + +* [create](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employeeterminations/README.md#create) - Create an employee termination + +### [employees](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md) + +* [post_v1_employees](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#post_v1_employees) - Create an employee +* [list](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#list) - Get employees of a company +* [post_v1_historical_employees](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#post_v1_historical_employees) - Create a historical employee +* [update_historical_employee](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#update_historical_employee) - Update a historical employee +* [get](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#get) - Get an employee +* [put_v1_employees](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#put_v1_employees) - Update an employee +* [delete_v1_employee](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#delete_v1_employee) - Delete an onboarding employee +* [get_v1_employees_employee_id_custom_fields](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#get_v1_employees_employee_id_custom_fields) - Get an employee's custom fields +* [get_v1_employees_employee_id_onboarding_status](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#get_v1_employees_employee_id_onboarding_status) - Get the employee's onboarding status +* [put_v1_employees_employee_id_onboarding_status](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#put_v1_employees_employee_id_onboarding_status) - Update the employee's onboarding status +* [get_version_employees_time_off_activities](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#get_version_employees_time_off_activities) - Get employee time off activities +* [post_v1_employees_employee_id_rehire](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#post_v1_employees_employee_id_rehire) - Create an employee rehire +* [calculate_accruing_time_off_hours](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/employees/README.md#calculate_accruing_time_off_hours) - Calculate accruing time off hours + +### [events](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/events/README.md) + +* [get_events](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/events/README.md#get_events) - Get all events + +### [external_payrolls](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md) + +* [post_v1_external_payroll](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md#post_v1_external_payroll) - Create a new external payroll for a company +* [get_v1_company_external_payrolls](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md#get_v1_company_external_payrolls) - Get external payrolls for a company +* [get_v1_external_payroll](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md#get_v1_external_payroll) - Get an external payroll +* [delete_v1_external_payroll](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md#delete_v1_external_payroll) - Delete an external payroll +* [put_v1_external_payroll](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md#put_v1_external_payroll) - Update an external payroll +* [get_v1_external_payroll_calculate_taxes](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md#get_v1_external_payroll_calculate_taxes) - Get tax suggestions for an external payroll +* [get_v1_tax_liabilities](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md#get_v1_tax_liabilities) - Get tax liabilities +* [put_v1_tax_liabilities](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md#put_v1_tax_liabilities) - Update tax liabilities +* [put_v1_tax_liabilities_finish](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/externalpayrolls/README.md#put_v1_tax_liabilities_finish) - Finalize tax liabilities options and convert into processed payrolls + +### [federal_tax_details](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/federaltaxdetailssdk/README.md) + +* [put_v1_companies_company_id_federal_tax_details](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/federaltaxdetailssdk/README.md#put_v1_companies_company_id_federal_tax_details) - Update Federal Tax Details + +### [flows](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/flows/README.md) + +* [post_v1_company_flows](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/flows/README.md#post_v1_company_flows) - Create a flow + +### [garnishments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/garnishments/README.md) + +* [post_v1_employees_employee_id_garnishments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/garnishments/README.md#post_v1_employees_employee_id_garnishments) - Create a garnishment +* [get_v1_employees_employee_id_garnishments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/garnishments/README.md#get_v1_employees_employee_id_garnishments) - Get garnishments for an employee +* [get_by_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/garnishments/README.md#get_by_id) - Get a garnishment +* [put_v1_garnishments_garnishment_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/garnishments/README.md#put_v1_garnishments_garnishment_id) - Update a garnishment +* [get_v1_garnishments_child_support](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/garnishments/README.md#get_v1_garnishments_child_support) - Get child support garnishment data + +### [generated_documents](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/generateddocuments/README.md) + +* [get_v1_generated_documents_document_type_request_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/generateddocuments/README.md#get_v1_generated_documents_document_type_request_uuid) - Get a generated document + + +### [holiday_pay_policies](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/holidaypaypolicies/README.md) + +* [get_companies_company_uuid_holiday_pay_policy](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/holidaypaypolicies/README.md#get_companies_company_uuid_holiday_pay_policy) - Get a company's holiday pay policy +* [post_companies_company_uuid_holiday_pay_policy](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/holidaypaypolicies/README.md#post_companies_company_uuid_holiday_pay_policy) - Create a holiday pay policy for a company +* [put_companies_company_uuid_holiday_pay_policy](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/holidaypaypolicies/README.md#put_companies_company_uuid_holiday_pay_policy) - Update a company's holiday pay policy +* [delete_companies_company_uuid_holiday_pay_policy](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/holidaypaypolicies/README.md#delete_companies_company_uuid_holiday_pay_policy) - Delete a company's holiday pay policy +* [put_companies_company_uuid_holiday_pay_policy_add](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/holidaypaypolicies/README.md#put_companies_company_uuid_holiday_pay_policy_add) - Add employees to a company's holiday pay policy +* [put_companies_company_uuid_holiday_pay_policy_remove](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/holidaypaypolicies/README.md#put_companies_company_uuid_holiday_pay_policy_remove) - Remove employees from a company's holiday pay policy +* [get_companies_company_uuid_paid_holidays](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/holidaypaypolicies/README.md#get_companies_company_uuid_paid_holidays) - Preview a company's paid holidays + +### [home_addresses](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/homeaddresses/README.md) + +* [update](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/homeaddresses/README.md#update) - Update an employee's home address + +### [i_9_verification](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/i9verification/README.md) + +* [get_v1_employees_employee_id_i9_authorization](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/i9verification/README.md#get_v1_employees_employee_id_i9_authorization) - Get an employee's I-9 authorization +* [get_v1_employees_employee_id_i9_authorization_document_options](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/i9verification/README.md#get_v1_employees_employee_id_i9_authorization_document_options) - Get an employee's I-9 verification document options +* [put_v1_employees_employee_id_i9_authorization_documents](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/i9verification/README.md#put_v1_employees_employee_id_i9_authorization_documents) - Create an employee's I-9 authorization verification documents +* [put_v1_employees_employee_id_i9_authorization_employer_sign](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/i9verification/README.md#put_v1_employees_employee_id_i9_authorization_employer_sign) - Employer sign an employee's Form I-9 + +### [i9_authorizations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/i9authorizations/README.md) + +* [put_v1_employees_employee_id_i9_authorization](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/i9authorizations/README.md#put_v1_employees_employee_id_i9_authorization) - Create or update an employee's I-9 authorization +* [get_v1_employees_employee_id_i9_authorization_documents](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/i9authorizations/README.md#get_v1_employees_employee_id_i9_authorization_documents) - Get an employee's I-9 verification documents +* [delete_v1_employees_employee_id_i9_authorization_documents_document_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/i9authorizations/README.md#delete_v1_employees_employee_id_i9_authorization_documents_document_id) - Delete an employee's I-9 verification document + +### [industry_selections](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/industryselections/README.md) + +* [get_v1_company_industry](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/industryselections/README.md#get_v1_company_industry) - Get a company industry selection +* [put_v1_company_industry](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/industryselections/README.md#put_v1_company_industry) - Update a company industry selection + +### [introspection](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/introspection/README.md) + +* [get_v1_token_info](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/introspection/README.md#get_v1_token_info) - Get info about the current access token +* [refresh_access_token](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/introspection/README.md#refresh_access_token) - Refresh access token + +### [invoices](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/invoices/README.md) + +* [get_invoices_invoice_period](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/invoices/README.md#get_invoices_invoice_period) - Retrieve invoicing data for companies + +### [job_compensations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobcompensations/README.md) + +* [create](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobcompensations/README.md#create) - Create a compensation + +### [jobs](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobs/README.md) + +* [get](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobs/README.md#get) - Get a job +* [put_v1_jobs_job_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobs/README.md#put_v1_jobs_job_id) - Update a job +* [delete](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobs/README.md#delete) - Delete an individual job +* [get_v1_jobs_job_id_compensations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobs/README.md#get_v1_jobs_job_id_compensations) - Get compensations for a job + +### [jobs_and_compensations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobsandcompensations/README.md) + +* [create](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobsandcompensations/README.md#create) - Create a job +* [list](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobsandcompensations/README.md#list) - Get jobs for an employee +* [get_v1_compensations_compensation_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/jobsandcompensations/README.md#get_v1_compensations_compensation_id) - Get a compensation + +### [locations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/locations/README.md) + +* [post_v1_companies_company_id_locations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/locations/README.md#post_v1_companies_company_id_locations) - Create a company location +* [list](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/locations/README.md#list) - Get company locations +* [get_v1_locations_location_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/locations/README.md#get_v1_locations_location_id) - Get a location +* [put_v1_locations_location_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/locations/README.md#put_v1_locations_location_id) - Update a location +* [get_v1_locations_location_uuid_minimum_wages](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/locations/README.md#get_v1_locations_location_uuid_minimum_wages) - Get minimum wages for a location + +### [notifications](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/notifications/README.md) + +* [get_notifications_notification_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/notifications/README.md#get_notifications_notification_uuid) - Get a notification's details + +### [pay_schedules](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md) + +* [post_v1_companies_company_id_pay_schedules](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#post_v1_companies_company_id_pay_schedules) - Create a new pay schedule +* [list](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#list) - Get the pay schedules for a company +* [get_v1_companies_company_id_pay_schedules_preview](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#get_v1_companies_company_id_pay_schedules_preview) - Preview pay schedule dates +* [get_v1_companies_company_id_pay_schedules_pay_schedule_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#get_v1_companies_company_id_pay_schedules_pay_schedule_id) - Get a pay schedule +* [put_v1_companies_company_id_pay_schedules_pay_schedule_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#put_v1_companies_company_id_pay_schedules_pay_schedule_id) - Update a pay schedule +* [list_pay_periods](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#list_pay_periods) - Get pay periods for a company +* [get_v1_companies_company_id_unprocessed_termination_pay_periods](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#get_v1_companies_company_id_unprocessed_termination_pay_periods) - Get termination pay periods for a company +* [get_v1_companies_company_id_pay_schedules_assignments](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#get_v1_companies_company_id_pay_schedules_assignments) - Get pay schedule assignments for a company +* [post_v1_companies_company_id_pay_schedules_assignment_preview](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#post_v1_companies_company_id_pay_schedules_assignment_preview) - Preview pay schedule assignments for a company +* [post_v1_companies_company_id_pay_schedules_assign](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payschedules/README.md#post_v1_companies_company_id_pay_schedules_assign) - Assign pay schedules for a company + +### [pay_stubs](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/paystubs/README.md) + +* [get](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/paystubs/README.md#get) - Get an employee's pay stubs + +### [payment_configs](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/paymentconfigssdk/README.md) + +* [get_v1_company_payment_configs](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/paymentconfigssdk/README.md#get_v1_company_payment_configs) - Get a company's payment configs +* [put_v1_company_payment_configs](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/paymentconfigssdk/README.md#put_v1_company_payment_configs) - Update a company's payment configs + +### [payrolls](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md) + +* [post_v1_companies_company_id_payrolls](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#post_v1_companies_company_id_payrolls) - Create an off-cycle payroll +* [get_v1_companies_company_id_payrolls](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#get_v1_companies_company_id_payrolls) - Get all payrolls for a company +* [get_v1_companies_company_id_payroll_reversals](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#get_v1_companies_company_id_payroll_reversals) - Get approved payroll reversals +* [get_v1_companies_company_id_payrolls_payroll_id](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#get_v1_companies_company_id_payrolls_payroll_id) - Get a single payroll +* [put_v1_companies_company_id_payrolls](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#put_v1_companies_company_id_payrolls) - Update a payroll by ID +* [delete_v1_companies_company_id_payrolls](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#delete_v1_companies_company_id_payrolls) - Delete a payroll +* [put_v1_companies_company_id_payrolls_payroll_id_prepare](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#put_v1_companies_company_id_payrolls_payroll_id_prepare) - Prepare a payroll for update +* [get_v1_payment_receipts_payrolls_payroll_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#get_v1_payment_receipts_payrolls_payroll_uuid) - Get a single payroll receipt +* [list_blockers](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#list_blockers) - Get all payroll blockers for a company +* [post_companies_payroll_skip_company_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#post_companies_payroll_skip_company_uuid) - Skip a payroll +* [post_payrolls_gross_up_payroll_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#post_payrolls_gross_up_payroll_uuid) - Calculate gross up +* [put_v1_companies_company_id_payrolls_payroll_id_calculate](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#put_v1_companies_company_id_payrolls_payroll_id_calculate) - Calculate a payroll +* [put_v1_companies_company_id_payrolls_payroll_id_submit](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#put_v1_companies_company_id_payrolls_payroll_id_submit) - Submit payroll +* [put_api_v1_companies_company_id_payrolls_payroll_id_cancel](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#put_api_v1_companies_company_id_payrolls_payroll_id_cancel) - Cancel a payroll +* [get_v1_payrolls_payroll_uuid_employees_employee_uuid_pay_stub](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrolls/README.md#get_v1_payrolls_payroll_uuid_employees_employee_uuid_pay_stub) - Get an employee pay stub (pdf) + +### [payrolls_documents](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrollsdocuments/README.md) + +* [post_v1_payrolls_payroll_uuid_generated_documents_printable_payroll_checks](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/payrollsdocuments/README.md#post_v1_payrolls_payroll_uuid_generated_documents_printable_payroll_checks) - Generate printable payroll checks (pdf) + +### [recovery_cases](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/recoverycases/README.md) + +* [get_recovery_cases](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/recoverycases/README.md#get_recovery_cases) - Get all recovery cases for a company +* [redebit_recovery_case](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/recoverycases/README.md#redebit_recovery_case) - Initiate a redebit for a recovery case + +### [report_templates](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/reporttemplates/README.md) + +* [get](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/reporttemplates/README.md#get) - Get a report template + +### [reports](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/reports/README.md) + +* [post_companies_company_uuid_reports](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/reports/README.md#post_companies_company_uuid_reports) - Create a custom report +* [get_reports_report_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/reports/README.md#get_reports_report_uuid) - Get a report + +### [signatories](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/signatories/README.md) + +* [post_v1_company_signatories](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/signatories/README.md#post_v1_company_signatories) - Create a signatory +* [get_v1_companies_company_uuid_signatories](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/signatories/README.md#get_v1_companies_company_uuid_signatories) - Get all company signatories +* [post_v1_companies_company_uuid_signatories_invite](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/signatories/README.md#post_v1_companies_company_uuid_signatories_invite) - Invite a signatory +* [put_v1_companies_company_uuid_signatories_signatory_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/signatories/README.md#put_v1_companies_company_uuid_signatories_signatory_uuid) - Update a signatory +* [delete_v1_companies_company_uuid_signatories_signatory_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/signatories/README.md#delete_v1_companies_company_uuid_signatories_signatory_uuid) - Delete a signatory + +### [tax_requirements](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/taxrequirements/README.md) + +* [get_state_requirements](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/taxrequirements/README.md#get_state_requirements) - Get State Tax Requirements +* [put_v1_companies_company_uuid_tax_requirements_state](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/taxrequirements/README.md#put_v1_companies_company_uuid_tax_requirements_state) - Update State Tax Requirements +* [get_v1_companies_company_uuid_tax_requirements](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/taxrequirements/README.md#get_v1_companies_company_uuid_tax_requirements) - Get All Tax Requirement States + +### [terminations](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/terminations/README.md) + +* [delete](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/terminations/README.md#delete) - Delete an employee termination + +### [time_off_policies](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/timeoffpolicies/README.md) + +* [get](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/timeoffpolicies/README.md#get) - Get a time off policy +* [put_time_off_policies_time_off_policy_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/timeoffpolicies/README.md#put_time_off_policies_time_off_policy_uuid) - Update a time off policy +* [list](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/timeoffpolicies/README.md#list) - Get all time off policies +* [post_companies_company_uuid_time_off_policies](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/timeoffpolicies/README.md#post_companies_company_uuid_time_off_policies) - Create a time off policy +* [put_version_time_off_policies_time_off_policy_uuid_add_employees](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/timeoffpolicies/README.md#put_version_time_off_policies_time_off_policy_uuid_add_employees) - Add employees to a time off policy +* [put_v1_time_off_policies_time_off_policy_uuid_remove_employees](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/timeoffpolicies/README.md#put_v1_time_off_policies_time_off_policy_uuid_remove_employees) - Remove employees from a time off policy +* [put_version_time_off_policies_time_off_policy_uuid_balance](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/timeoffpolicies/README.md#put_version_time_off_policies_time_off_policy_uuid_balance) - Update employee time off hour balances +* [put_v1_time_off_policies_time_off_policy_uuid_deactivate](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/timeoffpolicies/README.md#put_v1_time_off_policies_time_off_policy_uuid_deactivate) - Deactivate a time off policy + +### [webhook_subscriptions](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/webhooksubscriptions/README.md) + +* [delete_v1_webhook_subscription_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/webhooksubscriptions/README.md#delete_v1_webhook_subscription_uuid) - Delete a webhook subscription +* [get_v1_webhook_subscription_verification_token_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/webhooksubscriptions/README.md#get_v1_webhook_subscription_verification_token_uuid) - Request the webhook subscription verification_token + +### [webhooks](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/webhooks/README.md) + +* [create](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/webhooks/README.md#create) - Create a webhook subscription +* [list](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/webhooks/README.md#list) - List webhook subscriptions +* [update](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/webhooks/README.md#update) - Update a webhook subscription +* [get_v1_webhook_subscription_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/webhooks/README.md#get_v1_webhook_subscription_uuid) - Get a webhook subscription +* [verify](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/webhooks/README.md#verify) - Verify the webhook subscription + +### [wire_in_requests](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/wireinrequests/README.md) + +* [get_wire_in_requests_wire_in_request_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/wireinrequests/README.md#get_wire_in_requests_wire_in_request_uuid) - Get a single Wire In Request +* [submit](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/wireinrequests/README.md#submit) - Submit a wire in request +* [list](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/wireinrequests/README.md#list) - Get all Wire In Requests for a company + +### [work_addresses](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/workaddresses/README.md) + +* [post_v1_employees_employee_id_work_addresses](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/workaddresses/README.md#post_v1_employees_employee_id_work_addresses) - Create an employee work address +* [get](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/workaddresses/README.md#get) - Get an employee work address +* [delete_v1_work_addresses_work_address_uuid](https://github.com/Gusto/gusto-python-client/blob/master/docs/sdks/workaddresses/README.md#delete_v1_work_addresses_work_address_uuid) - Delete an employee's work address + +
+ + + +## File uploads + +Certain SDK methods accept file objects as part of a request body or multi-part request. It is possible and typically recommended to upload files as a stream rather than reading the entire contents into memory. This avoids excessive memory consumption and potentially crashing with out-of-memory errors when working with very large files. The following example demonstrates how to attach a file stream to a request. + +> [!TIP] +> +> For endpoints that handle file uploads bytes arrays can also be used. However, using streams is recommended for large files. +> + +```python +import gusto +from gusto import Gusto +import os + +with Gusto( + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), +) as g_client: + + res = g_client.company_attachment.post_v1_companies_attachment(company_id="", document={ + "file_name": "example.file", + "content": open("example.file", "rb"), + }, category=gusto.PostV1CompaniesAttachmentCategory.GEP_NOTICE) + + # Handle response + print(res) + +``` + + + +## Retries + +Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK. + +To change the default retry strategy for a single API call, simply provide a `RetryConfig` object to the call: +```python +from gusto import Gusto +from gusto.utils import BackoffStrategy, RetryConfig +import os + +with Gusto( + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), +) as g_client: + + res = g_client.introspection.get_v1_token_info(, + RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False)) + + # Handle response + print(res) + +``` + +If you'd like to override the default retry strategy for all operations that support retries, you can use the `retry_config` optional parameter when initializing the SDK: +```python +from gusto import Gusto +from gusto.utils import BackoffStrategy, RetryConfig +import os + +with Gusto( + retry_config=RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False), + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), +) as g_client: + + res = g_client.introspection.get_v1_token_info() + + # Handle response + print(res) + +``` + + + +## Error Handling + +Handling errors in this SDK should largely match your expectations. All operations return a response object or raise an exception. + +By default, an API error will raise a models.APIError exception, which has the following properties: + +| Property | Type | Description | +|-----------------|------------------|-----------------------| +| `.status_code` | *int* | The HTTP status code | +| `.message` | *str* | The error message | +| `.raw_response` | *httpx.Response* | The raw HTTP response | +| `.body` | *str* | The response content | + +When custom error responses are specified for an operation, the SDK may also raise their associated exceptions. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `post_v1_partner_managed_companies_async` method may raise the following exceptions: + +| Error Type | Status Code | Content Type | +| ------------------------------------- | ----------- | ---------------- | +| models.UnprocessableEntityErrorObject | 422 | application/json | +| models.APIError | 4XX, 5XX | \*/\* | + +### Example + +```python +import gusto +from gusto import Gusto, models +import os + +with Gusto() as g_client: + res = None + try: + + res = g_client.companies.post_v1_partner_managed_companies(security=gusto.PostV1PartnerManagedCompaniesSecurity( + system_access_auth=os.getenv("GUSTO_SYSTEM_ACCESS_AUTH", ""), + ), user={ + "first_name": "Frank", + "last_name": "Ocean", + "email": "frank@example.com", + "phone": "2345558899", + }, company={ + "name": "Frank's Ocean, LLC", + "trade_name": "Frank’s Ocean", + "ein": "123456789", + "contractor_only": False, + }) + + # Handle response + print(res) + + except models.UnprocessableEntityErrorObject as e: + # handle e.data: models.UnprocessableEntityErrorObjectData + raise(e) + except models.APIError as e: + # handle exception + raise(e) +``` + + + +## Server Selection + +### Select Server by Name + +You can override the default server globally by passing a server name to the `server: str` optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the names associated with the available servers: + +| Name | Server | +| ------ | ---------------------------- | +| `demo` | `https://api.gusto-demo.com` | +| `prod` | `https://api.gusto.com` | + +#### Example + +```python +from gusto import Gusto +import os + +with Gusto( + server="prod", + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), +) as g_client: + + res = g_client.introspection.get_v1_token_info() + + # Handle response + print(res) + +``` + +### Override Server URL Per-Client + +The default server can also be overridden globally by passing a URL to the `server_url: str` optional parameter when initializing the SDK client instance. For example: +```python +from gusto import Gusto +import os + +with Gusto( + server_url="https://api.gusto-demo.com", + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), +) as g_client: + + res = g_client.introspection.get_v1_token_info() + + # Handle response + print(res) + +``` + + + +## Custom HTTP Client + +The Python SDK makes API calls using the [httpx](https://www.python-httpx.org/) HTTP library. In order to provide a convenient way to configure timeouts, cookies, proxies, custom headers, and other low-level configuration, you can initialize the SDK client with your own HTTP client instance. +Depending on whether you are using the sync or async version of the SDK, you can pass an instance of `HttpClient` or `AsyncHttpClient` respectively, which are Protocol's ensuring that the client has the necessary methods to make API calls. +This allows you to wrap the client with your own custom logic, such as adding custom headers, logging, or error handling, or you can just pass an instance of `httpx.Client` or `httpx.AsyncClient` directly. + +For example, you could specify a header for every request that this sdk makes as follows: +```python +from gusto import Gusto +import httpx + +http_client = httpx.Client(headers={"x-custom-header": "someValue"}) +s = Gusto(client=http_client) +``` + +or you could wrap the client with your own custom logic: +```python +from gusto import Gusto +from gusto.httpclient import AsyncHttpClient +import httpx + +class CustomClient(AsyncHttpClient): + client: AsyncHttpClient + + def __init__(self, client: AsyncHttpClient): + self.client = client + + async def send( + self, + request: httpx.Request, + *, + stream: bool = False, + auth: Union[ + httpx._types.AuthTypes, httpx._client.UseClientDefault, None + ] = httpx.USE_CLIENT_DEFAULT, + follow_redirects: Union[ + bool, httpx._client.UseClientDefault + ] = httpx.USE_CLIENT_DEFAULT, + ) -> httpx.Response: + request.headers["Client-Level-Header"] = "added by client" + + return await self.client.send( + request, stream=stream, auth=auth, follow_redirects=follow_redirects + ) + + def build_request( + self, + method: str, + url: httpx._types.URLTypes, + *, + content: Optional[httpx._types.RequestContent] = None, + data: Optional[httpx._types.RequestData] = None, + files: Optional[httpx._types.RequestFiles] = None, + json: Optional[Any] = None, + params: Optional[httpx._types.QueryParamTypes] = None, + headers: Optional[httpx._types.HeaderTypes] = None, + cookies: Optional[httpx._types.CookieTypes] = None, + timeout: Union[ + httpx._types.TimeoutTypes, httpx._client.UseClientDefault + ] = httpx.USE_CLIENT_DEFAULT, + extensions: Optional[httpx._types.RequestExtensions] = None, + ) -> httpx.Request: + return self.client.build_request( + method, + url, + content=content, + data=data, + files=files, + json=json, + params=params, + headers=headers, + cookies=cookies, + timeout=timeout, + extensions=extensions, + ) + +s = Gusto(async_client=CustomClient(httpx.AsyncClient())) +``` + + + +## Resource Management + +The `Gusto` class implements the context manager protocol and registers a finalizer function to close the underlying sync and async HTTPX clients it uses under the hood. This will close HTTP connections, release memory and free up other resources held by the SDK. In short-lived Python programs and notebooks that make a few SDK method calls, resource management may not be a concern. However, in longer-lived programs, it is beneficial to create a single SDK instance via a [context manager][context-manager] and reuse it across the application. + +[context-manager]: https://docs.python.org/3/reference/datamodel.html#context-managers + +```python +from gusto import Gusto +import os +def main(): + with Gusto( + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), + ) as g_client: + # Rest of application here... + + +# Or when using async: +async def amain(): + async with Gusto( + company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), + ) as g_client: + # Rest of application here... +``` + + + +## Debugging + +You can setup your SDK to emit debug logs for SDK requests and responses. + +You can pass your own logger class directly into your SDK. +```python +from gusto import Gusto +import logging + +logging.basicConfig(level=logging.DEBUG) +s = Gusto(debug_logger=logging.getLogger("gusto")) +``` + +You can also enable a default debug logger by setting an environment variable `GUSTO_DEBUG` to true. + + + + +# Development + +## Maturity + +This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage +to a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally +looking for the latest version. + +## Contributions + +While we value open-source contributions to this SDK, this library is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation. +We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release. + +### SDK Created by [Speakeasy](https://www.speakeasy.com/?utm_source=gusto&utm_campaign=python) diff --git a/gusto_embedded/README.md b/gusto_embedded/README.md index ccf2d631..91e5b341 100644 --- a/gusto_embedded/README.md +++ b/gusto_embedded/README.md @@ -61,7 +61,7 @@ The SDK can be installed with either *pip* or *poetry* package managers. *PIP* is the default package installer for Python, enabling easy installation and management of packages from PyPI via the command line. ```bash -pip install git+.git +pip install git+https://github.com/Gusto/gusto-python-client.git#subdirectory=gusto_embedded ``` ### Poetry @@ -69,7 +69,7 @@ pip install git+.git *Poetry* is a modern tool that simplifies dependency management and package publishing by using a single `pyproject.toml` file to handle project metadata and dependencies. ```bash -poetry add git+.git +poetry add git+https://github.com/Gusto/gusto-python-client.git#subdirectory=gusto_embedded ``` ### Shell and script usage with `uv` diff --git a/gusto_embedded/RELEASES.md b/gusto_embedded/RELEASES.md new file mode 100644 index 00000000..87bd4207 --- /dev/null +++ b/gusto_embedded/RELEASES.md @@ -0,0 +1,9 @@ + + +## 2025-02-11 00:21:50 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.488.0 (2.506.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.0.5] gusto_embedded \ No newline at end of file diff --git a/gusto_embedded/docs/models/postv1companiescompanyidlocationsrequestbody.md b/gusto_embedded/docs/models/postv1companiescompanyidlocationsrequestbody.md index c81093c8..43e546f7 100644 --- a/gusto_embedded/docs/models/postv1companiescompanyidlocationsrequestbody.md +++ b/gusto_embedded/docs/models/postv1companiescompanyidlocationsrequestbody.md @@ -11,7 +11,7 @@ Create a company location. | `street_1` | *str* | :heavy_check_mark: | N/A | | `city` | *str* | :heavy_check_mark: | N/A | | `state` | *str* | :heavy_check_mark: | N/A | -| `zip` | *str* | :heavy_check_mark: | N/A | +| `zip_code` | *str* | :heavy_check_mark: | N/A | | `street_2` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `mailing_address` | *Optional[bool]* | :heavy_minus_sign: | Specify if this location is the company's mailing address. | | `filing_address` | *Optional[bool]* | :heavy_minus_sign: | Specify if this location is the company's filing address. | \ No newline at end of file diff --git a/gusto_embedded/docs/models/postv1companysignatorieshomeaddress.md b/gusto_embedded/docs/models/postv1companysignatorieshomeaddress.md index 458d9e62..cc31d8fd 100644 --- a/gusto_embedded/docs/models/postv1companysignatorieshomeaddress.md +++ b/gusto_embedded/docs/models/postv1companysignatorieshomeaddress.md @@ -10,5 +10,5 @@ The signatory's home address | `street_1` | *str* | :heavy_check_mark: | N/A | | `city` | *str* | :heavy_check_mark: | N/A | | `state` | *str* | :heavy_check_mark: | N/A | -| `zip` | *str* | :heavy_check_mark: | N/A | +| `zip_code` | *str* | :heavy_check_mark: | N/A | | `street_2` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/gusto_embedded/docs/models/postv1employeesemployeeidhomeaddressesrequestbody.md b/gusto_embedded/docs/models/postv1employeesemployeeidhomeaddressesrequestbody.md index bfa359c8..7097ca9a 100644 --- a/gusto_embedded/docs/models/postv1employeesemployeeidhomeaddressesrequestbody.md +++ b/gusto_embedded/docs/models/postv1employeesemployeeidhomeaddressesrequestbody.md @@ -9,6 +9,6 @@ | `street_2` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `city` | *Optional[str]* | :heavy_minus_sign: | N/A | | `state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `zip` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `zip_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | `effective_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | | `courtesy_withholding` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/gusto_embedded/docs/models/putv1companiescompanyuuidsignatoriessignatoryuuidhomeaddress.md b/gusto_embedded/docs/models/putv1companiescompanyuuidsignatoriessignatoryuuidhomeaddress.md index e385908e..65283eaa 100644 --- a/gusto_embedded/docs/models/putv1companiescompanyuuidsignatoriessignatoryuuidhomeaddress.md +++ b/gusto_embedded/docs/models/putv1companiescompanyuuidsignatoriessignatoryuuidhomeaddress.md @@ -9,4 +9,4 @@ | `street_2` | *Optional[str]* | :heavy_minus_sign: | N/A | | `city` | *Optional[str]* | :heavy_minus_sign: | N/A | | `state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `zip` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `zip_code` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/gusto_embedded/docs/models/putv1contractorscontractoruuidaddressrequestbody.md b/gusto_embedded/docs/models/putv1contractorscontractoruuidaddressrequestbody.md index ef0fa94e..9e02b762 100644 --- a/gusto_embedded/docs/models/putv1contractorscontractoruuidaddressrequestbody.md +++ b/gusto_embedded/docs/models/putv1contractorscontractoruuidaddressrequestbody.md @@ -10,4 +10,4 @@ | `street_2` | *Optional[str]* | :heavy_minus_sign: | N/A | | `city` | *Optional[str]* | :heavy_minus_sign: | N/A | | `state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `zip` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file +| `zip_code` | *Optional[str]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/gusto_embedded/docs/models/putv1homeaddresseshomeaddressuuidrequestbody.md b/gusto_embedded/docs/models/putv1homeaddresseshomeaddressuuidrequestbody.md index 1d97cfa0..c728a4de 100644 --- a/gusto_embedded/docs/models/putv1homeaddresseshomeaddressuuidrequestbody.md +++ b/gusto_embedded/docs/models/putv1homeaddresseshomeaddressuuidrequestbody.md @@ -10,6 +10,6 @@ | `street_2` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `city` | *Optional[str]* | :heavy_minus_sign: | N/A | | `state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `zip` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `zip_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | `effective_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | | `courtesy_withholding` | *Optional[bool]* | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/gusto_embedded/docs/models/putv1locationslocationidrequestbody.md b/gusto_embedded/docs/models/putv1locationslocationidrequestbody.md index 8831f4ee..eb94d33b 100644 --- a/gusto_embedded/docs/models/putv1locationslocationidrequestbody.md +++ b/gusto_embedded/docs/models/putv1locationslocationidrequestbody.md @@ -13,7 +13,7 @@ Update a location | `street_2` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `city` | *Optional[str]* | :heavy_minus_sign: | N/A | | `state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `zip` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `zip_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | `country` | *Optional[str]* | :heavy_minus_sign: | N/A | | `mailing_address` | *Optional[bool]* | :heavy_minus_sign: | For a company location, specify if this location is the company's mailing address. A company has a single mailing address, so this designation will override any previous selection. | | `filing_address` | *Optional[bool]* | :heavy_minus_sign: | For a company location, specify if this location is the company's filing address. A company has a single filing address, so this designation will override any previous selection. | \ No newline at end of file diff --git a/gusto_embedded/docs/sdks/contractors/README.md b/gusto_embedded/docs/sdks/contractors/README.md index 67325911..b4478376 100644 --- a/gusto_embedded/docs/sdks/contractors/README.md +++ b/gusto_embedded/docs/sdks/contractors/README.md @@ -441,7 +441,7 @@ with Gusto( company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), ) as g_client: - res = g_client.contractors.put_v1_contractors_contractor_uuid_address(contractor_uuid="", version="fe75bd065ff48b91c35fe8ff842f986c", street_1="300 3rd Street", street_2="", city="San Francisco", state="CA", zip="94107") + res = g_client.contractors.put_v1_contractors_contractor_uuid_address(contractor_uuid="", version="fe75bd065ff48b91c35fe8ff842f986c", street_1="300 3rd Street", street_2="", city="San Francisco", state="CA", zip_code="94107") # Handle response print(res) @@ -459,7 +459,7 @@ with Gusto( | `street_2` | *Optional[str]* | :heavy_minus_sign: | N/A | | `city` | *Optional[str]* | :heavy_minus_sign: | N/A | | `state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `zip` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `zip_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | ### Response diff --git a/gusto_embedded/docs/sdks/employeeaddresses/README.md b/gusto_embedded/docs/sdks/employeeaddresses/README.md index 555a7ec1..657bb7c1 100644 --- a/gusto_embedded/docs/sdks/employeeaddresses/README.md +++ b/gusto_embedded/docs/sdks/employeeaddresses/README.md @@ -74,7 +74,7 @@ with Gusto( company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), ) as g_client: - res = g_client.employee_addresses.post_v1_employees_employee_id_home_addresses(employee_id="", street_1="300 3rd Street", street_2=None, city="San Francisco", state="CA", zip="94107", effective_date=dateutil.parser.parse("2021-01-01").date(), courtesy_withholding=True) + res = g_client.employee_addresses.post_v1_employees_employee_id_home_addresses(employee_id="", street_1="300 3rd Street", street_2=None, city="San Francisco", state="CA", zip_code="94107", effective_date=dateutil.parser.parse("2021-01-01").date(), courtesy_withholding=True) # Handle response print(res) @@ -91,7 +91,7 @@ with Gusto( | `street_2` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `city` | *Optional[str]* | :heavy_minus_sign: | N/A | | `state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `zip` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `zip_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | `effective_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | | `courtesy_withholding` | *Optional[bool]* | :heavy_minus_sign: | N/A | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | diff --git a/gusto_embedded/docs/sdks/homeaddresses/README.md b/gusto_embedded/docs/sdks/homeaddresses/README.md index 8a06c303..d69c5e82 100644 --- a/gusto_embedded/docs/sdks/homeaddresses/README.md +++ b/gusto_embedded/docs/sdks/homeaddresses/README.md @@ -26,7 +26,7 @@ with Gusto( company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), ) as g_client: - res = g_client.home_addresses.update(home_address_uuid="", version="fe75bd065ff48b91c35fe8ff842f986c", street_1="300 3rd Street", street_2=None, city="San Francisco", state="CA", zip="94107", effective_date=dateutil.parser.parse("2021-01-01").date(), courtesy_withholding=True) + res = g_client.home_addresses.update(home_address_uuid="", version="fe75bd065ff48b91c35fe8ff842f986c", street_1="300 3rd Street", street_2=None, city="San Francisco", state="CA", zip_code="94107", effective_date=dateutil.parser.parse("2021-01-01").date(), courtesy_withholding=True) # Handle response print(res) @@ -44,7 +44,7 @@ with Gusto( | `street_2` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `city` | *Optional[str]* | :heavy_minus_sign: | N/A | | `state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `zip` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `zip_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | `effective_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | N/A | | `courtesy_withholding` | *Optional[bool]* | :heavy_minus_sign: | N/A | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | diff --git a/gusto_embedded/docs/sdks/locations/README.md b/gusto_embedded/docs/sdks/locations/README.md index b8fdb111..12538d80 100644 --- a/gusto_embedded/docs/sdks/locations/README.md +++ b/gusto_embedded/docs/sdks/locations/README.md @@ -29,7 +29,7 @@ with Gusto( company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), ) as g_client: - res = g_client.locations.post_v1_companies_company_id_locations(company_id="", phone_number="8009360383", street_1="425 2nd Street", city="San Francisco", state="CA", zip="94107", street_2="Suite 602") + res = g_client.locations.post_v1_companies_company_id_locations(company_id="", phone_number="8009360383", street_1="425 2nd Street", city="San Francisco", state="CA", zip_code="94107", street_2="Suite 602") # Handle response print(res) @@ -45,7 +45,7 @@ with Gusto( | `street_1` | *str* | :heavy_check_mark: | N/A | | `city` | *str* | :heavy_check_mark: | N/A | | `state` | *str* | :heavy_check_mark: | N/A | -| `zip` | *str* | :heavy_check_mark: | N/A | +| `zip_code` | *str* | :heavy_check_mark: | N/A | | `x_gusto_api_version` | [Optional[models.VersionHeader]](../../models/versionheader.md) | :heavy_minus_sign: | Determines the date-based API version associated with your API call. If none is provided, your application's [minimum API version](https://docs.gusto.com/embedded-payroll/docs/api-versioning#minimum-api-version) is used. | | `street_2` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `mailing_address` | *Optional[bool]* | :heavy_minus_sign: | Specify if this location is the company's mailing address. | @@ -165,7 +165,7 @@ with Gusto( company_access_auth=os.getenv("GUSTO_COMPANY_ACCESS_AUTH", ""), ) as g_client: - res = g_client.locations.put_v1_locations_location_id(location_id="", version="1928d0c378e519e9c03fb959bc959a6b", phone_number="8009360383", street_1="425 2nd Street", street_2="Suite 602", city="San Francisco", state="CA", zip="94107", country="USA") + res = g_client.locations.put_v1_locations_location_id(location_id="", version="1928d0c378e519e9c03fb959bc959a6b", phone_number="8009360383", street_1="425 2nd Street", street_2="Suite 602", city="San Francisco", state="CA", zip_code="94107", country="USA") # Handle response print(res) @@ -184,7 +184,7 @@ with Gusto( | `street_2` | *OptionalNullable[str]* | :heavy_minus_sign: | N/A | | `city` | *Optional[str]* | :heavy_minus_sign: | N/A | | `state` | *Optional[str]* | :heavy_minus_sign: | N/A | -| `zip` | *Optional[str]* | :heavy_minus_sign: | N/A | +| `zip_code` | *Optional[str]* | :heavy_minus_sign: | N/A | | `country` | *Optional[str]* | :heavy_minus_sign: | N/A | | `mailing_address` | *Optional[bool]* | :heavy_minus_sign: | For a company location, specify if this location is the company's mailing address. A company has a single mailing address, so this designation will override any previous selection. | | `filing_address` | *Optional[bool]* | :heavy_minus_sign: | For a company location, specify if this location is the company's filing address. A company has a single filing address, so this designation will override any previous selection. | diff --git a/gusto_embedded/docs/sdks/signatories/README.md b/gusto_embedded/docs/sdks/signatories/README.md index 2a9f1937..a388601f 100644 --- a/gusto_embedded/docs/sdks/signatories/README.md +++ b/gusto_embedded/docs/sdks/signatories/README.md @@ -33,7 +33,7 @@ with Gusto( "street_1": "", "city": "North Lilly", "state": "North Carolina", - "zip": "05065", + "zip_code": "05065", }) # Handle response diff --git a/gusto_embedded/poetry.lock b/gusto_embedded/poetry.lock new file mode 100644 index 00000000..47df8dad --- /dev/null +++ b/gusto_embedded/poetry.lock @@ -0,0 +1,617 @@ +# This file is automatically @generated by Poetry 2.0.1 and should not be changed by hand. + +[[package]] +name = "annotated-types" +version = "0.7.0" +description = "Reusable constraint types to use with typing.Annotated" +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53"}, + {file = "annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89"}, +] + +[[package]] +name = "anyio" +version = "4.8.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.9" +groups = ["main"] +files = [ + {file = "anyio-4.8.0-py3-none-any.whl", hash = "sha256:b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a"}, + {file = "anyio-4.8.0.tar.gz", hash = "sha256:1d9fe889df5212298c0c0723fa20479d1b94883a2df44bd3897aa91083316f7a"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} + +[package.extras] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] +trio = ["trio (>=0.26.1)"] + +[[package]] +name = "astroid" +version = "3.2.4" +description = "An abstract syntax tree for Python with inference support." +optional = false +python-versions = ">=3.8.0" +groups = ["dev"] +files = [ + {file = "astroid-3.2.4-py3-none-any.whl", hash = "sha256:413658a61eeca6202a59231abb473f932038fbcbf1666587f66d482083413a25"}, + {file = "astroid-3.2.4.tar.gz", hash = "sha256:0e14202810b30da1b735827f78f5157be2bbd4a7a59b7707ca0bfc2fb4c0063a"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "certifi" +version = "2025.1.31" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "certifi-2025.1.31-py3-none-any.whl", hash = "sha256:ca78db4565a652026a4db2bcdf68f2fb589ea80d0be70e03929ed730746b84fe"}, + {file = "certifi-2025.1.31.tar.gz", hash = "sha256:3d5da6925056f6f18f119200434a4780a94263f10d1c21d032a6f6b2baa20651"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +groups = ["dev"] +markers = "sys_platform == \"win32\"" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "dill" +version = "0.3.9" +description = "serialize all of Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "dill-0.3.9-py3-none-any.whl", hash = "sha256:468dff3b89520b474c0397703366b7b95eebe6303f108adf9b19da1f702be87a"}, + {file = "dill-0.3.9.tar.gz", hash = "sha256:81aa267dddf68cbfe8029c42ca9ec6a4ab3b22371d1c450abc54422577b4512c"}, +] + +[package.extras] +graph = ["objgraph (>=1.7.2)"] +profile = ["gprof2dot (>=2022.7.29)"] + +[[package]] +name = "eval-type-backport" +version = "0.2.2" +description = "Like `typing._eval_type`, but lets older Python versions use newer typing features." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "eval_type_backport-0.2.2-py3-none-any.whl", hash = "sha256:cb6ad7c393517f476f96d456d0412ea80f0a8cf96f6892834cd9340149111b0a"}, + {file = "eval_type_backport-0.2.2.tar.gz", hash = "sha256:f0576b4cf01ebb5bd358d02314d31846af5e07678387486e2c798af0e7d849c1"}, +] + +[package.extras] +tests = ["pytest"] + +[[package]] +name = "exceptiongroup" +version = "1.2.2" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +groups = ["main"] +markers = "python_version < \"3.11\"" +files = [ + {file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"}, + {file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.7" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpcore-1.0.7-py3-none-any.whl", hash = "sha256:a3fff8f43dc260d5bd363d9f9cf1830fa3a458b332856f34282de498ed420edd"}, + {file = "httpcore-1.0.7.tar.gz", hash = "sha256:8551cb62a169ec7162ac7be8d4817d561f60e08eaa485234898414bb5a8a0b4c"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<1.0)"] + +[[package]] +name = "httpx" +version = "0.28.1" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +groups = ["main"] +files = [ + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "idna" +version = "3.10" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.6" +groups = ["main"] +files = [ + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, +] + +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + +[[package]] +name = "isort" +version = "5.13.2" +description = "A Python utility / library to sort Python imports." +optional = false +python-versions = ">=3.8.0" +groups = ["dev"] +files = [ + {file = "isort-5.13.2-py3-none-any.whl", hash = "sha256:8ca5e72a8d85860d5a3fa69b8745237f2939afe12dbf656afbcb47fe72d947a6"}, + {file = "isort-5.13.2.tar.gz", hash = "sha256:48fdfcb9face5d58a4f6dde2e72a1fb8dcaf8ab26f95ab49fab84c2ddefb0109"}, +] + +[package.extras] +colors = ["colorama (>=0.4.6)"] + +[[package]] +name = "mccabe" +version = "0.7.0" +description = "McCabe checker, plugin for flake8" +optional = false +python-versions = ">=3.6" +groups = ["dev"] +files = [ + {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"}, + {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"}, +] + +[[package]] +name = "mypy" +version = "1.14.1" +description = "Optional static typing for Python" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "mypy-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:52686e37cf13d559f668aa398dd7ddf1f92c5d613e4f8cb262be2fb4fedb0fcb"}, + {file = "mypy-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fb545ca340537d4b45d3eecdb3def05e913299ca72c290326be19b3804b39c0"}, + {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:90716d8b2d1f4cd503309788e51366f07c56635a3309b0f6a32547eaaa36a64d"}, + {file = "mypy-1.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ae753f5c9fef278bcf12e1a564351764f2a6da579d4a81347e1d5a15819997b"}, + {file = "mypy-1.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0fe0f5feaafcb04505bcf439e991c6d8f1bf8b15f12b05feeed96e9e7bf1427"}, + {file = "mypy-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:7d54bd85b925e501c555a3227f3ec0cfc54ee8b6930bd6141ec872d1c572f81f"}, + {file = "mypy-1.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f995e511de847791c3b11ed90084a7a0aafdc074ab88c5a9711622fe4751138c"}, + {file = "mypy-1.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d64169ec3b8461311f8ce2fd2eb5d33e2d0f2c7b49116259c51d0d96edee48d1"}, + {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba24549de7b89b6381b91fbc068d798192b1b5201987070319889e93038967a8"}, + {file = "mypy-1.14.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:183cf0a45457d28ff9d758730cd0210419ac27d4d3f285beda038c9083363b1f"}, + {file = "mypy-1.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f2a0ecc86378f45347f586e4163d1769dd81c5a223d577fe351f26b179e148b1"}, + {file = "mypy-1.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:ad3301ebebec9e8ee7135d8e3109ca76c23752bac1e717bc84cd3836b4bf3eae"}, + {file = "mypy-1.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:30ff5ef8519bbc2e18b3b54521ec319513a26f1bba19a7582e7b1f58a6e69f14"}, + {file = "mypy-1.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb9f255c18052343c70234907e2e532bc7e55a62565d64536dbc7706a20b78b9"}, + {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8b4e3413e0bddea671012b063e27591b953d653209e7a4fa5e48759cda77ca11"}, + {file = "mypy-1.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:553c293b1fbdebb6c3c4030589dab9fafb6dfa768995a453d8a5d3b23784af2e"}, + {file = "mypy-1.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fad79bfe3b65fe6a1efaed97b445c3d37f7be9fdc348bdb2d7cac75579607c89"}, + {file = "mypy-1.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:8fa2220e54d2946e94ab6dbb3ba0a992795bd68b16dc852db33028df2b00191b"}, + {file = "mypy-1.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:92c3ed5afb06c3a8e188cb5da4984cab9ec9a77ba956ee419c68a388b4595255"}, + {file = "mypy-1.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:dbec574648b3e25f43d23577309b16534431db4ddc09fda50841f1e34e64ed34"}, + {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8c6d94b16d62eb3e947281aa7347d78236688e21081f11de976376cf010eb31a"}, + {file = "mypy-1.14.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d4b19b03fdf54f3c5b2fa474c56b4c13c9dbfb9a2db4370ede7ec11a2c5927d9"}, + {file = "mypy-1.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0c911fde686394753fff899c409fd4e16e9b294c24bfd5e1ea4675deae1ac6fd"}, + {file = "mypy-1.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:8b21525cb51671219f5307be85f7e646a153e5acc656e5cebf64bfa076c50107"}, + {file = "mypy-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7084fb8f1128c76cd9cf68fe5971b37072598e7c31b2f9f95586b65c741a9d31"}, + {file = "mypy-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8f845a00b4f420f693f870eaee5f3e2692fa84cc8514496114649cfa8fd5e2c6"}, + {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44bf464499f0e3a2d14d58b54674dee25c031703b2ffc35064bd0df2e0fac319"}, + {file = "mypy-1.14.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c99f27732c0b7dc847adb21c9d47ce57eb48fa33a17bc6d7d5c5e9f9e7ae5bac"}, + {file = "mypy-1.14.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:bce23c7377b43602baa0bd22ea3265c49b9ff0b76eb315d6c34721af4cdf1d9b"}, + {file = "mypy-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:8edc07eeade7ebc771ff9cf6b211b9a7d93687ff892150cb5692e4f4272b0837"}, + {file = "mypy-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3888a1816d69f7ab92092f785a462944b3ca16d7c470d564165fe703b0970c35"}, + {file = "mypy-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:46c756a444117c43ee984bd055db99e498bc613a70bbbc120272bd13ca579fbc"}, + {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:27fc248022907e72abfd8e22ab1f10e903915ff69961174784a3900a8cba9ad9"}, + {file = "mypy-1.14.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:499d6a72fb7e5de92218db961f1a66d5f11783f9ae549d214617edab5d4dbdbb"}, + {file = "mypy-1.14.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:57961db9795eb566dc1d1b4e9139ebc4c6b0cb6e7254ecde69d1552bf7613f60"}, + {file = "mypy-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:07ba89fdcc9451f2ebb02853deb6aaaa3d2239a236669a63ab3801bbf923ef5c"}, + {file = "mypy-1.14.1-py3-none-any.whl", hash = "sha256:b66a60cc4073aeb8ae00057f9c1f64d49e90f918fbcef9a977eb121da8b8f1d1"}, + {file = "mypy-1.14.1.tar.gz", hash = "sha256:7ec88144fe9b510e8475ec2f5f251992690fcf89ccb4500b214b4226abcd32d6"}, +] + +[package.dependencies] +mypy_extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing_extensions = ">=4.6.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +faster-cache = ["orjson"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +groups = ["main", "dev"] +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "platformdirs" +version = "4.3.6" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, +] + +[package.extras] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] + +[[package]] +name = "pydantic" +version = "2.10.6" +description = "Data validation using Python type hints" +optional = false +python-versions = ">=3.8" +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"}, +] + +[package.dependencies] +annotated-types = ">=0.6.0" +pydantic-core = "2.27.2" +typing-extensions = ">=4.12.2" + +[package.extras] +email = ["email-validator (>=2.0.0)"] +timezone = ["tzdata"] + +[[package]] +name = "pydantic-core" +version = "2.27.2" +description = "Core functionality for Pydantic validation and serialization" +optional = false +python-versions = ">=3.8" +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"}, +] + +[package.dependencies] +typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" + +[[package]] +name = "pylint" +version = "3.2.3" +description = "python code static checker" +optional = false +python-versions = ">=3.8.0" +groups = ["dev"] +files = [ + {file = "pylint-3.2.3-py3-none-any.whl", hash = "sha256:b3d7d2708a3e04b4679e02d99e72329a8b7ee8afb8d04110682278781f889fa8"}, + {file = "pylint-3.2.3.tar.gz", hash = "sha256:02f6c562b215582386068d52a30f520d84fdbcf2a95fc7e855b816060d048b60"}, +] + +[package.dependencies] +astroid = ">=3.2.2,<=3.3.0-dev0" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +dill = [ + {version = ">=0.2", markers = "python_version < \"3.11\""}, + {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, + {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, +] +isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" +mccabe = ">=0.6,<0.8" +platformdirs = ">=2.2.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +tomlkit = ">=0.10.1" +typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""} + +[package.extras] +spelling = ["pyenchant (>=3.2,<4.0)"] +testutils = ["gitpython (>3)"] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +files = [ + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "six" +version = "1.17.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +groups = ["main"] +files = [ + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +groups = ["main"] +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "tomli" +version = "2.2.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +markers = "python_version < \"3.11\"" +files = [ + {file = "tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249"}, + {file = "tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee"}, + {file = "tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106"}, + {file = "tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8"}, + {file = "tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff"}, + {file = "tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea"}, + {file = "tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222"}, + {file = "tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd"}, + {file = "tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e"}, + {file = "tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98"}, + {file = "tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7"}, + {file = "tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281"}, + {file = "tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2"}, + {file = "tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744"}, + {file = "tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec"}, + {file = "tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69"}, + {file = "tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc"}, + {file = "tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff"}, +] + +[[package]] +name = "tomlkit" +version = "0.13.2" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.8" +groups = ["dev"] +files = [ + {file = "tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde"}, + {file = "tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79"}, +] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20241206" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.8" +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"}, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +groups = ["main", "dev"] +files = [ + {file = "typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d"}, + {file = "typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"}, +] + +[[package]] +name = "typing-inspect" +version = "0.9.0" +description = "Runtime inspection utilities for typing module." +optional = false +python-versions = "*" +groups = ["main"] +files = [ + {file = "typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f"}, + {file = "typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78"}, +] + +[package.dependencies] +mypy-extensions = ">=0.3.0" +typing-extensions = ">=3.7.4" + +[metadata] +lock-version = "2.1" +python-versions = ">=3.9" +content-hash = "1f0dcb22a1bf4d933c50fbaab2e7f694592f680adf1171c2dc13507e4259a9c0" diff --git a/gusto_embedded/pyproject.toml b/gusto_embedded/pyproject.toml index 7e52c4dc..50fafcd0 100644 --- a/gusto_embedded/pyproject.toml +++ b/gusto_embedded/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "gusto" -version = "0.0.4" +version = "0.0.5" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Speakeasy" },] readme = "README-PYPI.md" @@ -14,6 +14,7 @@ dependencies = [ ] [tool.poetry] +repository = "https://github.com/Gusto/gusto-python-client.git" packages = [ { include = "gusto", from = "src" } ] diff --git a/gusto_embedded/scripts/prepare-readme.py b/gusto_embedded/scripts/prepare-readme.py index 825d9ded..5005e80a 100644 --- a/gusto_embedded/scripts/prepare-readme.py +++ b/gusto_embedded/scripts/prepare-readme.py @@ -1,9 +1,33 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +import re import shutil try: - shutil.copyfile("README.md", "README-PYPI.md") + with open("README.md", "r") as rh: + readme_contents = rh.read() + GITHUB_URL = "https://github.com/Gusto/gusto-python-client.git" + GITHUB_URL = ( + GITHUB_URL[: -len(".git")] if GITHUB_URL.endswith(".git") else GITHUB_URL + ) + # links on PyPI should have absolute URLs + readme_contents = re.sub( + r"(\[[^\]]+\]\()((?!https?:)[^\)]+)(\))", + lambda m: m.group(1) + + GITHUB_URL + + "/blob/master/" + + m.group(2) + + m.group(3), + readme_contents, + ) + + with open("README-PYPI.md", "w") as wh: + wh.write(readme_contents) except Exception as e: - print("Failed to copy README.md to README-PYPI.md") - print(e) + try: + print("Failed to rewrite README.md to README-PYPI.md, copying original instead") + print(e) + shutil.copyfile("README.md", "README-PYPI.md") + except Exception as e: + print("Failed to copy README.md to README-PYPI.md") + print(e) diff --git a/gusto_embedded/src/gusto/_version.py b/gusto_embedded/src/gusto/_version.py index d1865cf2..a6bf2a9f 100644 --- a/gusto_embedded/src/gusto/_version.py +++ b/gusto_embedded/src/gusto/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "gusto" -__version__: str = "0.0.4" +__version__: str = "0.0.5" __openapi_doc_version__: str = "2024-04-01" __gen_version__: str = "2.506.0" -__user_agent__: str = "speakeasy-sdk/python 0.0.4 2.506.0 2024-04-01 gusto" +__user_agent__: str = "speakeasy-sdk/python 0.0.5 2.506.0 2024-04-01 gusto" try: if __package__ is not None: diff --git a/gusto_embedded/src/gusto/contractors.py b/gusto_embedded/src/gusto/contractors.py index 23b366a5..b9081e04 100644 --- a/gusto_embedded/src/gusto/contractors.py +++ b/gusto_embedded/src/gusto/contractors.py @@ -1949,7 +1949,7 @@ def put_v1_contractors_contractor_uuid_address( street_2: Optional[str] = None, city: Optional[str] = None, state: Optional[str] = None, - zip: Optional[str] = None, + zip_code: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -1968,7 +1968,7 @@ def put_v1_contractors_contractor_uuid_address( :param street_2: :param city: :param state: - :param zip: + :param zip_code: :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -1991,7 +1991,7 @@ def put_v1_contractors_contractor_uuid_address( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, ), ) @@ -2077,7 +2077,7 @@ async def put_v1_contractors_contractor_uuid_address_async( street_2: Optional[str] = None, city: Optional[str] = None, state: Optional[str] = None, - zip: Optional[str] = None, + zip_code: Optional[str] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -2096,7 +2096,7 @@ async def put_v1_contractors_contractor_uuid_address_async( :param street_2: :param city: :param state: - :param zip: + :param zip_code: :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method :param timeout_ms: Override the default request timeout configuration for this method in milliseconds @@ -2119,7 +2119,7 @@ async def put_v1_contractors_contractor_uuid_address_async( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, ), ) diff --git a/gusto_embedded/src/gusto/employee_addresses.py b/gusto_embedded/src/gusto/employee_addresses.py index df1a1c71..07f7d252 100644 --- a/gusto_embedded/src/gusto/employee_addresses.py +++ b/gusto_embedded/src/gusto/employee_addresses.py @@ -213,7 +213,7 @@ def post_v1_employees_employee_id_home_addresses( street_2: OptionalNullable[str] = UNSET, city: Optional[str] = None, state: Optional[str] = None, - zip: Optional[str] = None, + zip_code: Optional[str] = None, effective_date: Optional[date] = None, courtesy_withholding: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -235,7 +235,7 @@ def post_v1_employees_employee_id_home_addresses( :param street_2: :param city: :param state: - :param zip: + :param zip_code: :param effective_date: :param courtesy_withholding: :param retries: Override the default retry configuration for this method @@ -259,7 +259,7 @@ def post_v1_employees_employee_id_home_addresses( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, effective_date=effective_date, courtesy_withholding=courtesy_withholding, ), @@ -346,7 +346,7 @@ async def post_v1_employees_employee_id_home_addresses_async( street_2: OptionalNullable[str] = UNSET, city: Optional[str] = None, state: Optional[str] = None, - zip: Optional[str] = None, + zip_code: Optional[str] = None, effective_date: Optional[date] = None, courtesy_withholding: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -368,7 +368,7 @@ async def post_v1_employees_employee_id_home_addresses_async( :param street_2: :param city: :param state: - :param zip: + :param zip_code: :param effective_date: :param courtesy_withholding: :param retries: Override the default retry configuration for this method @@ -392,7 +392,7 @@ async def post_v1_employees_employee_id_home_addresses_async( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, effective_date=effective_date, courtesy_withholding=courtesy_withholding, ), diff --git a/gusto_embedded/src/gusto/homeaddresses.py b/gusto_embedded/src/gusto/homeaddresses.py index e4998b7c..85ea676d 100644 --- a/gusto_embedded/src/gusto/homeaddresses.py +++ b/gusto_embedded/src/gusto/homeaddresses.py @@ -20,7 +20,7 @@ def update( street_2: OptionalNullable[str] = UNSET, city: Optional[str] = None, state: Optional[str] = None, - zip: Optional[str] = None, + zip_code: Optional[str] = None, effective_date: Optional[date] = None, courtesy_withholding: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -43,7 +43,7 @@ def update( :param street_2: :param city: :param state: - :param zip: + :param zip_code: :param effective_date: :param courtesy_withholding: :param retries: Override the default retry configuration for this method @@ -68,7 +68,7 @@ def update( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, effective_date=effective_date, courtesy_withholding=courtesy_withholding, ), @@ -156,7 +156,7 @@ async def update_async( street_2: OptionalNullable[str] = UNSET, city: Optional[str] = None, state: Optional[str] = None, - zip: Optional[str] = None, + zip_code: Optional[str] = None, effective_date: Optional[date] = None, courtesy_withholding: Optional[bool] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, @@ -179,7 +179,7 @@ async def update_async( :param street_2: :param city: :param state: - :param zip: + :param zip_code: :param effective_date: :param courtesy_withholding: :param retries: Override the default retry configuration for this method @@ -204,7 +204,7 @@ async def update_async( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, effective_date=effective_date, courtesy_withholding=courtesy_withholding, ), diff --git a/gusto_embedded/src/gusto/locations.py b/gusto_embedded/src/gusto/locations.py index 52c5e2fd..5f2447c2 100644 --- a/gusto_embedded/src/gusto/locations.py +++ b/gusto_embedded/src/gusto/locations.py @@ -17,7 +17,7 @@ def post_v1_companies_company_id_locations( street_1: str, city: str, state: str, - zip: str, + zip_code: str, x_gusto_api_version: Optional[models.VersionHeader] = None, street_2: OptionalNullable[str] = UNSET, mailing_address: Optional[bool] = None, @@ -40,7 +40,7 @@ def post_v1_companies_company_id_locations( :param street_1: :param city: :param state: - :param zip: + :param zip_code: :param x_gusto_api_version: Determines the date-based API version associated with your API call. If none is provided, your application's [minimum API version](https://docs.gusto.com/embedded-payroll/docs/api-versioning#minimum-api-version) is used. :param street_2: :param mailing_address: Specify if this location is the company's mailing address. @@ -67,7 +67,7 @@ def post_v1_companies_company_id_locations( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, mailing_address=mailing_address, filing_address=filing_address, ), @@ -153,7 +153,7 @@ async def post_v1_companies_company_id_locations_async( street_1: str, city: str, state: str, - zip: str, + zip_code: str, x_gusto_api_version: Optional[models.VersionHeader] = None, street_2: OptionalNullable[str] = UNSET, mailing_address: Optional[bool] = None, @@ -176,7 +176,7 @@ async def post_v1_companies_company_id_locations_async( :param street_1: :param city: :param state: - :param zip: + :param zip_code: :param x_gusto_api_version: Determines the date-based API version associated with your API call. If none is provided, your application's [minimum API version](https://docs.gusto.com/embedded-payroll/docs/api-versioning#minimum-api-version) is used. :param street_2: :param mailing_address: Specify if this location is the company's mailing address. @@ -203,7 +203,7 @@ async def post_v1_companies_company_id_locations_async( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, mailing_address=mailing_address, filing_address=filing_address, ), @@ -688,7 +688,7 @@ def put_v1_locations_location_id( street_2: OptionalNullable[str] = UNSET, city: Optional[str] = None, state: Optional[str] = None, - zip: Optional[str] = None, + zip_code: Optional[str] = None, country: Optional[str] = None, mailing_address: Optional[bool] = None, filing_address: Optional[bool] = None, @@ -711,7 +711,7 @@ def put_v1_locations_location_id( :param street_2: :param city: :param state: - :param zip: + :param zip_code: :param country: :param mailing_address: For a company location, specify if this location is the company's mailing address. A company has a single mailing address, so this designation will override any previous selection. :param filing_address: For a company location, specify if this location is the company's filing address. A company has a single filing address, so this designation will override any previous selection. @@ -738,7 +738,7 @@ def put_v1_locations_location_id( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, country=country, mailing_address=mailing_address, filing_address=filing_address, @@ -828,7 +828,7 @@ async def put_v1_locations_location_id_async( street_2: OptionalNullable[str] = UNSET, city: Optional[str] = None, state: Optional[str] = None, - zip: Optional[str] = None, + zip_code: Optional[str] = None, country: Optional[str] = None, mailing_address: Optional[bool] = None, filing_address: Optional[bool] = None, @@ -851,7 +851,7 @@ async def put_v1_locations_location_id_async( :param street_2: :param city: :param state: - :param zip: + :param zip_code: :param country: :param mailing_address: For a company location, specify if this location is the company's mailing address. A company has a single mailing address, so this designation will override any previous selection. :param filing_address: For a company location, specify if this location is the company's filing address. A company has a single filing address, so this designation will override any previous selection. @@ -878,7 +878,7 @@ async def put_v1_locations_location_id_async( street_2=street_2, city=city, state=state, - zip=zip, + zip_code=zip_code, country=country, mailing_address=mailing_address, filing_address=filing_address, diff --git a/gusto_embedded/src/gusto/models/post_v1_companies_company_id_locationsop.py b/gusto_embedded/src/gusto/models/post_v1_companies_company_id_locationsop.py index 012d01e2..d96595ad 100644 --- a/gusto_embedded/src/gusto/models/post_v1_companies_company_id_locationsop.py +++ b/gusto_embedded/src/gusto/models/post_v1_companies_company_id_locationsop.py @@ -22,7 +22,7 @@ class PostV1CompaniesCompanyIDLocationsRequestBodyTypedDict(TypedDict): street_1: str city: str state: str - zip: str + zip_code: str street_2: NotRequired[Nullable[str]] mailing_address: NotRequired[bool] r"""Specify if this location is the company's mailing address.""" @@ -41,7 +41,7 @@ class PostV1CompaniesCompanyIDLocationsRequestBody(BaseModel): state: str - zip: str + zip_code: Annotated[str, pydantic.Field(alias="zip")] street_2: OptionalNullable[str] = UNSET diff --git a/gusto_embedded/src/gusto/models/post_v1_company_signatoriesop.py b/gusto_embedded/src/gusto/models/post_v1_company_signatoriesop.py index 035cf6a2..93fb548a 100644 --- a/gusto_embedded/src/gusto/models/post_v1_company_signatoriesop.py +++ b/gusto_embedded/src/gusto/models/post_v1_company_signatoriesop.py @@ -20,7 +20,7 @@ class PostV1CompanySignatoriesHomeAddressTypedDict(TypedDict): street_1: str city: str state: str - zip: str + zip_code: str street_2: NotRequired[str] @@ -33,7 +33,7 @@ class PostV1CompanySignatoriesHomeAddress(BaseModel): state: str - zip: str + zip_code: Annotated[str, pydantic.Field(alias="zip")] street_2: Optional[str] = None diff --git a/gusto_embedded/src/gusto/models/post_v1_employees_employee_id_home_addressesop.py b/gusto_embedded/src/gusto/models/post_v1_employees_employee_id_home_addressesop.py index 228efa6b..e8db088c 100644 --- a/gusto_embedded/src/gusto/models/post_v1_employees_employee_id_home_addressesop.py +++ b/gusto_embedded/src/gusto/models/post_v1_employees_employee_id_home_addressesop.py @@ -21,7 +21,7 @@ class PostV1EmployeesEmployeeIDHomeAddressesRequestBodyTypedDict(TypedDict): street_2: NotRequired[Nullable[str]] city: NotRequired[str] state: NotRequired[str] - zip: NotRequired[str] + zip_code: NotRequired[str] effective_date: NotRequired[date] courtesy_withholding: NotRequired[bool] @@ -35,7 +35,7 @@ class PostV1EmployeesEmployeeIDHomeAddressesRequestBody(BaseModel): state: Optional[str] = None - zip: Optional[str] = None + zip_code: Annotated[Optional[str], pydantic.Field(alias="zip")] = None effective_date: Optional[date] = None @@ -48,7 +48,7 @@ def serialize_model(self, handler): "street_2", "city", "state", - "zip", + "zip_code", "effective_date", "courtesy_withholding", ] diff --git a/gusto_embedded/src/gusto/models/put_v1_companies_company_uuid_signatories_signatory_uuidop.py b/gusto_embedded/src/gusto/models/put_v1_companies_company_uuid_signatories_signatory_uuidop.py index 4c2afeaa..a008f13e 100644 --- a/gusto_embedded/src/gusto/models/put_v1_companies_company_uuid_signatories_signatory_uuidop.py +++ b/gusto_embedded/src/gusto/models/put_v1_companies_company_uuid_signatories_signatory_uuidop.py @@ -19,7 +19,7 @@ class PutV1CompaniesCompanyUUIDSignatoriesSignatoryUUIDHomeAddressTypedDict(Type street_2: NotRequired[str] city: NotRequired[str] state: NotRequired[str] - zip: NotRequired[str] + zip_code: NotRequired[str] class PutV1CompaniesCompanyUUIDSignatoriesSignatoryUUIDHomeAddress(BaseModel): @@ -31,7 +31,7 @@ class PutV1CompaniesCompanyUUIDSignatoriesSignatoryUUIDHomeAddress(BaseModel): state: Optional[str] = None - zip: Optional[str] = None + zip_code: Annotated[Optional[str], pydantic.Field(alias="zip")] = None class PutV1CompaniesCompanyUUIDSignatoriesSignatoryUUIDRequestBodyTypedDict(TypedDict): diff --git a/gusto_embedded/src/gusto/models/put_v1_contractors_contractor_uuid_addressop.py b/gusto_embedded/src/gusto/models/put_v1_contractors_contractor_uuid_addressop.py index c400c2a4..cc5da29d 100644 --- a/gusto_embedded/src/gusto/models/put_v1_contractors_contractor_uuid_addressop.py +++ b/gusto_embedded/src/gusto/models/put_v1_contractors_contractor_uuid_addressop.py @@ -21,7 +21,7 @@ class PutV1ContractorsContractorUUIDAddressRequestBodyTypedDict(TypedDict): street_2: NotRequired[str] city: NotRequired[str] state: NotRequired[str] - zip: NotRequired[str] + zip_code: NotRequired[str] class PutV1ContractorsContractorUUIDAddressRequestBody(BaseModel): @@ -36,7 +36,7 @@ class PutV1ContractorsContractorUUIDAddressRequestBody(BaseModel): state: Optional[str] = None - zip: Optional[str] = None + zip_code: Annotated[Optional[str], pydantic.Field(alias="zip")] = None class PutV1ContractorsContractorUUIDAddressRequestTypedDict(TypedDict): diff --git a/gusto_embedded/src/gusto/models/put_v1_home_addresses_home_address_uuidop.py b/gusto_embedded/src/gusto/models/put_v1_home_addresses_home_address_uuidop.py index bccbcfd1..054b26ca 100644 --- a/gusto_embedded/src/gusto/models/put_v1_home_addresses_home_address_uuidop.py +++ b/gusto_embedded/src/gusto/models/put_v1_home_addresses_home_address_uuidop.py @@ -23,7 +23,7 @@ class PutV1HomeAddressesHomeAddressUUIDRequestBodyTypedDict(TypedDict): street_2: NotRequired[Nullable[str]] city: NotRequired[str] state: NotRequired[str] - zip: NotRequired[str] + zip_code: NotRequired[str] effective_date: NotRequired[date] courtesy_withholding: NotRequired[bool] @@ -40,7 +40,7 @@ class PutV1HomeAddressesHomeAddressUUIDRequestBody(BaseModel): state: Optional[str] = None - zip: Optional[str] = None + zip_code: Annotated[Optional[str], pydantic.Field(alias="zip")] = None effective_date: Optional[date] = None @@ -53,7 +53,7 @@ def serialize_model(self, handler): "street_2", "city", "state", - "zip", + "zip_code", "effective_date", "courtesy_withholding", ] diff --git a/gusto_embedded/src/gusto/models/put_v1_locations_location_idop.py b/gusto_embedded/src/gusto/models/put_v1_locations_location_idop.py index 493d8eaf..e5bb85b7 100644 --- a/gusto_embedded/src/gusto/models/put_v1_locations_location_idop.py +++ b/gusto_embedded/src/gusto/models/put_v1_locations_location_idop.py @@ -25,7 +25,7 @@ class PutV1LocationsLocationIDRequestBodyTypedDict(TypedDict): street_2: NotRequired[Nullable[str]] city: NotRequired[str] state: NotRequired[str] - zip: NotRequired[str] + zip_code: NotRequired[str] country: NotRequired[str] mailing_address: NotRequired[bool] r"""For a company location, specify if this location is the company's mailing address. A company has a single mailing address, so this designation will override any previous selection.""" @@ -49,7 +49,7 @@ class PutV1LocationsLocationIDRequestBody(BaseModel): state: Optional[str] = None - zip: Optional[str] = None + zip_code: Annotated[Optional[str], pydantic.Field(alias="zip")] = None country: Optional[str] = None @@ -67,7 +67,7 @@ def serialize_model(self, handler): "street_2", "city", "state", - "zip", + "zip_code", "country", "mailing_address", "filing_address",