diff --git a/huntflow_api_client/api.py b/huntflow_api_client/api.py
index fc1d1e5..22e5397 100644
--- a/huntflow_api_client/api.py
+++ b/huntflow_api_client/api.py
@@ -57,6 +57,7 @@ async def request( # type: ignore[no-untyped-def]
data=None,
files=None,
json=None,
+ content=None,
params=None,
headers=None,
timeout=None,
@@ -68,6 +69,7 @@ async def request( # type: ignore[no-untyped-def]
data=data,
files=files,
json=json,
+ content=content,
params=params,
headers=headers,
timeout=timeout,
@@ -78,6 +80,7 @@ async def request( # type: ignore[no-untyped-def]
data=data,
files=files,
json=json,
+ content=content,
params=params,
headers=headers,
timeout=timeout,
@@ -91,6 +94,7 @@ async def _request( # type: ignore[no-untyped-def]
data=None,
files=None,
json=None,
+ content=None,
params=None,
headers=None,
timeout=None,
@@ -104,6 +108,7 @@ async def _request( # type: ignore[no-untyped-def]
data=data,
files=files,
json=json,
+ content=content,
params=params,
headers=headers,
timeout=timeout,
diff --git a/huntflow_api_client/entities/account_offers.py b/huntflow_api_client/entities/account_offers.py
index 501a29a..813d4b0 100644
--- a/huntflow_api_client/entities/account_offers.py
+++ b/huntflow_api_client/entities/account_offers.py
@@ -15,7 +15,7 @@ async def list(self, account_id: int) -> AccountOffersListResponse:
:return: List of organization's offers
"""
response = await self._api.request("GET", f"/accounts/{account_id}/offers")
- return AccountOffersListResponse.parse_obj(response.json())
+ return AccountOffersListResponse.model_validate(response.json())
async def get(self, account_id: int, offer_id: int) -> AccountOfferResponse:
"""
@@ -28,4 +28,4 @@ async def get(self, account_id: int, offer_id: int) -> AccountOfferResponse:
:return: Organization's offer with a schema of values
"""
response = await self._api.request("GET", f"/accounts/{account_id}/offers/{offer_id}")
- return AccountOfferResponse.parse_obj(response.json())
+ return AccountOfferResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/account_vacancy_request.py b/huntflow_api_client/entities/account_vacancy_request.py
index 671c9a2..bede0ba 100644
--- a/huntflow_api_client/entities/account_vacancy_request.py
+++ b/huntflow_api_client/entities/account_vacancy_request.py
@@ -24,7 +24,7 @@ async def list(
"only_active": only_active,
}
response = await self._api.request("GET", path, params=params)
- return AccountVacancyRequestsListResponse.parse_obj(response.json())
+ return AccountVacancyRequestsListResponse.model_validate(response.json())
async def get(
self,
@@ -41,4 +41,4 @@ async def get(
"""
path = f"/accounts/{account_id}/account_vacancy_requests/{account_vacancy_request_id}"
response = await self._api.request("GET", path)
- return AccountVacancyRequestResponse.parse_obj(response.json())
+ return AccountVacancyRequestResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/accounts.py b/huntflow_api_client/entities/accounts.py
index f95cecd..fd9585a 100644
--- a/huntflow_api_client/entities/accounts.py
+++ b/huntflow_api_client/entities/accounts.py
@@ -14,7 +14,7 @@ async def get_current_user(self) -> MeResponse:
:return: Information about the current user
"""
response = await self._api.request("GET", "/me")
- return MeResponse.parse_obj(response.json())
+ return MeResponse.model_validate(response.json())
async def list(self) -> OrganizationsListResponse:
"""
@@ -24,7 +24,7 @@ async def list(self) -> OrganizationsListResponse:
associated with the passed authentication
"""
response = await self._api.request("GET", "/accounts")
- return OrganizationsListResponse.parse_obj(response.json())
+ return OrganizationsListResponse.model_validate(response.json())
async def get(self, account_id: int) -> OrganizationInfoResponse:
"""
@@ -34,4 +34,4 @@ async def get(self, account_id: int) -> OrganizationInfoResponse:
:return: Information about the specified organization
"""
response = await self._api.request("GET", f"/accounts/{account_id}")
- return OrganizationInfoResponse.parse_obj(response.json())
+ return OrganizationInfoResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/action_logs.py b/huntflow_api_client/entities/action_logs.py
index a325147..453285d 100644
--- a/huntflow_api_client/entities/action_logs.py
+++ b/huntflow_api_client/entities/action_logs.py
@@ -38,4 +38,4 @@ async def list(
f"/accounts/{account_id}/action_logs",
params=params,
)
- return ActionLogsResponse.parse_obj(response.json())
+ return ActionLogsResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/applicant_logs.py b/huntflow_api_client/entities/applicant_logs.py
index 32736cd..ef3966b 100644
--- a/huntflow_api_client/entities/applicant_logs.py
+++ b/huntflow_api_client/entities/applicant_logs.py
@@ -46,7 +46,7 @@ async def list(
params["vacancy"] = vacancy
response = await self._api.request("GET", path, params=params)
- return ApplicantLogResponse.parse_obj(response.json())
+ return ApplicantLogResponse.model_validate(response.json())
async def create(
self,
@@ -70,4 +70,4 @@ async def create(
f"/accounts/{account_id}/applicants/{applicant_id}/logs",
json=data.jsonable_dict(exclude_none=True),
)
- return CreateApplicantLogResponse.parse_obj(response.json())
+ return CreateApplicantLogResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/applicant_offers.py b/huntflow_api_client/entities/applicant_offers.py
index 69c72e7..155ecf6 100644
--- a/huntflow_api_client/entities/applicant_offers.py
+++ b/huntflow_api_client/entities/applicant_offers.py
@@ -44,7 +44,7 @@ async def update(
f"/accounts/{account_id}/applicants/{applicant_id}/offers/{offer_id}",
json=data.jsonable_dict(),
)
- return ApplicantVacancyOfferResponse.parse_obj(response.json())
+ return ApplicantVacancyOfferResponse.model_validate(response.json())
async def get(
self,
@@ -71,4 +71,4 @@ async def get(
f"/vacancy_frames/{vacancy_frame_id}/offer",
params={"normalize": normalize},
)
- return ApplicantVacancyOfferResponse.parse_obj(response.json())
+ return ApplicantVacancyOfferResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/applicant_on_vacancy.py b/huntflow_api_client/entities/applicant_on_vacancy.py
index d1b433e..e65e574 100644
--- a/huntflow_api_client/entities/applicant_on_vacancy.py
+++ b/huntflow_api_client/entities/applicant_on_vacancy.py
@@ -35,7 +35,7 @@ async def attach_applicant_to_vacancy(
f"/accounts/{account_id}/applicants/{applicant_id}/vacancy",
json=data.jsonable_dict(exclude_none=True),
)
- return AddApplicantToVacancyResponse.parse_obj(response.json())
+ return AddApplicantToVacancyResponse.model_validate(response.json())
async def change_vacancy_status_for_applicant(
self,
@@ -57,7 +57,7 @@ async def change_vacancy_status_for_applicant(
f"/accounts/{account_id}/applicants/{applicant_id}/vacancy",
json=data.jsonable_dict(exclude_none=True),
)
- return AddApplicantToVacancyResponse.parse_obj(response.json())
+ return AddApplicantToVacancyResponse.model_validate(response.json())
async def move_applicant_to_child_vacancy(
self,
@@ -79,4 +79,4 @@ async def move_applicant_to_child_vacancy(
f"/accounts/{account_id}/applicants/vacancy/{vacancy_id}/split",
json=data.jsonable_dict(exclude_none=True),
)
- return ApplicantVacancySplitResponse.parse_obj(response.json())
+ return ApplicantVacancySplitResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/applicant_on_vacancy_status.py b/huntflow_api_client/entities/applicant_on_vacancy_status.py
index 48078e5..ea51f33 100644
--- a/huntflow_api_client/entities/applicant_on_vacancy_status.py
+++ b/huntflow_api_client/entities/applicant_on_vacancy_status.py
@@ -12,4 +12,4 @@ async def list(self, account_id: int) -> VacancyStatusesResponse:
:return: List of available applicant on vacancy statuses (stages)
"""
response = await self._api.request("GET", f"/accounts/{account_id}/vacancies/statuses")
- return VacancyStatusesResponse.parse_obj(response.json())
+ return VacancyStatusesResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/applicants.py b/huntflow_api_client/entities/applicants.py
index 3aff027..02f1c23 100644
--- a/huntflow_api_client/entities/applicants.py
+++ b/huntflow_api_client/entities/applicants.py
@@ -54,7 +54,7 @@ async def list(
f"/accounts/{account_id}/applicants",
params=params,
)
- return ApplicantListResponse.parse_obj(response.json())
+ return ApplicantListResponse.model_validate(response.json())
async def create(
self,
@@ -73,7 +73,7 @@ async def create(
f"/accounts/{account_id}/applicants",
json=data.jsonable_dict(exclude_none=True),
)
- return ApplicantCreateResponse.parse_obj(response.json())
+ return ApplicantCreateResponse.model_validate(response.json())
async def get(self, account_id: int, applicant_id: int) -> ApplicantItem:
"""
@@ -88,7 +88,7 @@ async def get(self, account_id: int, applicant_id: int) -> ApplicantItem:
"GET",
f"/accounts/{account_id}/applicants/{applicant_id}",
)
- return ApplicantItem.parse_obj(response.json())
+ return ApplicantItem.model_validate(response.json())
async def patch(
self,
@@ -110,7 +110,7 @@ async def patch(
f"/accounts/{account_id}/applicants/{applicant_id}",
json=data.jsonable_dict(exclude_none=True),
)
- return ApplicantItem.parse_obj(response.json())
+ return ApplicantItem.model_validate(response.json())
async def delete(self, account_id: int, applicant_id: int) -> None:
"""
@@ -185,4 +185,4 @@ async def search_by_cursor(
params["vacancy"] = vacancy if vacancy else "null"
response = await self._api.request("GET", path, params=params)
- return ApplicantSearchByCursorResponse.parse_obj(response.json())
+ return ApplicantSearchByCursorResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/coworkers.py b/huntflow_api_client/entities/coworkers.py
index dc42301..87b036b 100644
--- a/huntflow_api_client/entities/coworkers.py
+++ b/huntflow_api_client/entities/coworkers.py
@@ -43,7 +43,7 @@ async def list(
f"/accounts/{account_id}/coworkers",
params=params,
)
- return CoworkersListResponse(**response.json())
+ return CoworkersListResponse.model_validate(response.json())
async def get(
self,
@@ -68,4 +68,4 @@ async def get(
f"/accounts/{account_id}/coworkers",
params=params,
)
- return CoworkerResponse(**response.json())
+ return CoworkerResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/delayed_tasks.py b/huntflow_api_client/entities/delayed_tasks.py
index 8290a41..d93a713 100644
--- a/huntflow_api_client/entities/delayed_tasks.py
+++ b/huntflow_api_client/entities/delayed_tasks.py
@@ -16,4 +16,4 @@ async def get(self, account_id: int, task_id: str) -> DelayedTaskResponse:
path = f"/accounts/{account_id}/delayed_tasks/{task_id}"
response = await self._api.request("GET", path)
- return DelayedTaskResponse.parse_obj(response.json())
+ return DelayedTaskResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/dictionaries.py b/huntflow_api_client/entities/dictionaries.py
index 9feb8d4..43e3c32 100644
--- a/huntflow_api_client/entities/dictionaries.py
+++ b/huntflow_api_client/entities/dictionaries.py
@@ -26,7 +26,7 @@ async def list(self, account_id: int) -> DictionariesListResponse:
"""
path = f"/accounts/{account_id}/dictionaries"
response = await self._api.request("GET", path)
- data = DictionariesListResponse.parse_obj(response.json())
+ data = DictionariesListResponse.model_validate(response.json())
return data
async def create(
@@ -44,7 +44,7 @@ async def create(
"""
path = f"/accounts/{account_id}/dictionaries"
response = await self._api.request("POST", path, json=data.jsonable_dict(exclude_none=True))
- return DictionaryTaskResponse.parse_obj(response.json())
+ return DictionaryTaskResponse.model_validate(response.json())
async def get(self, account_id: int, dict_code: str) -> DictionaryResponse:
"""
@@ -57,7 +57,7 @@ async def get(self, account_id: int, dict_code: str) -> DictionaryResponse:
"""
path = f"/accounts/{account_id}/dictionaries/{dict_code}"
response = await self._api.request("GET", path)
- return DictionaryResponse.parse_obj(response.json())
+ return DictionaryResponse.model_validate(response.json())
async def update(
self,
@@ -76,4 +76,4 @@ async def update(
"""
path = f"/accounts/{account_id}/dictionaries/{dict_code}"
response = await self._api.request("PUT", path, json=data.jsonable_dict(exclude_none=True))
- return DictionaryTaskResponse.parse_obj(response.json())
+ return DictionaryTaskResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/divisions.py b/huntflow_api_client/entities/divisions.py
index 1bfd9a6..4ab6660 100644
--- a/huntflow_api_client/entities/divisions.py
+++ b/huntflow_api_client/entities/divisions.py
@@ -46,7 +46,7 @@ async def list(
path,
params=params,
)
- return DivisionsListResponse.parse_obj(response.json())
+ return DivisionsListResponse.model_validate(response.json())
async def create(
self,
@@ -67,4 +67,4 @@ async def create(
f"/accounts/{account_id}/divisions/batch",
json=divisions.jsonable_dict(exclude_none=True),
)
- return BatchDivisionsResponse.parse_obj(response.json())
+ return BatchDivisionsResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/email_templates.py b/huntflow_api_client/entities/email_templates.py
index 9feace7..609ed08 100644
--- a/huntflow_api_client/entities/email_templates.py
+++ b/huntflow_api_client/entities/email_templates.py
@@ -19,4 +19,4 @@ async def list(self, account_id: int, editable: bool = False) -> MailTemplatesRe
f"/accounts/{account_id}/mail/templates",
params={"editable": editable},
)
- return MailTemplatesResponse.parse_obj(response.json())
+ return MailTemplatesResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/file.py b/huntflow_api_client/entities/file.py
index 2cebafd..482e6dd 100644
--- a/huntflow_api_client/entities/file.py
+++ b/huntflow_api_client/entities/file.py
@@ -33,4 +33,4 @@ async def upload(
data=data,
headers=headers.jsonable_dict(exclude_none=True, by_alias=True),
)
- return UploadResponse(**response.json())
+ return UploadResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/multi_vacancies.py b/huntflow_api_client/entities/multi_vacancies.py
index 3e4f7cf..8f809b5 100644
--- a/huntflow_api_client/entities/multi_vacancies.py
+++ b/huntflow_api_client/entities/multi_vacancies.py
@@ -28,7 +28,7 @@ async def create(
f"/accounts/{account_id}/multi-vacancies",
json=data.jsonable_dict(exclude_none=True),
)
- return MultiVacancyResponse.parse_obj(response.json())
+ return MultiVacancyResponse.model_validate(response.json())
async def update(
self,
@@ -54,4 +54,4 @@ async def update(
f"/accounts/{account_id}/multi-vacancies/{vacancy_id}",
json=data.jsonable_dict(exclude_none=True),
)
- return MultiVacancyResponse.parse_obj(response.json())
+ return MultiVacancyResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/organization_settings.py b/huntflow_api_client/entities/organization_settings.py
index dd62c6b..353f7dd 100644
--- a/huntflow_api_client/entities/organization_settings.py
+++ b/huntflow_api_client/entities/organization_settings.py
@@ -19,7 +19,7 @@ async def get_hold_reasons(self, account_id: int) -> HoldReasonsListResponse:
"GET",
f"/accounts/{account_id}/vacancy_hold_reasons",
)
- return HoldReasonsListResponse(**response.json())
+ return HoldReasonsListResponse.model_validate(response.json())
async def get_close_reasons(self, account_id: int) -> CloseReasonsListResponse:
"""
@@ -33,7 +33,7 @@ async def get_close_reasons(self, account_id: int) -> CloseReasonsListResponse:
"GET",
f"/accounts/{account_id}/vacancy_close_reasons",
)
- return CloseReasonsListResponse(**response.json())
+ return CloseReasonsListResponse.model_validate(response.json())
async def get_applicant_survey_form(
self,
@@ -52,4 +52,4 @@ async def get_applicant_survey_form(
"GET",
f"/accounts/{account_id}/surveys/type_a/{survey_id}",
)
- return BaseSurveySchemaTypeWithSchemas(**response.json())
+ return BaseSurveySchemaTypeWithSchemas.model_validate(response.json())
diff --git a/huntflow_api_client/entities/production_calendars.py b/huntflow_api_client/entities/production_calendars.py
index c71b730..c27536a 100644
--- a/huntflow_api_client/entities/production_calendars.py
+++ b/huntflow_api_client/entities/production_calendars.py
@@ -26,7 +26,7 @@ async def list(self) -> CalendarListResponse:
"""
path = "/production_calendars"
response = await self._api.request("GET", path)
- return CalendarListResponse.parse_obj(response.json())
+ return CalendarListResponse.model_validate(response.json())
async def get(self, calendar_id: int) -> CalendarResponse:
"""
@@ -37,7 +37,7 @@ async def get(self, calendar_id: int) -> CalendarResponse:
"""
path = f"/production_calendars/{calendar_id}"
response = await self._api.request("GET", path)
- return CalendarResponse.parse_obj(response.json())
+ return CalendarResponse.model_validate(response.json())
async def get_organizations_calendar(self, account_id: int) -> AccountCalendarResponse:
"""
@@ -48,7 +48,7 @@ async def get_organizations_calendar(self, account_id: int) -> AccountCalendarRe
"""
path = f"/accounts/{account_id}/calendar"
response = await self._api.request("GET", path)
- return AccountCalendarResponse.parse_obj(response.json())
+ return AccountCalendarResponse.model_validate(response.json())
async def get_non_working_days_in_period(
self,
@@ -74,7 +74,7 @@ async def get_non_working_days_in_period(
params["start"] = start.strftime("%Y-%m-%d")
path = f"/production_calendars/{calendar_id}/days/{deadline}"
response = await self._api.request("GET", path, params=params)
- return NonWorkingDaysResponse.parse_obj(response.json())
+ return NonWorkingDaysResponse.model_validate(response.json())
async def get_non_working_days_for_multiple_period(
self,
@@ -91,8 +91,8 @@ async def get_non_working_days_for_multiple_period(
specified periods
"""
path = f"/production_calendars/{calendar_id}/days"
- response = await self._api.request("POST", path, data=data.json())
- return NonWorkingDaysBulkResponse.parse_obj(response.json())
+ response = await self._api.request("POST", path, content=data.model_dump_json())
+ return NonWorkingDaysBulkResponse.model_validate(response.json())
async def get_deadline_date_with_non_working_days(
self,
@@ -130,8 +130,8 @@ async def get_multiple_deadline_dates_with_non_working_days(
:return: List of deadlines
"""
path = f"/production_calendars/{calendar_id}/deadline"
- response = await self._api.request("POST", path, data=data.json())
- return DatesBulkResponse.parse_obj(response.json())
+ response = await self._api.request("POST", path, content=data.model_dump_json())
+ return DatesBulkResponse.model_validate(response.json())
async def get_start_date_with_non_working_days(
self,
@@ -170,5 +170,5 @@ async def get_multiple_start_dates_with_non_working_days(
:return: List of start dates
"""
path = f"/production_calendars/{calendar_id}/start"
- response = await self._api.request("POST", path, data=data.json())
- return DatesBulkResponse.parse_obj(response.json())
+ response = await self._api.request("POST", path, content=data.model_dump_json())
+ return DatesBulkResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/questionary.py b/huntflow_api_client/entities/questionary.py
index 1c50a72..2931ad1 100644
--- a/huntflow_api_client/entities/questionary.py
+++ b/huntflow_api_client/entities/questionary.py
@@ -20,7 +20,7 @@ async def get_schema(self, account_id: int) -> QuestionarySchemaResponse:
:return: A schema of applicant's questionary for organization
"""
response = await self._api.request("GET", f"/accounts/{account_id}/applicants/questionary")
- return QuestionarySchemaResponse.parse_obj(response.json())
+ return QuestionarySchemaResponse.model_validate(response.json())
async def create(
self,
diff --git a/huntflow_api_client/entities/regions.py b/huntflow_api_client/entities/regions.py
index e3ae607..034d7b0 100644
--- a/huntflow_api_client/entities/regions.py
+++ b/huntflow_api_client/entities/regions.py
@@ -11,4 +11,4 @@ async def list(self, account_id: int) -> RegionsListResponse:
:return: List of organization regions
"""
response = await self._api.request("GET", f"/accounts/{account_id}/regions")
- return RegionsListResponse.parse_obj(response.json())
+ return RegionsListResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/rejection_reason.py b/huntflow_api_client/entities/rejection_reason.py
index 7f3a246..dfa5fb2 100644
--- a/huntflow_api_client/entities/rejection_reason.py
+++ b/huntflow_api_client/entities/rejection_reason.py
@@ -12,4 +12,4 @@ async def list(self, account_id: int) -> RejectionReasonsListResponse:
:return: List of applicant on vacancy rejection reasons
"""
response = await self._api.request("GET", f"/accounts/{account_id}/rejection_reasons")
- return RejectionReasonsListResponse.parse_obj(response.json())
+ return RejectionReasonsListResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/resume.py b/huntflow_api_client/entities/resume.py
index d010976..e664937 100644
--- a/huntflow_api_client/entities/resume.py
+++ b/huntflow_api_client/entities/resume.py
@@ -31,7 +31,7 @@ async def get(
"GET",
f"/accounts/{account_id}/applicants/{applicant_id}/externals/{external_id}",
)
- return ApplicantResumeResponse.parse_obj(response.json())
+ return ApplicantResumeResponse.model_validate(response.json())
async def get_sources(self, account_id: int) -> ApplicantSourcesResponse:
"""
@@ -42,7 +42,7 @@ async def get_sources(self, account_id: int) -> ApplicantSourcesResponse:
:return: List of applicant's resume sources
"""
response = await self._api.request("GET", f"/accounts/{account_id}/applicants/sources")
- return ApplicantSourcesResponse.parse_obj(response.json())
+ return ApplicantSourcesResponse.model_validate(response.json())
async def delete(
self,
@@ -85,7 +85,7 @@ async def update(
f"/accounts/{account_id}/applicants/{applicant_id}/externals/{external_id}",
json=data.jsonable_dict(exclude_none=True),
)
- return ApplicantResumeResponse.parse_obj(response.json())
+ return ApplicantResumeResponse.model_validate(response.json())
async def get_pdf(
self,
diff --git a/huntflow_api_client/entities/tags.py b/huntflow_api_client/entities/tags.py
index c1c8861..d4cc948 100644
--- a/huntflow_api_client/entities/tags.py
+++ b/huntflow_api_client/entities/tags.py
@@ -26,7 +26,7 @@ async def get(self, account_id: int, account_tag_id: int) -> AccountTagResponse:
:return: The specified tag
"""
response = await self._api.request("GET", f"/accounts/{account_id}/tags/{account_tag_id}")
- return AccountTagResponse(**response.json())
+ return AccountTagResponse.model_validate(response.json())
async def create(
self,
@@ -45,7 +45,7 @@ async def create(
f"/accounts/{account_id}/tags",
json=account_tag.jsonable_dict(exclude_none=True),
)
- return AccountTagResponse(**response.json())
+ return AccountTagResponse.model_validate(response.json())
async def update(
self,
@@ -67,7 +67,7 @@ async def update(
f"/accounts/{account_id}/tags/{account_tag_id}",
json=data.jsonable_dict(exclude_none=True),
)
- return AccountTagResponse(**response.json())
+ return AccountTagResponse.model_validate(response.json())
async def delete(self, account_id: int, account_tag_id: int) -> None:
"""
@@ -90,7 +90,7 @@ async def list(self, account_id: int) -> AccountTagsListResponse:
:return: List of tags in the organization.
"""
response = await self._api.request("GET", f"/accounts/{account_id}/tags")
- return AccountTagsListResponse(**response.json())
+ return AccountTagsListResponse.model_validate(response.json())
class ApplicantTag(BaseEntity, UpdateEntityMixin, ListEntityMixin):
@@ -114,7 +114,7 @@ async def update(
f"/accounts/{account_id}/applicants/{applicant_id}/tags",
json=data.jsonable_dict(exclude_none=True),
)
- return ApplicantTagsListResponse(**response.json())
+ return ApplicantTagsListResponse.model_validate(response.json())
async def list(self, account_id: int, applicant_id: int) -> ApplicantTagsListResponse:
"""
@@ -129,4 +129,4 @@ async def list(self, account_id: int, applicant_id: int) -> ApplicantTagsListRes
"GET",
f"/accounts/{account_id}/applicants/{applicant_id}/tags",
)
- return ApplicantTagsListResponse(**response.json())
+ return ApplicantTagsListResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/user_settings.py b/huntflow_api_client/entities/user_settings.py
index bd31cfe..b020190 100644
--- a/huntflow_api_client/entities/user_settings.py
+++ b/huntflow_api_client/entities/user_settings.py
@@ -13,7 +13,7 @@ async def get_email_accounts(self) -> EmailAccountsListResponse:
:return: List of user email accounts.
"""
response = await self._api.request("GET", "/email_accounts")
- return EmailAccountsListResponse.parse_obj(response.json())
+ return EmailAccountsListResponse.model_validate(response.json())
async def get_calendar_accounts(self) -> CalendarAccountsListResponse:
"""
@@ -22,4 +22,4 @@ async def get_calendar_accounts(self) -> CalendarAccountsListResponse:
:return: List of user calendar accounts with associated calendars.
"""
response = await self._api.request("GET", "/calendar_accounts")
- return CalendarAccountsListResponse.parse_obj(response.json())
+ return CalendarAccountsListResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/users.py b/huntflow_api_client/entities/users.py
index 138093c..c7ed59b 100644
--- a/huntflow_api_client/entities/users.py
+++ b/huntflow_api_client/entities/users.py
@@ -13,4 +13,4 @@ async def get(self, account_id: int, user_id: int) -> UserResponse:
:return: The specified user with a list of his permissions
"""
response = await self._api.request("GET", f"/accounts/{account_id}/users/{user_id}")
- return UserResponse.parse_obj(response.json())
+ return UserResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/vacancies.py b/huntflow_api_client/entities/vacancies.py
index 93bc37f..c0248de 100644
--- a/huntflow_api_client/entities/vacancies.py
+++ b/huntflow_api_client/entities/vacancies.py
@@ -39,7 +39,7 @@ async def get_additional_fields_schema(
"GET",
f"/accounts/{account_id}/vacancies/additional_fields",
)
- return AdditionalFieldsSchemaResponse(**response.json())
+ return AdditionalFieldsSchemaResponse.model_validate(response.json())
async def list(
self,
@@ -71,7 +71,7 @@ async def list(
f"/accounts/{account_id}/vacancies",
params=params,
)
- return VacancyListResponse(**response.json())
+ return VacancyListResponse.model_validate(response.json())
async def get(self, account_id: int, vacancy_id: int) -> VacancyResponse:
"""
@@ -83,7 +83,7 @@ async def get(self, account_id: int, vacancy_id: int) -> VacancyResponse:
:return: The specified vacancy
"""
response = await self._api.request("GET", f"/accounts/{account_id}/vacancies/{vacancy_id}")
- return VacancyResponse(**response.json())
+ return VacancyResponse.model_validate(response.json())
async def create(self, account_id: int, data: VacancyCreateRequest) -> VacancyCreateResponse:
"""
@@ -98,7 +98,7 @@ async def create(self, account_id: int, data: VacancyCreateRequest) -> VacancyCr
f"/accounts/{account_id}/vacancies",
json=data.jsonable_dict(exclude_none=True),
)
- return VacancyCreateResponse(**response.json())
+ return VacancyCreateResponse.model_validate(response.json())
async def update(
self,
@@ -120,7 +120,7 @@ async def update(
f"/accounts/{account_id}/vacancies/{vacancy_id}",
json=data.jsonable_dict(exclude_none=True),
)
- return VacancyResponse(**response.json())
+ return VacancyResponse.model_validate(response.json())
async def delete(self, account_id: int, vacancy_id: int) -> None:
"""
@@ -152,7 +152,7 @@ async def patch(
f"/accounts/{account_id}/vacancies/{vacancy_id}",
json=data.jsonable_dict(exclude_none=True),
)
- return VacancyResponse(**response.json())
+ return VacancyResponse.model_validate(response.json())
async def assign_coworker(
self,
@@ -176,7 +176,7 @@ async def assign_coworker(
f"/accounts/{account_id}/vacancies/{vacancy_id}/members/{account_member_id}",
json=data.jsonable_dict(exclude_none=True),
)
- return StatusResponse(**response.json())
+ return StatusResponse.model_validate(response.json())
async def remove_coworker(
self,
@@ -214,7 +214,7 @@ async def get_frames(
"GET",
f"/accounts/{account_id}/vacancies/{vacancy_id}/frames",
)
- return VacancyFramesListResponse(**response.json())
+ return VacancyFramesListResponse.model_validate(response.json())
async def get_last_frame(
self,
@@ -233,7 +233,7 @@ async def get_last_frame(
"GET",
f"/accounts/{account_id}/vacancies/{vacancy_id}/frame",
)
- return LastVacancyFrameResponse(**response.json())
+ return LastVacancyFrameResponse.model_validate(response.json())
async def get_frame_quotas(
self,
@@ -254,7 +254,7 @@ async def get_frame_quotas(
"GET",
f"/accounts/{account_id}/vacancies/{vacancy_id}/frames/{frame_id}/quotas",
)
- return VacancyFrameQuotasResponse(**response.json())
+ return VacancyFrameQuotasResponse.model_validate(response.json())
async def get_quotas(
self,
@@ -279,7 +279,7 @@ async def get_quotas(
f"/accounts/{account_id}/vacancies/{vacancy_id}/quotas",
params=params,
)
- return VacancyQuotasResponse.parse_obj(response.json())
+ return VacancyQuotasResponse.model_validate(response.json())
async def get_vacancy_status_groups(self, account_id: int) -> VacancyStatusGroupsResponse:
"""
@@ -290,7 +290,7 @@ async def get_vacancy_status_groups(self, account_id: int) -> VacancyStatusGroup
:return: List of vacancy status groups.
"""
response = await self._api.request("GET", f"/accounts/{account_id}/vacancies/status_groups")
- return VacancyStatusGroupsResponse.parse_obj(response.json())
+ return VacancyStatusGroupsResponse.model_validate(response.json())
async def close(self, account_id: int, vacancy_id: int, data: VacancyCloseRequest) -> None:
"""
diff --git a/huntflow_api_client/entities/vacancy_requests.py b/huntflow_api_client/entities/vacancy_requests.py
index 240bd5a..b89eccb 100644
--- a/huntflow_api_client/entities/vacancy_requests.py
+++ b/huntflow_api_client/entities/vacancy_requests.py
@@ -44,7 +44,7 @@ async def list(
params["vacancy_id"] = vacancy_id
response = await self._api.request("GET", path, params=params)
- return VacancyRequestListResponse.parse_obj(response.json())
+ return VacancyRequestListResponse.model_validate(response.json())
async def get(self, account_id: int, vacancy_request_id: int) -> VacancyRequestResponse:
"""
@@ -57,7 +57,7 @@ async def get(self, account_id: int, vacancy_request_id: int) -> VacancyRequestR
"""
path = f"/accounts/{account_id}/vacancy_requests/{vacancy_request_id}"
response = await self._api.request("GET", path)
- return VacancyRequestResponse.parse_obj(response.json())
+ return VacancyRequestResponse.model_validate(response.json())
async def create(
self,
@@ -78,4 +78,4 @@ async def create(
path,
json=request_data.jsonable_dict(exclude_none=True),
)
- return VacancyRequestResponse.parse_obj(response.json())
+ return VacancyRequestResponse.model_validate(response.json())
diff --git a/huntflow_api_client/entities/webhooks.py b/huntflow_api_client/entities/webhooks.py
index 6af06aa..5c0c7a9 100644
--- a/huntflow_api_client/entities/webhooks.py
+++ b/huntflow_api_client/entities/webhooks.py
@@ -18,7 +18,7 @@ async def list(self, account_id: int) -> WebhooksListResponse:
"""
path = f"/accounts/{account_id}/hooks"
response = await self._api.request("GET", path)
- return WebhooksListResponse(**response.json())
+ return WebhooksListResponse.model_validate(response.json())
async def create(self, account_id: int, data: WebhookRequest) -> WebhookResponse:
"""
@@ -30,7 +30,7 @@ async def create(self, account_id: int, data: WebhookRequest) -> WebhookResponse
"""
path = f"/accounts/{account_id}/hooks"
response = await self._api.request("POST", path, json=data.jsonable_dict(exclude_none=True))
- return WebhookResponse(**response.json())
+ return WebhookResponse.model_validate(response.json())
async def delete(self, account_id: int, webhook_id: int) -> None:
"""
diff --git a/huntflow_api_client/models/common.py b/huntflow_api_client/models/common.py
index 4170d03..b1bbcde 100644
--- a/huntflow_api_client/models/common.py
+++ b/huntflow_api_client/models/common.py
@@ -1,7 +1,8 @@
import json
from datetime import date, datetime
-from typing import AbstractSet, Any, Callable, Dict, List, Mapping, Optional, Union
+from typing import Any, Dict, List, Optional, Set, Union
+import typing_extensions
from pydantic import AnyHttpUrl, BaseModel, EmailStr, Field, PositiveInt
from huntflow_api_client.models.consts import (
@@ -11,70 +12,63 @@
VacancyState,
)
-IntStr = Union[int, str]
-AbstractSetIntStr = AbstractSet[IntStr]
-MappingIntStrAny = Mapping[IntStr, Any]
+_FieldSet: typing_extensions.TypeAlias = "Set[int] | Set[str] | Dict[int, Any] | Dict[str, Any]"
class JsonRequestModel(BaseModel):
def jsonable_dict(
self,
*,
- include: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None,
- exclude: Optional[Union[AbstractSetIntStr, MappingIntStrAny]] = None,
+ include: Optional[_FieldSet] = None,
+ exclude: Optional[_FieldSet] = None,
by_alias: bool = False,
- skip_defaults: Optional[bool] = None,
exclude_unset: bool = False,
exclude_defaults: bool = False,
exclude_none: bool = False,
- encoder: Optional[Callable[[Any], Any]] = None,
- **dumps_kwargs: Any,
+ round_trip: bool = False,
+ warnings: bool = True,
) -> Dict[str, Any]:
- params = {
- "include": include,
- "exclude": exclude,
- "by_alias": by_alias,
- "skip_defaults": skip_defaults,
- "exclude_unset": exclude_unset,
- "exclude_defaults": exclude_defaults,
- "exclude_none": exclude_none,
- "encoder": encoder,
- }
- return json.loads(self.json(**params, **dumps_kwargs)) # type: ignore
+ return json.loads(
+ self.model_dump_json(
+ include=include,
+ exclude=exclude,
+ by_alias=by_alias,
+ exclude_unset=exclude_unset,
+ exclude_defaults=exclude_defaults,
+ exclude_none=exclude_none,
+ round_trip=round_trip,
+ warnings=warnings,
+ ),
+ )
class PaginatedResponse(BaseModel):
- page: PositiveInt = Field(..., description="Page number", example=1)
- count: int = Field(..., description="Number of items per page", example=30)
- total_pages: int = Field(..., description="Total number of pages", example=2)
+ page: PositiveInt = Field(..., description="Page number")
+ count: int = Field(..., description="Number of items per page")
+ total_pages: int = Field(..., description="Total number of pages")
class Vacancy(BaseModel):
account_division: Optional[PositiveInt] = Field(
None,
description="Division ID",
- example=12,
)
account_region: Optional[PositiveInt] = Field(
None,
description="Account region",
- example=1,
)
position: str = Field(
...,
description="The name of the vacancy (occupation)",
- example="Developer",
)
company: Optional[str] = Field(
None,
description="Department (ignored if the DEPARTMENTS are enabled)",
- example="Google",
)
- money: Optional[str] = Field(None, description="Salary", example="$10000")
+ money: Optional[str] = Field(None, description="Salary")
priority: Optional[int] = Field(
None,
description="The priority of a vacancy (0 for usual or 1 for high)",
- example=0,
ge=0,
le=1,
)
@@ -93,44 +87,40 @@ class FillQuota(BaseModel):
vacancy_request: Optional[PositiveInt] = Field(
None,
description="Vacancy request ID",
- example=12,
)
class EditedFillQuota(FillQuota):
- id: Optional[PositiveInt] = Field(None, description="Fill quota ID", example=15)
+ id: Optional[PositiveInt] = Field(None, description="Fill quota ID")
class File(BaseModel):
- id: PositiveInt = Field(..., description="File ID", example=19)
+ id: PositiveInt = Field(..., description="File ID")
url: AnyHttpUrl = Field(..., description="File URL")
- content_type: str = Field(..., description="MIME type of file", example="application/pdf")
- name: str = Field(..., description="File name", example="Resume.pdf")
+ content_type: str = Field(..., description="MIME type of file")
+ name: str = Field(..., description="File name")
class Applicant(BaseModel):
- first_name: Optional[str] = Field(None, description="First name", example="John")
- last_name: Optional[str] = Field(None, description="Last name", example="Doe")
- middle_name: Optional[str] = Field(None, description="Middle name", example="Michael")
- money: Optional[str] = Field(None, description="Salary expectation", example="$100000")
- phone: Optional[str] = Field(None, description="Phone number", example="89999999999")
+ first_name: Optional[str] = Field(None, description="First name")
+ last_name: Optional[str] = Field(None, description="Last name")
+ middle_name: Optional[str] = Field(None, description="Middle name")
+ money: Optional[str] = Field(None, description="Salary expectation")
+ phone: Optional[str] = Field(None, description="Phone number")
email: Union[EmailStr, str, None] = Field(
None,
description="Email address",
- example="mail@some.domain.com",
)
- skype: Optional[str] = Field(None, description="Skype login", example="my_skype")
+ skype: Optional[str] = Field(None, description="Skype login")
position: Optional[str] = Field(
None,
description="Applicant’s occupation",
- example="Front-end developer",
)
company: Optional[str] = Field(
None,
description="Applicant’s place of work",
- example="Google Inc.",
)
- photo: Optional[int] = Field(None, description="Applicant’s photo ID", example=1)
+ photo: Optional[int] = Field(None, description="Applicant’s photo ID")
class StatusResponse(BaseModel):
@@ -188,7 +178,7 @@ class EmailFollowup(BaseModel):
html: str = Field(..., description="Email content (HTML)")
days: int = Field(
...,
- gte=1,
+ ge=1,
description="The number of days after which to send a followup if there is no response",
)
@@ -239,7 +229,7 @@ class ApplicantOffer(BaseModel):
class CalendarEventReminder(BaseModel):
multiplier: EventReminderMultiplier = Field(..., description="Reminder period")
- value: int = Field(..., gte=0, lt=40320, description="Reminder value")
+ value: int = Field(..., ge=0, lt=40320, description="Reminder value")
method: CalendarEventReminderMethod = Field(..., description="Reminder method")
@@ -248,5 +238,5 @@ class CalendarEventAttendee(BaseModel):
name: Optional[str] = Field(None, description="Attendee name", alias="displayName")
email: EmailStr = Field(..., description="Attendee email")
- class Config:
+ class ConfigDict:
allow_population_by_field_name = True
diff --git a/huntflow_api_client/models/request/applicant_logs.py b/huntflow_api_client/models/request/applicant_logs.py
index efaebf1..185182c 100644
--- a/huntflow_api_client/models/request/applicant_logs.py
+++ b/huntflow_api_client/models/request/applicant_logs.py
@@ -1,7 +1,7 @@
from datetime import datetime
from typing import List, Optional
-from pydantic import BaseModel, Extra, Field, PositiveInt
+from pydantic import BaseModel, Field, PositiveInt
from huntflow_api_client.models.common import (
ApplicantLogEmail,
@@ -36,7 +36,7 @@ class ApplicantLogCalendarEvent(BaseModel):
class CreateApplicantLogRequest(JsonRequestModel):
- comment: Optional[str] = Field(None, description="Comment text", example="Example comment")
+ comment: Optional[str] = Field(None, description="Comment text")
vacancy: Optional[PositiveInt] = Field(
None,
description=(
@@ -51,9 +51,9 @@ class CreateApplicantLogRequest(JsonRequestModel):
None,
description="Calendar event object",
)
- im: Optional[List[ApplicantLogIm]] = Field(None, max_items=1, description="Telegram message")
+ im: Optional[List[ApplicantLogIm]] = Field(None, max_length=1, description="Telegram message")
sms: Optional[ApplicantLogSms] = Field(None, description="SMS message")
survey_questionary_id: Optional[int] = Field(None, description="Survey questionary ID")
- class Config:
- extra = Extra.allow
+ class ConfigDict:
+ extra = "allow"
diff --git a/huntflow_api_client/models/request/applicant_on_vacancy.py b/huntflow_api_client/models/request/applicant_on_vacancy.py
index d7fd0e6..c7db664 100644
--- a/huntflow_api_client/models/request/applicant_on_vacancy.py
+++ b/huntflow_api_client/models/request/applicant_on_vacancy.py
@@ -31,12 +31,12 @@ class AddApplicantToVacancyRequest(JsonRequestModel):
)
files: Optional[List[PositiveInt]] = Field(
None,
- max_items=15,
+ max_length=15,
description="Upload files. The list of file's ID attached to the log",
)
calendar_event: Optional[ApplicantEvent] = Field(None, description="Calendar event object")
email: Optional[ApplicantLogEmail] = Field(None, description="Email object")
- im: Optional[List[ApplicantLogIm]] = Field(None, max_items=1, description="Telegram message")
+ im: Optional[List[ApplicantLogIm]] = Field(None, max_length=1, description="Telegram message")
sms: Optional[ApplicantLogSms] = Field(None, description="SMS message")
applicant_offer: Optional[ApplicantOffer] = Field(None, description="Applicant's offer")
survey_questionary_id: Optional[int] = Field(None, description="Survey questionary ID")
@@ -60,13 +60,13 @@ class ChangeVacancyApplicantStatusRequest(JsonRequestModel):
)
files: Optional[List[PositiveInt]] = Field(
None,
- max_items=15,
+ max_length=15,
description="Upload files. The list of file's ID attached to the log",
)
applicant_offer: Optional[ApplicantOffer] = Field(None, description="Applicant's offer")
calendar_event: Optional[ApplicantEvent] = Field(None, description="Calendar event object")
email: Optional[ApplicantLogEmail] = Field(None, description="Email object")
- im: Optional[List[ApplicantLogIm]] = Field(None, max_items=1, description="Telegram message")
+ im: Optional[List[ApplicantLogIm]] = Field(None, max_length=1, description="Telegram message")
sms: Optional[ApplicantLogSms] = Field(None, description="SMS message")
survey_questionary_id: Optional[int] = Field(None, description="Survey questionary ID")
diff --git a/huntflow_api_client/models/request/applicants.py b/huntflow_api_client/models/request/applicants.py
index 3565d0d..16286ab 100644
--- a/huntflow_api_client/models/request/applicants.py
+++ b/huntflow_api_client/models/request/applicants.py
@@ -35,12 +35,12 @@ class ApplicantCreateRequest(Applicant, JsonRequestModel):
birthday: Optional[date] = Field(None, description="Date of birth")
externals: Optional[List[ApplicantResumeCreate]] = Field(
None,
- max_items=1,
+ max_length=1,
description="List of applicant's resumes",
)
social: List[ApplicantSocial] = Field(
[],
- max_items=1,
+ max_length=1,
description="List of applicant's social accounts",
)
@@ -49,13 +49,13 @@ class ApplicantUpdateRequest(Applicant, JsonRequestModel):
birthday: Optional[date] = Field(None, description="Date of birth")
social: Optional[List[ApplicantSocial]] = Field(
None,
- max_items=1,
+ max_length=1,
description="List of applicant's social accounts",
)
class ApplicantEvent(BaseModel):
- vacancy: Optional[PositiveInt] = Field(None, include_in_schema=False)
+ vacancy: Optional[PositiveInt] = None
private: bool = Field(True, description="Event private flag")
name: Optional[str] = Field(None, description="Event name")
reminders: Optional[List[CalendarEventReminder]] = Field(
@@ -63,7 +63,7 @@ class ApplicantEvent(BaseModel):
description="List of reminders RFC 5545",
)
location: Optional[str] = Field(None, max_length=1024, description="Event location")
- interview_type: Optional[PositiveInt] = Field(None, description="Interview type ID", example=17)
+ interview_type: Optional[PositiveInt] = Field(None, description="Interview type ID")
event_type: CalendarEventType = Field(..., description="Calendar event type")
description: Optional[str] = Field(None, description="Event description (comment)")
calendar: PositiveInt = Field(..., description="Calendar ID")
diff --git a/huntflow_api_client/models/request/file.py b/huntflow_api_client/models/request/file.py
index 503c987..853f242 100644
--- a/huntflow_api_client/models/request/file.py
+++ b/huntflow_api_client/models/request/file.py
@@ -1,6 +1,6 @@
from typing import Optional
-from pydantic import Field, validator
+from pydantic import Field, field_validator
from huntflow_api_client.models.common import JsonRequestModel
@@ -27,9 +27,10 @@ class UploadFileHeaders(JsonRequestModel):
alias="x-ignore-phone",
)
- @validator("file_parse")
+ @field_validator("file_parse")
+ @classmethod
def convert_bool_to_str(cls, value: bool) -> str:
return str(value).lower()
- class Config:
+ class ConfigDict:
allow_population_by_field_name = True
diff --git a/huntflow_api_client/models/request/multi_vacancies.py b/huntflow_api_client/models/request/multi_vacancies.py
index f5a6be9..c00b05d 100644
--- a/huntflow_api_client/models/request/multi_vacancies.py
+++ b/huntflow_api_client/models/request/multi_vacancies.py
@@ -9,7 +9,7 @@
class VacancyBlock(BaseModel):
- fill_quotas: List[FillQuota] = Field(..., max_items=1, description="Fill quota ID")
+ fill_quotas: List[FillQuota] = Field(..., max_length=1, description="Fill quota ID")
money: Optional[str] = Field(None, description="Salary")
priority: Optional[int] = Field(
None,
@@ -18,7 +18,7 @@ class VacancyBlock(BaseModel):
le=1,
)
- class Config:
+ class ConfigDict:
extra = "allow"
@@ -31,7 +31,6 @@ class MultiVacancyCreateRequest(JsonRequestModel):
company: Optional[str] = Field(
None,
description="Department name (ignored if the divisions are enabled)",
- example="Google",
)
hidden: bool = Field(False, description="Is the vacancy hidden from coworkers?")
state: VacancyCreateState = Field(VacancyCreateState.OPEN, description="The state of a vacancy")
@@ -59,7 +58,7 @@ class MultiVacancyCreateRequest(JsonRequestModel):
)
blocks: List[VacancyBlock] = Field(..., description="List of sub-vacancies for a multivacancy")
- class Config:
+ class ConfigDict:
extra = "allow"
@@ -76,7 +75,6 @@ class MultiVacancyUpdateRequest(JsonRequestModel):
company: Optional[str] = Field(
None,
description="Department name (ignored if the divisions are enabled)",
- example="Google",
)
hidden: bool = Field(False, description="Is the vacancy hidden from coworkers?")
state: VacancyUpdateState = Field(VacancyUpdateState.OPEN, description="The state of a vacancy")
@@ -103,7 +101,7 @@ class MultiVacancyUpdateRequest(JsonRequestModel):
description="List of sub-vacancies for a multivacancy",
)
- class Config:
+ class ConfigDict:
extra = "allow"
@@ -117,7 +115,7 @@ class VacancyBlockUpdatePartial(VacancyBlockUpdate):
)
fill_quotas: Optional[List[EditedFillQuota]] = Field( # type: ignore
None,
- max_items=1,
+ max_length=1,
description="Fill quota ID",
)
diff --git a/huntflow_api_client/models/request/production_calendars.py b/huntflow_api_client/models/request/production_calendars.py
index 1152cfd..4247bfa 100644
--- a/huntflow_api_client/models/request/production_calendars.py
+++ b/huntflow_api_client/models/request/production_calendars.py
@@ -1,7 +1,7 @@
from datetime import date
from typing import List, Optional
-from pydantic import BaseModel, Field
+from pydantic import BaseModel, Field, RootModel
class NonWorkingDays(BaseModel):
@@ -9,8 +9,8 @@ class NonWorkingDays(BaseModel):
start: Optional[date] = Field(None, description="Start date")
-class NonWorkingDaysBulkRequest(BaseModel):
- __root__: List[NonWorkingDays]
+class NonWorkingDaysBulkRequest(RootModel):
+ root: List[NonWorkingDays]
class DeadLineDate(BaseModel):
@@ -18,8 +18,8 @@ class DeadLineDate(BaseModel):
start: Optional[date] = Field(None, description="A date to start counting. Default is today")
-class DeadLineDatesBulkRequest(BaseModel):
- __root__: List[DeadLineDate]
+class DeadLineDatesBulkRequest(RootModel):
+ root: List[DeadLineDate]
class StartDate(BaseModel):
@@ -30,5 +30,5 @@ class StartDate(BaseModel):
)
-class StartDatesBulkRequest(BaseModel):
- __root__: List[StartDate]
+class StartDatesBulkRequest(RootModel):
+ root: List[StartDate]
diff --git a/huntflow_api_client/models/request/resume.py b/huntflow_api_client/models/request/resume.py
index 86c17c1..2739332 100644
--- a/huntflow_api_client/models/request/resume.py
+++ b/huntflow_api_client/models/request/resume.py
@@ -11,12 +11,9 @@ class ApplicantResumeUpdateData(BaseModel):
class ApplicantResumeUpdateRequest(JsonRequestModel):
account_source: Optional[PositiveInt] = Field(..., description="Resume source ID")
- data: Optional[ApplicantResumeUpdateData] = Field(
- ...,
- description="Resume data",
- )
+ data: Optional[ApplicantResumeUpdateData] = Field(..., description="Resume data")
files: Optional[List[PositiveInt]] = Field(
[],
- max_items=1,
+ max_length=1,
description="Upload files
" "List of file's ID attached to the applicant resume",
)
diff --git a/huntflow_api_client/models/request/vacancies.py b/huntflow_api_client/models/request/vacancies.py
index 7d395a2..6c7923e 100644
--- a/huntflow_api_client/models/request/vacancies.py
+++ b/huntflow_api_client/models/request/vacancies.py
@@ -52,9 +52,9 @@ class VacancyCreateRequest(Vacancy, JsonRequestModel):
None,
description="List of file IDs attached to a vacancy.",
)
- fill_quotas: List[FillQuota] = Field(..., max_items=1, description="Fill quota ID")
+ fill_quotas: List[FillQuota] = Field(..., max_length=1, description="Fill quota ID")
- class Config:
+ class ConfigDict:
extra = "allow"
@@ -85,7 +85,7 @@ class VacancyUpdateRequest(Vacancy, JsonRequestModel):
description="Vacancy close reason ID",
)
- class Config:
+ class ConfigDict:
extra = "allow"
diff --git a/huntflow_api_client/models/request/vacancy_requests.py b/huntflow_api_client/models/request/vacancy_requests.py
index 3b4a3e3..5fa6188 100644
--- a/huntflow_api_client/models/request/vacancy_requests.py
+++ b/huntflow_api_client/models/request/vacancy_requests.py
@@ -1,6 +1,6 @@
import typing as t
-from pydantic import BaseModel, EmailStr, Extra, Field, PositiveInt
+from pydantic import BaseModel, EmailStr, Field, PositiveInt
from huntflow_api_client.models.common import JsonRequestModel
@@ -36,7 +36,7 @@ class CreateVacancyRequestRequest(JsonRequestModel):
max_length=255,
description="The name of the vacancy (occupation)",
)
- money: t.Optional[str] = Field(None, description="Salary", example="$10000")
+ money: t.Optional[str] = Field(None, description="Salary")
attendees: t.Optional[t.List[VacancyRequestAttendee]] = Field(
None,
description="List of people to send a request for approval",
@@ -46,5 +46,5 @@ class CreateVacancyRequestRequest(JsonRequestModel):
description="List of file IDs to attach to the vacancy request.",
)
- class Config:
- extra = Extra.allow
+ class ConfigDict:
+ extra = "allow"
diff --git a/huntflow_api_client/models/response/account_vacancy_request.py b/huntflow_api_client/models/response/account_vacancy_request.py
index e504871..cef5a06 100644
--- a/huntflow_api_client/models/response/account_vacancy_request.py
+++ b/huntflow_api_client/models/response/account_vacancy_request.py
@@ -1,6 +1,6 @@
import typing as t
-from pydantic import BaseModel, Extra, Field, PositiveInt
+from pydantic import BaseModel, Field, PositiveInt
from huntflow_api_client.models.consts import FieldType
@@ -8,28 +8,27 @@
class AccountVacancyRequestSchemaField(BaseModel):
id: PositiveInt = Field(..., description="Field ID")
type: FieldType = Field(..., description="Field type")
- title: t.Optional[str] = Field(None, description="Field title", example="Reason")
+ title: t.Optional[str] = Field(None, description="Field title")
required: bool = Field(False, description="Field required flag")
- order: int = Field(..., description="The order of the field on the form", example=1)
+ order: int = Field(..., description="The order of the field on the form")
values: t.Optional[t.List] = Field(
None,
description="List of possible values (for fields with `select` type)",
- example=["New position", "Replacing an employee"],
)
- value: t.Optional[str] = Field(None, description="Default value", example="New position")
+ value: t.Optional[str] = Field(None, description="Default value")
fields: t.Optional[t.Dict[str, "AccountVacancyRequestSchemaField"]] = Field(
None,
description="Nested fields",
)
- class Config:
- extra = Extra.allow
+ class ConfigDict:
+ extra = "allow"
class AccountVacancyRequestResponse(BaseModel):
- id: PositiveInt = Field(..., description="Schema ID", example=1)
- account: PositiveInt = Field(..., description="Organization ID", example=11)
- name: str = Field("", description="Schema name", example="IT Developers")
+ id: PositiveInt = Field(..., description="Schema ID")
+ account: PositiveInt = Field(..., description="Organization ID")
+ name: str = Field("", description="Schema name")
attendee_required: t.Optional[bool] = Field(
None,
description=(
@@ -41,7 +40,6 @@ class AccountVacancyRequestResponse(BaseModel):
attendee_hint: str = Field(
"",
description="Hint under the field 'Send for approval'",
- example="Send for approval",
)
active: bool = Field(..., description="Schema activity flag")
schema_: t.Optional[t.Dict[str, AccountVacancyRequestSchemaField]] = Field(
diff --git a/huntflow_api_client/models/response/applicant_logs.py b/huntflow_api_client/models/response/applicant_logs.py
index 3cba8fa..e62e433 100644
--- a/huntflow_api_client/models/response/applicant_logs.py
+++ b/huntflow_api_client/models/response/applicant_logs.py
@@ -1,7 +1,7 @@
from datetime import date, datetime
from typing import List, Optional
-from pydantic import BaseModel, Extra, Field, PositiveInt
+from pydantic import BaseModel, Field, PositiveInt
from huntflow_api_client.models.common import (
ApplicantOffer,
@@ -97,7 +97,6 @@ class ApplicantLogCalendarEvent(BaseModel):
description: Optional[str] = Field(
None,
description="Event description",
- example="Interview with John Doe",
)
timezone: Optional[str] = Field(None, description="Event time zone")
start: datetime = Field(..., description="Event start date and time")
@@ -185,7 +184,7 @@ class CreateApplicantLogResponse(BaseModel):
created: datetime = Field(..., description="Date and time of creation of the log")
employment_date: Optional[date] = Field(None, description="Employment date")
applicant_offer: Optional[ApplicantOffer] = Field(..., description="Offer object")
- comment: Optional[str] = Field(None, description="Comment text", example="Example comment")
+ comment: Optional[str] = Field(None, description="Comment text")
files: List[File] = Field([], description="List of files attached to the log")
calendar_event: Optional[ApplicantLogCalendarEvent] = Field(
None,
@@ -197,5 +196,5 @@ class CreateApplicantLogResponse(BaseModel):
description="Survey Questionary",
)
- class Config:
- extra = Extra.allow
+ class ConfigDict:
+ extra = "allow"
diff --git a/huntflow_api_client/models/response/applicant_on_vacancy.py b/huntflow_api_client/models/response/applicant_on_vacancy.py
index b2c7784..9601241 100644
--- a/huntflow_api_client/models/response/applicant_on_vacancy.py
+++ b/huntflow_api_client/models/response/applicant_on_vacancy.py
@@ -11,7 +11,7 @@ class AddApplicantToVacancyResponse(BaseModel):
status: int = Field(..., description="Vacancy status ID")
rejection_reason: Optional[int] = Field(None, description="Rejection reason ID")
- class Config:
+ class ConfigDict:
allow_population_by_field_name = True
@@ -22,5 +22,5 @@ class ApplicantVacancySplitResponse(BaseModel):
vacancy_id: int = Field(..., alias="vacancy", description="Child vacancy ID")
parent_vacancy_id: int = Field(..., alias="vacancy_parent", description="Parent vacancy ID")
- class Config:
+ class ConfigDict:
allow_population_by_field_name = True
diff --git a/huntflow_api_client/models/response/applicants.py b/huntflow_api_client/models/response/applicants.py
index 0238495..4c980a6 100644
--- a/huntflow_api_client/models/response/applicants.py
+++ b/huntflow_api_client/models/response/applicants.py
@@ -25,7 +25,7 @@ class ApplicantLink(BaseModel):
)
vacancy_id: int = Field(..., alias="vacancy", description="Vacancy ID")
- class Config:
+ class ConfigDict:
allow_population_by_field_name = True
@@ -71,7 +71,7 @@ class ApplicantItem(Applicant):
)
birthday: Optional[date] = Field(None, description="Date of birth")
created: Optional[datetime] = Field(
- ...,
+ None,
description="Date and time of adding an applicant",
)
email: Union[EmailStr, str, None] = Field(
diff --git a/huntflow_api_client/models/response/coworkers.py b/huntflow_api_client/models/response/coworkers.py
index 5c4fe5b..44a954e 100644
--- a/huntflow_api_client/models/response/coworkers.py
+++ b/huntflow_api_client/models/response/coworkers.py
@@ -22,7 +22,7 @@ class CoworkerResponse(BaseModel):
meta: Optional[dict] = Field(None, description="Additional meta information")
permissions: List[Permission] = Field(default_factory=list, description="Coworker permissions")
- class Config:
+ class ConfigDict:
allow_population_by_field_name = True
diff --git a/huntflow_api_client/models/response/file.py b/huntflow_api_client/models/response/file.py
index cd74ed1..64efc22 100644
--- a/huntflow_api_client/models/response/file.py
+++ b/huntflow_api_client/models/response/file.py
@@ -28,8 +28,8 @@ class Experience(BaseModel):
class ParsedFields(BaseModel):
- name: Optional[Name]
- birthdate: Optional[Birthdate]
+ name: Optional[Name] = None
+ birthdate: Optional[Birthdate] = None
phones: Optional[List[str]] = Field(None, description="Phones")
email: Optional[str] = Field(None, description="Email")
salary: Optional[int] = Field(None, description="Salary")
diff --git a/huntflow_api_client/models/response/questionary.py b/huntflow_api_client/models/response/questionary.py
index c0e7852..4408fd2 100644
--- a/huntflow_api_client/models/response/questionary.py
+++ b/huntflow_api_client/models/response/questionary.py
@@ -1,6 +1,6 @@
import typing as t
-from pydantic import BaseModel, Extra, Field
+from pydantic import BaseModel, Field, RootModel
from huntflow_api_client.models.consts import FieldType
@@ -30,12 +30,12 @@ class QuestionaryField(BaseModel):
description="Organization dictionary name (for type=dictionary)",
)
- class Config:
- extra = Extra.allow
+ class ConfigDict:
+ extra = "allow"
-class QuestionarySchemaResponse(BaseModel):
- __root__: t.Dict[str, QuestionaryField] = Field(
+class QuestionarySchemaResponse(RootModel):
+ root: t.Dict[str, QuestionaryField] = Field(
...,
description="Mapping of fields in the questionary and objects with their values",
)
diff --git a/huntflow_api_client/models/response/resume.py b/huntflow_api_client/models/response/resume.py
index 6054ea7..250ac1e 100644
--- a/huntflow_api_client/models/response/resume.py
+++ b/huntflow_api_client/models/response/resume.py
@@ -1,7 +1,7 @@
import typing as t
from datetime import datetime
-from pydantic import BaseModel, Extra, Field
+from pydantic import BaseModel, Field
from huntflow_api_client.models.common import File
from huntflow_api_client.models.consts import PrecisionTypes
@@ -277,8 +277,8 @@ class RawData(BaseModel):
description="Resume text (for resumes with auth_type = NATIVE)",
)
- class Config:
- extra = Extra.allow
+ class ConfigDict:
+ extra = "allow"
class ApplicantResumeResponse(ApplicantResume):
diff --git a/huntflow_api_client/models/response/users.py b/huntflow_api_client/models/response/users.py
index 3f51d85..79ddfab 100644
--- a/huntflow_api_client/models/response/users.py
+++ b/huntflow_api_client/models/response/users.py
@@ -15,5 +15,5 @@ class UserResponse(BaseModel):
meta: Optional[dict] = Field(None, description="Additional meta information")
permissions: List[Permission] = Field(default_factory=list, description="User permissions")
- class Config:
+ class ConfigDict:
allow_population_by_field_name = True
diff --git a/huntflow_api_client/models/response/vacancies.py b/huntflow_api_client/models/response/vacancies.py
index eee27b2..bc03c24 100644
--- a/huntflow_api_client/models/response/vacancies.py
+++ b/huntflow_api_client/models/response/vacancies.py
@@ -1,7 +1,7 @@
from datetime import datetime
from typing import Dict, List, Optional
-from pydantic import BaseModel, Extra, Field, PositiveInt, root_validator
+from pydantic import BaseModel, Field, PositiveInt, RootModel
from huntflow_api_client.models.common import File, PaginatedResponse, Vacancy, VacancyQuotaItem
from huntflow_api_client.models.consts import FieldType
@@ -24,18 +24,12 @@ class AccountVacancyRequestSchemaField(BaseModel):
alias="fields",
)
- class Config:
- extra = Extra.allow
-
+ class ConfigDict:
+ extra = "allow"
-class AdditionalFieldsSchemaResponse(BaseModel):
- __root__: Dict[str, AccountVacancyRequestSchemaField]
- @root_validator(pre=True)
- def prepare_data(
- cls, values: Dict[str, AccountVacancyRequestSchemaField] # noqa N805
- ) -> Dict[str, Dict[str, AccountVacancyRequestSchemaField]]:
- return {"__root__": values}
+class AdditionalFieldsSchemaResponse(RootModel):
+ root: Dict[str, AccountVacancyRequestSchemaField]
class VacancyItem(Vacancy):
@@ -55,7 +49,7 @@ class VacancyItem(Vacancy):
description="Vacancy status group ID",
)
- class Config:
+ class ConfigDict:
extra = "allow"
def dict(self, *args, **kwargs): # type: ignore
@@ -97,7 +91,7 @@ class VacancyResponse(VacancyChild):
description="Affiliate vacancies if vacancy is a multiple",
)
- class Config:
+ class ConfigDict:
extra = "allow"
def dict(self, *args, **kwargs): # type: ignore
@@ -140,7 +134,7 @@ class VacancyCreateResponse(Vacancy):
description="Vacancy request ID",
)
- class Config:
+ class ConfigDict:
extra = "ignore"
@@ -174,8 +168,8 @@ class VacancyFrameQuotasResponse(BaseModel):
items: List[VacancyQuotaItem]
-class VacancyQuotasResponse(BaseModel):
- __root__: Dict[str, VacancyQuotaList] = Field(..., descriptions="Vacancy quotas")
+class VacancyQuotasResponse(RootModel):
+ root: Dict[int, VacancyQuotaList] = Field(..., description="Vacancy quotas")
class VacancyStatusInGroup(BaseModel):
diff --git a/pdm.lock b/pdm.lock
index ef81bea..1ce21be 100644
--- a/pdm.lock
+++ b/pdm.lock
@@ -1,6 +1,15 @@
# This file is @generated by PDM.
# It is not intended for manual editing.
+[[package]]
+name = "annotated-types"
+version = "0.5.0"
+requires_python = ">=3.7"
+summary = "Reusable constraint types to use with typing.Annotated"
+dependencies = [
+ "typing-extensions>=4.0.0; python_version < \"3.9\"",
+]
+
[[package]]
name = "anyio"
version = "3.6.2"
@@ -19,8 +28,8 @@ summary = "Classes Without Boilerplate"
[[package]]
name = "black"
-version = "23.3.0"
-requires_python = ">=3.7"
+version = "23.7.0"
+requires_python = ">=3.8"
summary = "The uncompromising code formatter."
dependencies = [
"click>=8.0.0",
@@ -77,18 +86,18 @@ summary = "Backport of PEP 654 (exception groups)"
[[package]]
name = "flake8"
-version = "6.0.0"
+version = "6.1.0"
requires_python = ">=3.8.1"
summary = "the modular source code checker: pep8 pyflakes and co"
dependencies = [
"mccabe<0.8.0,>=0.7.0",
- "pycodestyle<2.11.0,>=2.10.0",
- "pyflakes<3.1.0,>=3.0.0",
+ "pycodestyle<2.12.0,>=2.11.0",
+ "pyflakes<3.2.0,>=3.1.0",
]
[[package]]
name = "flake8-bugbear"
-version = "23.5.9"
+version = "23.7.10"
requires_python = ">=3.8.1"
summary = "A plugin for flake8 finding likely bugs and design problems in your program. Contains warnings that don't belong in pyflakes and pycodestyle."
dependencies = [
@@ -115,8 +124,8 @@ dependencies = [
[[package]]
name = "flake8-comprehensions"
-version = "3.12.0"
-requires_python = ">=3.7"
+version = "3.14.0"
+requires_python = ">=3.8"
summary = "A flake8 plugin to help you write better list/set/dict comprehensions."
dependencies = [
"flake8!=3.2.0,>=3.0",
@@ -132,7 +141,7 @@ dependencies = [
[[package]]
name = "flake8-variables-names"
-version = "0.0.5"
+version = "0.0.6"
requires_python = ">=3.7"
summary = "A flake8 extension that helps to make more readable variables names"
@@ -165,7 +174,7 @@ dependencies = [
[[package]]
name = "httpx"
-version = "0.24.0"
+version = "0.24.1"
requires_python = ">=3.7"
summary = "The next generation HTTP client."
dependencies = [
@@ -201,13 +210,13 @@ summary = "McCabe checker, plugin for flake8"
[[package]]
name = "mypy"
-version = "1.3.0"
-requires_python = ">=3.7"
+version = "1.5.1"
+requires_python = ">=3.8"
summary = "Optional static typing for Python"
dependencies = [
"mypy-extensions>=1.0.0",
"tomli>=1.1.0; python_version < \"3.11\"",
- "typing-extensions>=3.10",
+ "typing-extensions>=4.1.0",
]
[[package]]
@@ -242,28 +251,39 @@ summary = "plugin and hook calling mechanisms for python"
[[package]]
name = "pycodestyle"
-version = "2.10.0"
-requires_python = ">=3.6"
+version = "2.11.0"
+requires_python = ">=3.8"
summary = "Python style guide checker"
[[package]]
name = "pydantic"
-version = "1.10.7"
+version = "2.3.0"
requires_python = ">=3.7"
-summary = "Data validation and settings management using python type hints"
+summary = "Data validation using Python type hints"
dependencies = [
- "typing-extensions>=4.2.0",
+ "annotated-types>=0.4.0",
+ "pydantic-core==2.6.3",
+ "typing-extensions>=4.6.1",
+]
+
+[[package]]
+name = "pydantic-core"
+version = "2.6.3"
+requires_python = ">=3.7"
+summary = ""
+dependencies = [
+ "typing-extensions!=4.7.0,>=4.6.0",
]
[[package]]
name = "pyflakes"
-version = "3.0.1"
-requires_python = ">=3.6"
+version = "3.1.0"
+requires_python = ">=3.8"
summary = "passive checker of Python programs"
[[package]]
name = "pytest"
-version = "7.3.1"
+version = "7.4.1"
requires_python = ">=3.7"
summary = "pytest: simple powerful testing with Python"
dependencies = [
@@ -277,22 +297,13 @@ dependencies = [
[[package]]
name = "pytest-asyncio"
-version = "0.21.0"
+version = "0.21.1"
requires_python = ">=3.7"
summary = "Pytest support for asyncio"
dependencies = [
"pytest>=7.0.0",
]
-[[package]]
-name = "pytest-freezegun"
-version = "0.4.2"
-summary = "Wrap tests with fixtures in freeze_time"
-dependencies = [
- "freezegun>0.3",
- "pytest>=3.0.0",
-]
-
[[package]]
name = "pytest-httpx"
version = "0.22.0"
@@ -314,7 +325,7 @@ dependencies = [
[[package]]
name = "respx"
-version = "0.20.1"
+version = "0.20.2"
requires_python = ">=3.7"
summary = "A utility for mocking out the Python HTTPX and HTTP Core libraries."
dependencies = [
@@ -323,8 +334,8 @@ dependencies = [
[[package]]
name = "setuptools"
-version = "67.7.2"
-requires_python = ">=3.7"
+version = "68.1.2"
+requires_python = ">=3.8"
summary = "Easily download, build, install, upgrade, and uninstall Python packages"
[[package]]
@@ -347,7 +358,7 @@ summary = "A lil' TOML parser"
[[package]]
name = "typing-extensions"
-version = "4.5.0"
+version = "4.7.1"
requires_python = ">=3.7"
summary = "Backported and Experimental Type Hints for Python 3.7+"
@@ -355,9 +366,13 @@ summary = "Backported and Experimental Type Hints for Python 3.7+"
lock_version = "4.2"
cross_platform = true
groups = ["default", "lint", "test"]
-content_hash = "sha256:4f924f3751260019f3113dfc4711ba904ffd7acb67603eca610128ba71f65bae"
+content_hash = "sha256:73b6011b63d343544e5415c24ab7aaaa1b60a7397dbcdd28078eed6bdb187d13"
[metadata.files]
+"annotated-types 0.5.0" = [
+ {url = "https://files.pythonhosted.org/packages/42/97/41ccb6acac36fdd13592a686a21b311418f786f519e5794b957afbcea938/annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"},
+ {url = "https://files.pythonhosted.org/packages/d8/f0/a2ee543a96cc624c35a9086f39b1ed2aa403c6d355dfe47a11ee5c64a164/annotated_types-0.5.0-py3-none-any.whl", hash = "sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd"},
+]
"anyio 3.6.2" = [
{url = "https://files.pythonhosted.org/packages/77/2b/b4c0b7a3f3d61adb1a1e0b78f90a94e2b6162a043880704b7437ef297cad/anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"},
{url = "https://files.pythonhosted.org/packages/8b/94/6928d4345f2bc1beecbff03325cad43d320717f51ab74ab5a571324f4f5a/anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"},
@@ -366,32 +381,29 @@ content_hash = "sha256:4f924f3751260019f3113dfc4711ba904ffd7acb67603eca610128ba7
{url = "https://files.pythonhosted.org/packages/97/90/81f95d5f705be17872843536b1868f351805acf6971251ff07c1b8334dbb/attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"},
{url = "https://files.pythonhosted.org/packages/f0/eb/fcb708c7bf5056045e9e98f62b93bd7467eb718b0202e7698eb11d66416c/attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"},
]
-"black 23.3.0" = [
- {url = "https://files.pythonhosted.org/packages/06/1e/273d610249f0335afb1ddb03664a03223f4826e3d1a95170a0142cb19fb4/black-23.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb"},
- {url = "https://files.pythonhosted.org/packages/12/4b/99c71d1cf1353edd5aff2700b8960f92e9b805c9dab72639b67dbb449d3a/black-23.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961"},
- {url = "https://files.pythonhosted.org/packages/13/0a/ed8b66c299e896780e4528eed4018f5b084da3b9ba4ee48328550567d866/black-23.3.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5"},
- {url = "https://files.pythonhosted.org/packages/13/25/cfa06788d0a936f2445af88f13604b5bcd5c9d050db618c718e6ebe66f74/black-23.3.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30"},
- {url = "https://files.pythonhosted.org/packages/21/14/d5a2bec5fb15f9118baab7123d344646fac0b1c6939d51c2b05259cd2d9c/black-23.3.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331"},
- {url = "https://files.pythonhosted.org/packages/24/eb/2d2d2c27cb64cfd073896f62a952a802cd83cf943a692a2f278525b57ca9/black-23.3.0-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b"},
- {url = "https://files.pythonhosted.org/packages/27/70/07aab2623cfd3789786f17e051487a41d5657258c7b1ef8f780512ffea9c/black-23.3.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9"},
- {url = "https://files.pythonhosted.org/packages/29/b1/b584fc863c155653963039664a592b3327b002405043b7e761b9b0212337/black-23.3.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2"},
- {url = "https://files.pythonhosted.org/packages/3c/d7/85f3d79f9e543402de2244c4d117793f262149e404ea0168841613c33e07/black-23.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab"},
- {url = "https://files.pythonhosted.org/packages/3f/0d/81dd4194ce7057c199d4f28e4c2a885082d9d929e7a55c514b23784f7787/black-23.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326"},
- {url = "https://files.pythonhosted.org/packages/49/36/15d2122f90ff1cd70f06892ebda777b650218cf84b56b5916a993dc1359a/black-23.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2"},
- {url = "https://files.pythonhosted.org/packages/49/d7/f3b7da6c772800f5375aeb050a3dcf682f0bbeb41d313c9c2820d0156e4e/black-23.3.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266"},
- {url = "https://files.pythonhosted.org/packages/69/49/7e1f0cf585b0d607aad3f971f95982cc4208fc77f92363d632d23021ee57/black-23.3.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d"},
- {url = "https://files.pythonhosted.org/packages/6d/b4/0f13ab7f5e364795ff82b76b0f9a4c9c50afda6f1e2feeb8b03fdd7ec57d/black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c"},
- {url = "https://files.pythonhosted.org/packages/ad/e7/4642b7f462381799393fbad894ba4b32db00870a797f0616c197b07129a9/black-23.3.0-py3-none-any.whl", hash = "sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4"},
- {url = "https://files.pythonhosted.org/packages/c0/53/42e312c17cfda5c8fc4b6b396a508218807a3fcbb963b318e49d3ddd11d5/black-23.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70"},
- {url = "https://files.pythonhosted.org/packages/ca/44/eb41edd3f558a6139f09eee052dead4a7a464e563b822ddf236f5a8ee286/black-23.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925"},
- {url = "https://files.pythonhosted.org/packages/ce/f4/2b0c6ac9e1f8584296747f66dd511898b4ebd51d6510dba118279bff53b6/black-23.3.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27"},
- {url = "https://files.pythonhosted.org/packages/d1/6e/5810b6992ed70403124c67e8b3f62858a32b35405177553f1a78ed6b6e31/black-23.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8"},
- {url = "https://files.pythonhosted.org/packages/d6/36/66370f5017b100225ec4950a60caeef60201a10080da57ddb24124453fba/black-23.3.0.tar.gz", hash = "sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940"},
- {url = "https://files.pythonhosted.org/packages/d7/6f/d3832960a3b646b333b7f0d80d336a3c123012e9d9d5dba4a622b2b6181d/black-23.3.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6"},
- {url = "https://files.pythonhosted.org/packages/db/f4/7908f71cc71da08df1317a3619f002cbf91927fb5d3ffc7723905a2113f7/black-23.3.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915"},
- {url = "https://files.pythonhosted.org/packages/de/b4/76f152c5eb0be5471c22cd18380d31d188930377a1a57969073b89d6615d/black-23.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c"},
- {url = "https://files.pythonhosted.org/packages/eb/a5/17b40bfd9b607b69fa726b0b3a473d14b093dcd5191ea1a1dd664eccfee3/black-23.3.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b"},
- {url = "https://files.pythonhosted.org/packages/fd/5b/fc2d7922c1a6bb49458d424b5be71d251f2d0dc97be9534e35d171bdc653/black-23.3.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3"},
+"black 23.7.0" = [
+ {url = "https://files.pythonhosted.org/packages/09/16/ec8d08d2501a39258955c16fccb55a02faa6ef44190ca9fb0b88be0f494d/black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"},
+ {url = "https://files.pythonhosted.org/packages/10/bb/025dced0f7a2c00c59810700fbdab877b9a49cf817383133b79b0df5f0fe/black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"},
+ {url = "https://files.pythonhosted.org/packages/13/93/b62741e817592e9dbb29935bb30daf3d7ad089dcb347e240271fe687b513/black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"},
+ {url = "https://files.pythonhosted.org/packages/32/00/70def913a7a3f870a03e469e733c53ca016e2bf8cadf90b7bc09b98022d1/black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"},
+ {url = "https://files.pythonhosted.org/packages/32/df/1d4ca6b76b0a077599b133b9c9dceea0b465938170043d886d4821809d40/black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"},
+ {url = "https://files.pythonhosted.org/packages/4c/a5/e9f138d6bacc9f31906cbd5afe674ed2c48c59f5a7e46bcc466d760cd375/black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"},
+ {url = "https://files.pythonhosted.org/packages/4d/24/06c20da91df8d0b0f67e2dd3ce0feedff0b0fa6792e24e3f83452f3c38a2/black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"},
+ {url = "https://files.pythonhosted.org/packages/51/32/4dacd14494e60d93cbfaea023f9a82c1db998ddfa5a359afeaf5e2c11f8c/black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"},
+ {url = "https://files.pythonhosted.org/packages/51/7a/ede3fec916bb5c00005a16e60c3be9d00b076f462ee38e7b396c5fea3411/black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"},
+ {url = "https://files.pythonhosted.org/packages/5d/f8/76aec9b0d1eb3ac1ba3c1a143eb8fa4813b8a80a59d07fe0a8e7e914ae55/black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"},
+ {url = "https://files.pythonhosted.org/packages/7f/1a/9e58b91b6f4ecd552de530b2309b5da32cf41e2fc116c0807c0960a96708/black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"},
+ {url = "https://files.pythonhosted.org/packages/8e/6f/67b20e7bd900b88cd4710fb5061e79740f360677f094271d73cbcaace43c/black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"},
+ {url = "https://files.pythonhosted.org/packages/90/65/742e1dbcced37750a5c6bd450eb2ecd2b3d8eced31918be6dc0e7c23caaf/black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"},
+ {url = "https://files.pythonhosted.org/packages/a7/a4/4ce0eeaccfd2665b2020cf759b05868f9be5e22a4f96b789417fce8ec57c/black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"},
+ {url = "https://files.pythonhosted.org/packages/a8/9a/eb903dd74e3dbf04981b45465b64020936317273168b4be9647c435b0f65/black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"},
+ {url = "https://files.pythonhosted.org/packages/ca/4e/6d625c4030280d7c8b17e014ad6a6ba434acd8c6bd86d8f375d6a1235dfe/black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"},
+ {url = "https://files.pythonhosted.org/packages/cd/89/748f5367f98f65a92cbe6b5542bb33f44fbac25f3d3d224509ac65955441/black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"},
+ {url = "https://files.pythonhosted.org/packages/e4/17/a819f00990e8cf4e652186603ddc8d29477362da2b7717858732b6abd13d/black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"},
+ {url = "https://files.pythonhosted.org/packages/e9/20/29d7a6614606785923edf9e8ec3ff630231992cc2fabc02eacb0d475372e/black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"},
+ {url = "https://files.pythonhosted.org/packages/f1/7e/c8f9173e5142ff0a01e6e31b338cbda30b603a855cbb9ba7afd9552e8a36/black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"},
+ {url = "https://files.pythonhosted.org/packages/f4/5d/d92ee301ec03a78945bd5e9d750446449832a1bf2d12919f667baec7b404/black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"},
+ {url = "https://files.pythonhosted.org/packages/f5/07/24fc7f8381b18fb83adf619f137628da9993387e2a35616ee95cc4fccb5c/black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"},
]
"certifi 2023.5.7" = [
{url = "https://files.pythonhosted.org/packages/93/71/752f7a4dd4c20d6b12341ed1732368546bc0ca9866139fe812f6009d9ac7/certifi-2023.5.7.tar.gz", hash = "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7"},
@@ -417,13 +429,13 @@ content_hash = "sha256:4f924f3751260019f3113dfc4711ba904ffd7acb67603eca610128ba7
{url = "https://files.pythonhosted.org/packages/61/97/17ed81b7a8d24d8f69b62c0db37abbd8c0042d4b3fc429c73dab986e7483/exceptiongroup-1.1.1-py3-none-any.whl", hash = "sha256:232c37c63e4f682982c8b6459f33a8981039e5fb8756b2074364e5055c498c9e"},
{url = "https://files.pythonhosted.org/packages/cc/38/57f14ddc8e8baeddd8993a36fe57ce7b4ba174c35048b9a6d270bb01e833/exceptiongroup-1.1.1.tar.gz", hash = "sha256:d484c3090ba2889ae2928419117447a14daf3c1231d5e30d0aae34f354f01785"},
]
-"flake8 6.0.0" = [
- {url = "https://files.pythonhosted.org/packages/66/53/3ad4a3b74d609b3b9008a10075c40e7c8909eae60af53623c3888f7a529a/flake8-6.0.0.tar.gz", hash = "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"},
- {url = "https://files.pythonhosted.org/packages/d9/6a/bb0122ebe280476c924470779d2595f1403878cafe3c8a343ac56a5a9c0e/flake8-6.0.0-py2.py3-none-any.whl", hash = "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7"},
+"flake8 6.1.0" = [
+ {url = "https://files.pythonhosted.org/packages/b0/24/bbf7175ffc47cb3d3e1eb523ddb23272968359dfcf2e1294707a2bf12fc4/flake8-6.1.0-py2.py3-none-any.whl", hash = "sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5"},
+ {url = "https://files.pythonhosted.org/packages/cf/f8/bbe24f43695c0c480181e39ce910c2650c794831886ec46ddd7c40520e6a/flake8-6.1.0.tar.gz", hash = "sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23"},
]
-"flake8-bugbear 23.5.9" = [
- {url = "https://files.pythonhosted.org/packages/1b/ba/39f5962709c8f39949b2bd3fa80e231663f2e8411ba3a47072546772e48b/flake8_bugbear-23.5.9-py3-none-any.whl", hash = "sha256:631fa927fbc799e8ca636b849dd7dfc304812287137b6ecb3277821f028bee40"},
- {url = "https://files.pythonhosted.org/packages/33/13/f40f36309d1f483f4a829a408883a8925a4709b7d955582c2aa14908afbb/flake8-bugbear-23.5.9.tar.gz", hash = "sha256:695c84a5d7da54eb35d79a7354dbaf3aaba80de32250608868aa1c85534b2a86"},
+"flake8-bugbear 23.7.10" = [
+ {url = "https://files.pythonhosted.org/packages/b6/7d/4713ba70574d1354f68e69e25c8d2347dbf5b3269ba4861a56727dc82a95/flake8-bugbear-23.7.10.tar.gz", hash = "sha256:0ebdc7d8ec1ca8bd49347694562381f099f4de2f8ec6bda7a7dca65555d9e0d4"},
+ {url = "https://files.pythonhosted.org/packages/fd/30/90e1bce4df2c33e8d639f22c6fb313499df6b197f0300a177c2a69df489d/flake8_bugbear-23.7.10-py3-none-any.whl", hash = "sha256:d99d005114020fbef47ed5e4aebafd22f167f9a0fbd0d8bf3c9e90612cb25c34"},
]
"flake8-builtins 2.1.0" = [
{url = "https://files.pythonhosted.org/packages/6a/20/686c5127161dcda4ab4cb05898f2cc4bf29e3381c78a94674016729ee127/flake8_builtins-2.1.0-py3-none-any.whl", hash = "sha256:469e8f03d6d0edf4b1e62b6d5a97dce4598592c8a13ec8f0952e7a185eba50a1"},
@@ -433,16 +445,16 @@ content_hash = "sha256:4f924f3751260019f3113dfc4711ba904ffd7acb67603eca610128ba7
{url = "https://files.pythonhosted.org/packages/0e/83/814bc8eb02b8883bc004384a1fb8b1f45b4a0b892e579fec7c80a9368526/flake8-commas-2.1.0.tar.gz", hash = "sha256:940441ab8ee544df564ae3b3f49f20462d75d5c7cac2463e0b27436e2050f263"},
{url = "https://files.pythonhosted.org/packages/18/0d/41895badcdbbe84893b95c114d5bd4345d69c9d5645a42857f1ccb84d556/flake8_commas-2.1.0-py2.py3-none-any.whl", hash = "sha256:ebb96c31e01d0ef1d0685a21f3f0e2f8153a0381430e748bf0bbbb5d5b453d54"},
]
-"flake8-comprehensions 3.12.0" = [
- {url = "https://files.pythonhosted.org/packages/65/b4/9a2cbbac095aaf1e8dbe3eac55a5155cb9f7860fbb0d9fa23443b5a3afd1/flake8_comprehensions-3.12.0.tar.gz", hash = "sha256:419ef1a6e8de929203791a5e8ff5e3906caeba13eb3290eebdbf88a9078d502e"},
- {url = "https://files.pythonhosted.org/packages/9b/8d/b70f791311a8c6975c0c6634dd44db8fd712d6ad9ed6a3fe888b9be7c89b/flake8_comprehensions-3.12.0-py3-none-any.whl", hash = "sha256:013234637ec7dfcb7cd2900578fb53c512f81db909cefe371c019232695c362d"},
+"flake8-comprehensions 3.14.0" = [
+ {url = "https://files.pythonhosted.org/packages/47/2b/24fa5fdcdbda36d37b20b705bba7d5439d57949dfbcdc159a7a0cd5f137b/flake8_comprehensions-3.14.0-py3-none-any.whl", hash = "sha256:7b9d07d94aa88e62099a6d1931ddf16c344d4157deedf90fe0d8ee2846f30e97"},
+ {url = "https://files.pythonhosted.org/packages/d6/4e/e3324cee771c0604f0b8b82c7cfc29b41e8396c5a4a891f720a6604ec5b0/flake8_comprehensions-3.14.0.tar.gz", hash = "sha256:81768c61bfc064e1a06222df08a2580d97de10cb388694becaf987c331c6c0cf"},
]
"flake8-quotes 3.3.2" = [
{url = "https://files.pythonhosted.org/packages/88/89/7c5a8e671c17ae49e4b89b06d9d2db5608eea7c66b04d70d27390da9ddb9/flake8-quotes-3.3.2.tar.gz", hash = "sha256:6e26892b632dacba517bf27219c459a8396dcfac0f5e8204904c5a4ba9b480e1"},
]
-"flake8-variables-names 0.0.5" = [
- {url = "https://files.pythonhosted.org/packages/10/85/407cf43cfb06fc4045a384d1778675e7cf5be53c4fa93286572c311baeb9/flake8_variables_names-0.0.5-py3-none-any.whl", hash = "sha256:e3277031696bbe10b5132b49938cde1d70fcae9561533b7bd7ab8e69cb27addb"},
- {url = "https://files.pythonhosted.org/packages/80/a0/6c0a2fc99440a758b06a5c2b4af3931d521b9d2afba940e7a7adc8db9a47/flake8_variables_names-0.0.5.tar.gz", hash = "sha256:30133e14ee2300e13a60393a00f74d98110c76070ac67d1ab91606f02824a7e1"},
+"flake8-variables-names 0.0.6" = [
+ {url = "https://files.pythonhosted.org/packages/3a/e8/845c33c7ac0f6c495c5cbcfebc6a281b28017570f2edea65b24daaed47f0/flake8_variables_names-0.0.6-py3-none-any.whl", hash = "sha256:4aff935d54b3f7afcd026b4dae55029877bd05a7c507b294b45bc7bf577d7b47"},
+ {url = "https://files.pythonhosted.org/packages/6a/4f/a04c504e1cc53a17f296837cc98140707b45f2deaad6d3e34503c161a3b0/flake8_variables_names-0.0.6.tar.gz", hash = "sha256:292c50e4813d632aa3adcd02c185e7bb583f5fc8ebe02e70f13c958bfe46ad91"},
]
"freezegun 1.2.2" = [
{url = "https://files.pythonhosted.org/packages/1d/97/002ac49ec52858538b4aa6f6831f83c2af562c17340bdf6043be695f39ac/freezegun-1.2.2.tar.gz", hash = "sha256:cd22d1ba06941384410cd967d8a99d5ae2442f57dfafeff2fda5de8dc5c05446"},
@@ -456,9 +468,9 @@ content_hash = "sha256:4f924f3751260019f3113dfc4711ba904ffd7acb67603eca610128ba7
{url = "https://files.pythonhosted.org/packages/41/16/c809655d32fd93e688b9e2a1aaba1008118369d1eda00818f6f65eb509f8/httpcore-0.17.0.tar.gz", hash = "sha256:cc045a3241afbf60ce056202301b4d8b6af08845e3294055eb26b09913ef903c"},
{url = "https://files.pythonhosted.org/packages/6c/39/05ebe30333ec66bba849d3c25c85d759b94c43bb03b2222de051c50d4390/httpcore-0.17.0-py3-none-any.whl", hash = "sha256:0fdfea45e94f0c9fd96eab9286077f9ff788dd186635ae61b312693e4d943599"},
]
-"httpx 0.24.0" = [
- {url = "https://files.pythonhosted.org/packages/4e/c1/692013f1e6115a061a14f6c7d05947515a1eb7b85ef6e9bf0ffbf0e92738/httpx-0.24.0-py3-none-any.whl", hash = "sha256:447556b50c1921c351ea54b4fe79d91b724ed2b027462ab9a329465d147d5a4e"},
- {url = "https://files.pythonhosted.org/packages/ae/23/f7beaf11a8b95fc173b8979c4bfd23ea7711c5ebd458d657d24a59df7e9f/httpx-0.24.0.tar.gz", hash = "sha256:507d676fc3e26110d41df7d35ebd8b3b8585052450f4097401c9be59d928c63e"},
+"httpx 0.24.1" = [
+ {url = "https://files.pythonhosted.org/packages/ec/91/e41f64f03d2a13aee7e8c819d82ee3aa7cdc484d18c0ae859742597d5aa0/httpx-0.24.1-py3-none-any.whl", hash = "sha256:06781eb9ac53cde990577af654bd990a4949de37a28bdb4a230d434f3a30b9bd"},
+ {url = "https://files.pythonhosted.org/packages/f8/2a/114d454cb77657dbf6a293e69390b96318930ace9cd96b51b99682493276/httpx-0.24.1.tar.gz", hash = "sha256:5853a43053df830c20f8110c5e69fe44d035d850b2dfe795e196f00fdb774bdd"},
]
"idna 3.4" = [
{url = "https://files.pythonhosted.org/packages/8b/e1/43beb3d38dba6cb420cefa297822eac205a277ab43e5ba5d5c46faf96438/idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
@@ -476,33 +488,34 @@ content_hash = "sha256:4f924f3751260019f3113dfc4711ba904ffd7acb67603eca610128ba7
{url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
{url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
]
-"mypy 1.3.0" = [
- {url = "https://files.pythonhosted.org/packages/09/7b/8eb0d648352c61b08cb364d278b5c12c3f1c5841724fdd2929d7172b7eaf/mypy-1.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f9dca1e257d4cc129517779226753dbefb4f2266c4eaad610fc15c6a7e14283e"},
- {url = "https://files.pythonhosted.org/packages/11/41/d24f93eefc89c650782bf1f9acfdb02a32f327b841058a5b0ce5857b60af/mypy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4c99c3ecf223cf2952638da9cd82793d8f3c0c5fa8b6ae2b2d9ed1e1ff51ba85"},
- {url = "https://files.pythonhosted.org/packages/25/c7/4735f81858a727e170279144600881fe3299aa7589ed585af6b788ea4556/mypy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6e33bb8b2613614a33dff70565f4c803f889ebd2f859466e42b46e1df76018dd"},
- {url = "https://files.pythonhosted.org/packages/2b/27/4a26f91301804969194ee0dc9393843f10566d7fdf192ce11fc0218a989d/mypy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c1eb485cea53f4f5284e5baf92902cd0088b24984f4209e25981cc359d64448d"},
- {url = "https://files.pythonhosted.org/packages/3c/5d/b87339c1fdfec7d13899cd7ad2ee992801695114c1cf9e1645da264cd437/mypy-1.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:74bc9b6e0e79808bf8678d7678b2ae3736ea72d56eede3820bd3849823e7f305"},
- {url = "https://files.pythonhosted.org/packages/47/f6/25c154bb1c479f2047093f0580c2c35ffc1ff007d52b7e50020cca60c010/mypy-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:76ec771e2342f1b558c36d49900dfe81d140361dd0d2df6cd71b3db1be155409"},
- {url = "https://files.pythonhosted.org/packages/4c/10/530d2df4d57f46f77b8211cf9bbe090baacff02e7076f21f1bf08148d541/mypy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ddae0f39ca146972ff6bb4399f3b2943884a774b8771ea0a8f50e971f5ea5ba8"},
- {url = "https://files.pythonhosted.org/packages/55/e1/90487a3ea5a88b8f5c9d7fbf6f5fa7fcc8633d0132ce8364810a1da901c9/mypy-1.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cbc07246253b9e3d7d74c9ff948cd0fd7a71afcc2b77c7f0a59c26e9395cb152"},
- {url = "https://files.pythonhosted.org/packages/5b/fb/0b1c90c635319b98dd65c6d6d6347413e42397e94057993011eeedeffbd9/mypy-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8c5979d0deb27e0f4479bee18ea0f83732a893e81b78e62e2dda3e7e518c92ee"},
- {url = "https://files.pythonhosted.org/packages/6a/d0/4681d84878cecfd911752016ab30566366f6de7296fdc977b746eb68bf45/mypy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7d23370d2a6b7a71dc65d1266f9a34e4cde9e8e21511322415db4b26f46f6b8c"},
- {url = "https://files.pythonhosted.org/packages/6a/d9/48de5203f4b6287a98fadcc47072b1bc69e3faaa39cba59a3a600b05a42c/mypy-1.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6e42d29e324cdda61daaec2336c42512e59c7c375340bd202efa1fe0f7b8f8ca"},
- {url = "https://files.pythonhosted.org/packages/7e/75/021af7f0683ea19b9ad6a436e1b5c7cb39899c0f7b31040fa69b2395421e/mypy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:a22435632710a4fcf8acf86cbd0d69f68ac389a3892cb23fbad176d1cddaf228"},
- {url = "https://files.pythonhosted.org/packages/86/56/08c5ff6b2139f301d9aa56cb8e7b2a24d4faa6fc3e94234dfe7eeecc9c44/mypy-1.3.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:faff86aa10c1aa4a10e1a301de160f3d8fc8703b88c7e98de46b531ff1276a9a"},
- {url = "https://files.pythonhosted.org/packages/88/0e/646696eb8fe7658b752009a495054a0214ae8e659e9cbcde8181f16ae999/mypy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:658fe7b674769a0770d4b26cb4d6f005e88a442fe82446f020be8e5f5efb2fae"},
- {url = "https://files.pythonhosted.org/packages/8d/c8/681f4a19c62aa71bdc9ad3a4bc9a0fb8846bd0b5a8bc1b29d261c8025f80/mypy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:550a8b3a19bb6589679a7c3c31f64312e7ff482a816c96e0cecec9ad3a7564dd"},
- {url = "https://files.pythonhosted.org/packages/90/b6/a2d2ba604982af6034e3fcad17a464a66127be47f07b4587beec76e8f80b/mypy-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:44797d031a41516fcf5cbfa652265bb994e53e51994c1bd649ffcd0c3a7eccbf"},
- {url = "https://files.pythonhosted.org/packages/b1/ce/8d87f684bb7e2a520cfa9cd17b8dc686a83143bb12a3e1ac4ad6d8d4825c/mypy-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c5d2cc54175bab47011b09688b418db71403aefad07cbcd62d44010543fc143f"},
- {url = "https://files.pythonhosted.org/packages/b1/e1/399e3dfeb2842e4a2634866e4ef8b69151d465b7a5ceb648d7f1296f17d0/mypy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:95d8d31a7713510685b05fbb18d6ac287a56c8f6554d88c19e73f724a445448a"},
- {url = "https://files.pythonhosted.org/packages/b8/36/6628916f94bb0816e1719117e1962750413ab408f83673ce7d571caf3960/mypy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c4c42c60a8103ead4c1c060ac3cdd3ff01e18fddce6f1016e08939647a0e703"},
- {url = "https://files.pythonhosted.org/packages/ba/ac/1c280246fc0c5239409f31e1a321f178ba11a9c6e5eaaf6d56f9ff627cdf/mypy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e86c2c6852f62f8f2b24cb7a613ebe8e0c7dc1402c61d36a609174f63e0ff017"},
- {url = "https://files.pythonhosted.org/packages/c9/c5/f3e4ed59e08e3a728a15da198317edfcd13b7dc2215d52b5d85fce716285/mypy-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:87df44954c31d86df96c8bd6e80dfcd773473e877ac6176a8e29898bfb3501cb"},
- {url = "https://files.pythonhosted.org/packages/cd/b9/6abe1cd8ac8e70f12f43eebe6427814f9d36142d331eae5cc5bba77585a2/mypy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:d0b6c62206e04061e27009481cb0ec966f7d6172b5b936f3ead3d74f29fe3dcf"},
- {url = "https://files.pythonhosted.org/packages/d8/c6/de2e214a42b63d7ea0abef9f02a6da69cad6d532165bb7a8cc8291099a0c/mypy-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:473117e310febe632ddf10e745a355714e771ffe534f06db40702775056614c4"},
- {url = "https://files.pythonhosted.org/packages/d9/79/82d452b409d7610944ba3a1a6079987d3ed6062cb8fe5c8850f26dafb6e0/mypy-1.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebc95f8386314272bbc817026f8ce8f4f0d2ef7ae44f947c4664efac9adec929"},
- {url = "https://files.pythonhosted.org/packages/e3/f7/1fed3b24abb75f244fa6bc60ea03cd9d3d8ad225a4cfda7533042fe6d831/mypy-1.3.0-py3-none-any.whl", hash = "sha256:a8763e72d5d9574d45ce5881962bc8e9046bf7b375b0abf031f3e6811732a897"},
- {url = "https://files.pythonhosted.org/packages/f9/88/3bfe07521fb9e74b449cbc4367434067ec70bfd8a24c652fa3e0f9597389/mypy-1.3.0.tar.gz", hash = "sha256:e1f4d16e296f5135624b34e8fb741eb0eadedca90862405b1f1fde2040b9bd11"},
+"mypy 1.5.1" = [
+ {url = "https://files.pythonhosted.org/packages/04/ba/117a7497a714a8a62867e752fd8ba63eeac8e9a46bc9fc24bd85b00c2c84/mypy-1.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275"},
+ {url = "https://files.pythonhosted.org/packages/08/dc/3d8800a45ff8b7a38125547acaf6060fda9924e855ece67ff721febf5437/mypy-1.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a"},
+ {url = "https://files.pythonhosted.org/packages/0e/ef/de595eb27370020ca51c35da3479733d7106201a9fe5f14d3531c8e1ee79/mypy-1.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65"},
+ {url = "https://files.pythonhosted.org/packages/27/e8/15e7c722cc0196a0ba296f86b68497c5de3b662ba6bf2c9eaabd18462974/mypy-1.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25"},
+ {url = "https://files.pythonhosted.org/packages/33/f9/c84b68e4a754f5ce200dcf0786aa489164fa9d9dee84e375bd7d99caf637/mypy-1.5.1.tar.gz", hash = "sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92"},
+ {url = "https://files.pythonhosted.org/packages/3b/62/e4a096ff55326bddc51f2a532cede2fa2f5d02930e1085aaa4e46bf64dd7/mypy-1.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4"},
+ {url = "https://files.pythonhosted.org/packages/42/7a/92845ec0a26900f5de0eeedb66ae4d5ae66c557d080c22fac4f97c4f2574/mypy-1.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693"},
+ {url = "https://files.pythonhosted.org/packages/45/00/9fad7fbed28a429bc5a33d8fce1b68cb96d9d248f09d63c2dec3ea93bc50/mypy-1.5.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2"},
+ {url = "https://files.pythonhosted.org/packages/4e/11/ac861ca5d9b16fd5b781c1941254d4e382e8eaab90e11f41f193d9222b7e/mypy-1.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315"},
+ {url = "https://files.pythonhosted.org/packages/51/6c/b806cf96ca3236709ae41ff8fecb9c983e95c4ac9c84ccd0a7ae74230792/mypy-1.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0"},
+ {url = "https://files.pythonhosted.org/packages/63/20/c55a48793a30b0786755c108d81406ce43604bc600cdcd4990cb62b37cb8/mypy-1.5.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb"},
+ {url = "https://files.pythonhosted.org/packages/66/40/7ba73ceb0e940d587eef9c6ba6904d368779218b3e06c1a94f509f894615/mypy-1.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160"},
+ {url = "https://files.pythonhosted.org/packages/66/51/6ef9d704c9d1f2197e2b966d0e50948879b97c6057f2652a9ba28e563c08/mypy-1.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243"},
+ {url = "https://files.pythonhosted.org/packages/67/d8/a58b710b5644d34f6137cdc7a9ffcfd97267b32ee75289ad386852689778/mypy-1.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f"},
+ {url = "https://files.pythonhosted.org/packages/6c/92/68315e0aec041c4a5c720289f6c3ff1234742362659f3229e1668898c250/mypy-1.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12"},
+ {url = "https://files.pythonhosted.org/packages/9c/b0/b9cb9ac4253d67442f3717befc5c39eff80c4d5a3b675414a281f6fbd486/mypy-1.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1"},
+ {url = "https://files.pythonhosted.org/packages/9d/5f/6ccabe78465c6b82a08519a52a7ffdcc450edbe7e338a223e3169cda588e/mypy-1.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d"},
+ {url = "https://files.pythonhosted.org/packages/aa/a7/5caeb0b00900652cff5b39a72bb9020ec02decabf1d5e92e41722d3e9d2c/mypy-1.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb"},
+ {url = "https://files.pythonhosted.org/packages/bb/a1/eb6754a227d1b94058856962a5726e519abbb89433094111eff52e405af0/mypy-1.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161"},
+ {url = "https://files.pythonhosted.org/packages/c1/6d/755ef7671bc01e2990dbd0054bd1855786b749764e35724be22d2d64c11d/mypy-1.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14"},
+ {url = "https://files.pythonhosted.org/packages/c3/e5/d0314a7cc4c11a4ce4a96cac9757630436a5d3fcbb6d10b04e2253cfd6a3/mypy-1.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770"},
+ {url = "https://files.pythonhosted.org/packages/d7/e0/4f80f9d3a7dffb97d7ba3b2eb6b06011d311bfd645727e51b003db482d48/mypy-1.5.1-py3-none-any.whl", hash = "sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5"},
+ {url = "https://files.pythonhosted.org/packages/e3/41/8c200b001eba5cfa4f3b12abc9892b5af372da4613e77f1819cc08e2c15f/mypy-1.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a"},
+ {url = "https://files.pythonhosted.org/packages/e3/da/71b2bcbf64a1e51dd668ce1b9a149c4bdada0fb1b8cd023b7087bf6c0ab0/mypy-1.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373"},
+ {url = "https://files.pythonhosted.org/packages/e3/f2/f423ed3f405d5986e90990464cdc717a7745837e152400f4e8d6be965a35/mypy-1.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70"},
+ {url = "https://files.pythonhosted.org/packages/f5/e9/0207b4be5f20b15a2a8fc5507941cbf18887c026d21486ad62dd65054dc1/mypy-1.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4"},
+ {url = "https://files.pythonhosted.org/packages/ff/87/7a81805e19648bc1f27569b1897774106aeca917b91a99998efb9a351525/mypy-1.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb"},
]
"mypy-extensions 1.0.0" = [
{url = "https://files.pythonhosted.org/packages/2a/e2/5d3f6ada4297caebe1a2add3b126fe800c96f56dbe5d1988a2cbe0b267aa/mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"},
@@ -524,63 +537,133 @@ content_hash = "sha256:4f924f3751260019f3113dfc4711ba904ffd7acb67603eca610128ba7
{url = "https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
{url = "https://files.pythonhosted.org/packages/a1/16/db2d7de3474b6e37cbb9c008965ee63835bba517e22cdb8c35b5116b5ce1/pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
]
-"pycodestyle 2.10.0" = [
- {url = "https://files.pythonhosted.org/packages/06/6b/5ca0d12ef7dcf7d20dfa35287d02297f3e0f9e515da5183654c03a9636ce/pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"},
- {url = "https://files.pythonhosted.org/packages/a2/54/001fdc0d69e8d0bb86c3423a6fa6dfada8cc26317c2635ab543e9ac411bd/pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"},
-]
-"pydantic 1.10.7" = [
- {url = "https://files.pythonhosted.org/packages/00/43/f15d991ce715a2e7a229ef7c2534527d6fe4e5d260a675bd06615a4ede82/pydantic-1.10.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:976cae77ba6a49d80f461fd8bba183ff7ba79f44aa5cfa82f1346b5626542f8e"},
- {url = "https://files.pythonhosted.org/packages/05/4e/92a0c1fd305f764801dba26182b08ccf72026766fc4451d88186185467f2/pydantic-1.10.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe2507b8ef209da71b6fb5f4e597b50c5a34b78d7e857c4f8f3115effaef5fe"},
- {url = "https://files.pythonhosted.org/packages/07/3a/5bc906697c9aa0f0fc28f81ec25995315c999fb6df7b29e56a49b08009a3/pydantic-1.10.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0cfe895a504c060e5d36b287ee696e2fdad02d89e0d895f83037245218a87fe"},
- {url = "https://files.pythonhosted.org/packages/14/60/08f4b0a87561f64305002dffc5db2078043d46ed213e730a92e16840b120/pydantic-1.10.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6434b49c0b03a51021ade5c4daa7d70c98f7a79e95b551201fff682fc1661245"},
- {url = "https://files.pythonhosted.org/packages/21/ab/d7d0f74be71041507fe7ab1a61a71b251fc7667e720323b1f51a039370bb/pydantic-1.10.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c230c0d8a322276d6e7b88c3f7ce885f9ed16e0910354510e0bae84d54991143"},
- {url = "https://files.pythonhosted.org/packages/2e/97/e1e06d17f0f928083c660f6750b321797371ebd43aa16eda0ae80a4d3a7c/pydantic-1.10.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:abfb7d4a7cd5cc4e1d1887c43503a7c5dd608eadf8bc615413fc498d3e4645cd"},
- {url = "https://files.pythonhosted.org/packages/31/9e/32896df239096e0052e390e90eb0d374367e74bf7ce603a62841310c34c7/pydantic-1.10.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:01aea3a42c13f2602b7ecbbea484a98169fb568ebd9e247593ea05f01b884b2e"},
- {url = "https://files.pythonhosted.org/packages/34/d8/fd31b8172643cbf2cfd42398cba1406ea47ca1268f5e7ba48227f06c61a6/pydantic-1.10.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:cc1dde4e50a5fc1336ee0581c1612215bc64ed6d28d2c7c6f25d2fe3e7c3e918"},
- {url = "https://files.pythonhosted.org/packages/38/cb/21afb81e5b3270cf5504543fb94a0d7734c4536b98c893701842602f9da0/pydantic-1.10.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f4a2b50e2b03d5776e7f21af73e2070e1b5c0d0df255a827e7c632962f8315af"},
- {url = "https://files.pythonhosted.org/packages/42/dc/092da33080729a95805e73084abf7cc064de7ae64462d1081859b2c1b7e2/pydantic-1.10.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d75ae19d2a3dbb146b6f324031c24f8a3f52ff5d6a9f22f0683694b3afcb16fb"},
- {url = "https://files.pythonhosted.org/packages/43/5f/e53a850fd32dddefc998b6bfcbda843d4ff5b0dcac02a92e414ba6c97d46/pydantic-1.10.7.tar.gz", hash = "sha256:cfc83c0678b6ba51b0532bea66860617c4cd4251ecf76e9846fa5a9f3454e97e"},
- {url = "https://files.pythonhosted.org/packages/5e/06/a6b6a325b4085558d48f8804433b523bf31b62e8bcad6a9f8537418240d6/pydantic-1.10.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b0f85904f73161817b80781cc150f8b906d521fa11e3cdabae19a581c3606209"},
- {url = "https://files.pythonhosted.org/packages/67/a9/f4fde01bb028c2afd0bd053ba440f7aeb609a9dc85f5d2d41a937526dbe8/pydantic-1.10.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:80b1fab4deb08a8292d15e43a6edccdffa5377a36a4597bb545b93e79c5ff0a5"},
- {url = "https://files.pythonhosted.org/packages/67/ac/ff5f7eca22bf58dbecfd266597e15b1ec7ddc68b886157a2095a25eedb17/pydantic-1.10.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:68792151e174a4aa9e9fc1b4e653e65a354a2fa0fed169f7b3d09902ad2cb6f1"},
- {url = "https://files.pythonhosted.org/packages/73/f9/860473019e228ac0b12e5cccecc086ce1f7e41d5f1482b64b9454a528e4f/pydantic-1.10.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae150a63564929c675d7f2303008d88426a0add46efd76c3fc797cd71cb1b46f"},
- {url = "https://files.pythonhosted.org/packages/7e/2f/05c7f8dbd1de1542d7560b5e7b5aeb7d58558af2262010f8de9abb466be1/pydantic-1.10.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cf135c46099ff3f919d2150a948ce94b9ce545598ef2c6c7bf55dca98a304b52"},
- {url = "https://files.pythonhosted.org/packages/81/1b/04ce5303aee97af30b94c45699ed228b8ba6ba64c972efac184fb9a566f3/pydantic-1.10.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:516f1ed9bc2406a0467dd777afc636c7091d71f214d5e413d64fef45174cfc7a"},
- {url = "https://files.pythonhosted.org/packages/83/f2/b86db67c476177ec73fce0ea87e3fa0fd686c0602efbd4e42e5ccdb2bab9/pydantic-1.10.7-cp37-cp37m-win_amd64.whl", hash = "sha256:82dffb306dd20bd5268fd6379bc4bfe75242a9c2b79fec58e1041fbbdb1f7914"},
- {url = "https://files.pythonhosted.org/packages/8a/64/db1aafc37fab0dad89e0a27f120a18f2316fca704e9f95096ade47b933ac/pydantic-1.10.7-cp310-cp310-win_amd64.whl", hash = "sha256:a7cd2251439988b413cb0a985c4ed82b6c6aac382dbaff53ae03c4b23a70e80a"},
- {url = "https://files.pythonhosted.org/packages/8a/9b/4a6e7f721e54269966be968b7672f23b69d396ff59af7be6ea2e7bc30d0b/pydantic-1.10.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d2a5ebb48958754d386195fe9e9c5106f11275867051bf017a8059410e9abf1f"},
- {url = "https://files.pythonhosted.org/packages/8d/e1/d9219c4e4161a511158e531a84aa719087064d208c2bf87df5c58812f190/pydantic-1.10.7-py3-none-any.whl", hash = "sha256:0cd181f1d0b1d00e2b705f1bf1ac7799a2d938cce3376b8007df62b29be3c2c6"},
- {url = "https://files.pythonhosted.org/packages/91/b8/e02d21709db955b92125059d6f80a1a543f9cc9f60ef212621514462b4e9/pydantic-1.10.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c15582f9055fbc1bfe50266a19771bbbef33dd28c45e78afbe1996fd70966c2a"},
- {url = "https://files.pythonhosted.org/packages/a0/ef/9b9a6c4f2e520c84c86908105bdec18a06449be0b2ec5c73526eba141402/pydantic-1.10.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d45fc99d64af9aaf7e308054a0067fdcd87ffe974f2442312372dfa66e1001d"},
- {url = "https://files.pythonhosted.org/packages/a4/cb/16648745548e4c18f4b98b7e323bbac698e77cd8fc250a6b2ff83688c95f/pydantic-1.10.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:464855a7ff7f2cc2cf537ecc421291b9132aa9c79aef44e917ad711b4a93163b"},
- {url = "https://files.pythonhosted.org/packages/aa/64/1b66f84ffe07562366c5ae87e83f0b3871afefd97f0632091629e6d5cfb2/pydantic-1.10.7-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:670bb4683ad1e48b0ecb06f0cfe2178dcf74ff27921cdf1606e527d2617a81ee"},
- {url = "https://files.pythonhosted.org/packages/b8/b7/158fb5bf629f5a97c997711757fb14e831825872c6d091a41a769c9c69e4/pydantic-1.10.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ecbbc51391248116c0a055899e6c3e7ffbb11fb5e2a4cd6f2d0b93272118a209"},
- {url = "https://files.pythonhosted.org/packages/c8/70/8fe094a67a9431095069f6f9eb2a893e11fdaec8c1182016f53a535adfec/pydantic-1.10.7-cp38-cp38-win_amd64.whl", hash = "sha256:9f6f0fd68d73257ad6685419478c5aece46432f4bdd8d32c7345f1986496171e"},
- {url = "https://files.pythonhosted.org/packages/c8/f3/8b3d444bdce482d6c206ab2b3ad309ae699f3074fde3d5e54c786f22b8c0/pydantic-1.10.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c7f51861d73e8b9ddcb9916ae7ac39fb52761d9ea0df41128e81e2ba42886cd"},
- {url = "https://files.pythonhosted.org/packages/d1/a1/0aa23b545299186f6eabc7a5d289a951e6c033852938ae6673d75846e611/pydantic-1.10.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10a86d8c8db68086f1e30a530f7d5f83eb0685e632e411dbbcf2d5c0150e8dcd"},
- {url = "https://files.pythonhosted.org/packages/d5/f0/a1bab22b297fc4333d496b34e0db42bc33c85c4b0e7e7a39da76fc65a643/pydantic-1.10.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:193924c563fae6ddcb71d3f06fa153866423ac1b793a47936656e806b64e24ca"},
- {url = "https://files.pythonhosted.org/packages/d6/59/8082b963e077ea4bec5bb85e8c0fc636e4e7b3484e6a8ceac94e743e3b74/pydantic-1.10.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e79e999e539872e903767c417c897e729e015872040e56b96e67968c3b918b2d"},
- {url = "https://files.pythonhosted.org/packages/dc/01/03bb09fdb5c06075c5dc79d4c68885e87fdc7e8becf347d6a1ff8f890f79/pydantic-1.10.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:701daea9ffe9d26f97b52f1d157e0d4121644f0fcf80b443248434958fd03dc3"},
- {url = "https://files.pythonhosted.org/packages/f1/bd/0dad4908e5f693b7951b68f435139ec583f5eebb3d75505e1efa0f2284fe/pydantic-1.10.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64d34ab766fa056df49013bb6e79921a0265204c071984e75a09cbceacbbdd5d"},
- {url = "https://files.pythonhosted.org/packages/f6/2d/0fc591686bc119d844f26268f503a7a504fbc9dd6a02e14aa42738c21fed/pydantic-1.10.7-cp39-cp39-win_amd64.whl", hash = "sha256:d71e69699498b020ea198468e2480a2f1e7433e32a3a99760058c6520e2bea7e"},
- {url = "https://files.pythonhosted.org/packages/fa/c2/3df79cd00e65678fce12e59e8c95378a992a93d7b9f9510d4f1f65df1936/pydantic-1.10.7-cp311-cp311-win_amd64.whl", hash = "sha256:b4a849d10f211389502059c33332e91327bc154acc1845f375a99eca3afa802d"},
- {url = "https://files.pythonhosted.org/packages/fd/66/3da2e7c0306251435bd61ae9da52db8a00672fdf2b2db1e3efe1692f41dd/pydantic-1.10.7-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:950ce33857841f9a337ce07ddf46bc84e1c4946d2a3bba18f8280297157a3fd1"},
-]
-"pyflakes 3.0.1" = [
- {url = "https://files.pythonhosted.org/packages/af/4c/b1c7008aa7788b3e26c06c60aa18da7d3aa1f00e344aa3f18ac92768854b/pyflakes-3.0.1-py2.py3-none-any.whl", hash = "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf"},
- {url = "https://files.pythonhosted.org/packages/f2/51/506ddcfab10d708e8460554cc1cf37c727a6a2cccbad8dfe57766cfce33c/pyflakes-3.0.1.tar.gz", hash = "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"},
-]
-"pytest 7.3.1" = [
- {url = "https://files.pythonhosted.org/packages/1b/d1/72df649a705af1e3a09ffe14b0c7d3be1fd730da6b98beb4a2ed26b8a023/pytest-7.3.1-py3-none-any.whl", hash = "sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362"},
- {url = "https://files.pythonhosted.org/packages/ec/d9/36b65598f3d19d0a14d13dc87ad5fa42869ae53bb7471f619a30eaabc4bf/pytest-7.3.1.tar.gz", hash = "sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3"},
-]
-"pytest-asyncio 0.21.0" = [
- {url = "https://files.pythonhosted.org/packages/66/73/817ddb37c627338ecbb96486c03fe69a19bef72de1b6bd641aa06fed13f4/pytest_asyncio-0.21.0-py3-none-any.whl", hash = "sha256:f2b3366b7cd501a4056858bd39349d5af19742aed2d81660b7998b6341c7eb9c"},
- {url = "https://files.pythonhosted.org/packages/85/c7/9db0c6215f12f26b590c24acc96d048e03989315f198454540dff95109cd/pytest-asyncio-0.21.0.tar.gz", hash = "sha256:2b38a496aef56f56b0e87557ec313e11e1ab9276fc3863f6a7be0f1d0e415e1b"},
-]
-"pytest-freezegun 0.4.2" = [
- {url = "https://files.pythonhosted.org/packages/9e/09/0bdd7d24b9d21453ad3364ae1efbd65082045bb6081b5fd5eade91a9b644/pytest_freezegun-0.4.2-py2.py3-none-any.whl", hash = "sha256:5318a6bfb8ba4b709c8471c94d0033113877b3ee02da5bfcd917c1889cde99a7"},
- {url = "https://files.pythonhosted.org/packages/f0/e3/c39d7c3d3afef5652f19323f3483267d7e6b0d9911c3867e10d6e2d3c9ae/pytest-freezegun-0.4.2.zip", hash = "sha256:19c82d5633751bf3ec92caa481fb5cffaac1787bd485f0df6436fd6242176949"},
+"pycodestyle 2.11.0" = [
+ {url = "https://files.pythonhosted.org/packages/31/c2/e1508ed4395793f69e40fd8c6b5a690e1d568e649aae9492076a7b6befb4/pycodestyle-2.11.0-py2.py3-none-any.whl", hash = "sha256:5d1013ba8dc7895b548be5afb05740ca82454fd899971563d2ef625d090326f8"},
+ {url = "https://files.pythonhosted.org/packages/c1/2d/022c78a6b3f591205e52b4d25c93b7329280f752b36ba2fc1377cbf016cd/pycodestyle-2.11.0.tar.gz", hash = "sha256:259bcc17857d8a8b3b4a2327324b79e5f020a13c16074670f9c8c8f872ea76d0"},
+]
+"pydantic 2.3.0" = [
+ {url = "https://files.pythonhosted.org/packages/82/06/fafdc75e48b248eff364b4249af4bcc6952225e8f20e8205820afc66e88e/pydantic-2.3.0-py3-none-any.whl", hash = "sha256:45b5e446c6dfaad9444819a293b921a40e1db1aa61ea08aede0522529ce90e81"},
+ {url = "https://files.pythonhosted.org/packages/fd/fe/8f08bf18b2c53afb4b358fae6e9b3501e169a2c1c9c0cd96f21a40bb7abd/pydantic-2.3.0.tar.gz", hash = "sha256:1607cc106602284cd4a00882986570472f193fde9cb1259bceeaedb26aa79a6d"},
+]
+"pydantic-core 2.6.3" = [
+ {url = "https://files.pythonhosted.org/packages/02/46/cb4a9d8528e4e9b585ae891553da1c187d37317d68ed841bb358442aac3d/pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e9b65a55bbabda7fccd3500192a79f6e474d8d36e78d1685496aad5f9dbd92c"},
+ {url = "https://files.pythonhosted.org/packages/07/c6/93977a6ac3c87f6ab73c10cf1774627a72ccda66ffcf18380c5f098292f6/pydantic_core-2.6.3-cp311-none-win_arm64.whl", hash = "sha256:5a2a3c9ef904dcdadb550eedf3291ec3f229431b0084666e2c2aa8ff99a103a2"},
+ {url = "https://files.pythonhosted.org/packages/09/d9/caa996532ee725acfbd065ad932d35355a569e575e366f5ae0a59df86f24/pydantic_core-2.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1fa1f6312fb84e8c281f32b39affe81984ccd484da6e9d65b3d18c202c666149"},
+ {url = "https://files.pythonhosted.org/packages/09/f6/22911450873cb37dd8578009c0235f0606815aa95fb9cd58f702d714e49d/pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5493a7027bfc6b108e17c3383959485087d5942e87eb62bbac69829eae9bc1f7"},
+ {url = "https://files.pythonhosted.org/packages/0b/06/e34be09a8faa1f3cb7b84c504fa958fbae22abad45705cf4ec615d3c81cf/pydantic_core-2.6.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8421cf496e746cf8d6b677502ed9a0d1e4e956586cd8b221e1312e0841c002d5"},
+ {url = "https://files.pythonhosted.org/packages/0b/af/363618764a1d4063407362343b1f5541fc07141176de665c9592ea68a49f/pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce8c84051fa292a5dc54018a40e2a1926fd17980a9422c973e3ebea017aa8da"},
+ {url = "https://files.pythonhosted.org/packages/0c/d6/33d8077f152f0f7e5331e5bafe2f03b0c065c6572ca1d4b2d17a6fab5b7a/pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:240a015102a0c0cc8114f1cba6444499a8a4d0333e178bc504a5c2196defd456"},
+ {url = "https://files.pythonhosted.org/packages/0c/f2/ed9d36aedac003c8755226e7e98c520b3a6d1c2db8d782936981bbe47ebd/pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3c8945a105f1589ce8a693753b908815e0748f6279959a4530f6742e1994dcb6"},
+ {url = "https://files.pythonhosted.org/packages/15/e8/508c94592226d9ddf0696a54c9d3c03018842dedc734830de0affa9b0eef/pydantic_core-2.6.3-cp39-none-win_amd64.whl", hash = "sha256:9b33bf9658cb29ac1a517c11e865112316d09687d767d7a0e4a63d5c640d1b17"},
+ {url = "https://files.pythonhosted.org/packages/18/54/6d64dff3e49e7faf4f5b989b49e46dd8b592d1e3f3db2113f4aaf1defdd3/pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171a4718860790f66d6c2eda1d95dd1edf64f864d2e9f9115840840cf5b5713f"},
+ {url = "https://files.pythonhosted.org/packages/18/88/2587e660641b0cccb823c576cd8d9cccbba2beae30260e849f6f9e4d87ec/pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f06e21ad0b504658a3a9edd3d8530e8cea5723f6ea5d280e8db8efc625b47e49"},
+ {url = "https://files.pythonhosted.org/packages/1b/63/b3caf16c86c7f5fd63dadf6fa047d58cf2b58fed5fd20e5696a6a4f64431/pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2b1bfed698fa410ab81982f681f5b1996d3d994ae8073286515ac4d165c2e7"},
+ {url = "https://files.pythonhosted.org/packages/1e/8e/07c19dfa60be2e6a1a606787aa4abd6d2da7d412b1d8d90e687b0926d965/pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:672174480a85386dd2e681cadd7d951471ad0bb028ed744c895f11f9d51b9ebe"},
+ {url = "https://files.pythonhosted.org/packages/1f/06/076ef59f71cb139e5b93483ad65da56c4f3e875f1ed54bcfbe0c98457085/pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a87c54e72aa2ef30189dc74427421e074ab4561cf2bf314589f6af5b37f45e6d"},
+ {url = "https://files.pythonhosted.org/packages/22/97/e2cbe6fd558c76027d9d66abd343ae0e73815b397d7dc79ac4af3777bcd5/pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84e87c16f582f5c753b7f39a71bd6647255512191be2d2dbf49458c4ef024588"},
+ {url = "https://files.pythonhosted.org/packages/24/b3/4609f29aa904826abeeadd966dd1666da9f44f513c81e6f45ba17c970e5b/pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:692b4ff5c4e828a38716cfa92667661a39886e71136c97b7dac26edef18767f7"},
+ {url = "https://files.pythonhosted.org/packages/26/00/9bf8ebd51f8e5e3f71dea9b8f3706a2289c66090fe309d04c1e04c08d6b4/pydantic_core-2.6.3-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2dd50d6a1aef0426a1d0199190c6c43ec89812b1f409e7fe44cb0fbf6dfa733c"},
+ {url = "https://files.pythonhosted.org/packages/27/d2/043cfbb60e4832cacccbe82100e1c0a0fe68819d4deac0c518984d348493/pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8ecbac050856eb6c3046dea655b39216597e373aa8e50e134c0e202f9c47efec"},
+ {url = "https://files.pythonhosted.org/packages/28/05/a28d2a0d74a28ed4fe9c712bcf19a8488fab63214a7f3e7eb929eff10fe2/pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1aa712ba150d5105814e53cb141412217146fedc22621e9acff9236d77d2a5ef"},
+ {url = "https://files.pythonhosted.org/packages/29/37/eb1c5853ecaac79d2dc19be206fd6732fdfa6a6bf705048d0a1046c5fa8d/pydantic_core-2.6.3-cp311-none-win_amd64.whl", hash = "sha256:84f8bb34fe76c68c9d96b77c60cef093f5e660ef8e43a6cbfcd991017d375950"},
+ {url = "https://files.pythonhosted.org/packages/2d/81/bb038964f84f8a6b5abda2cb57afd2240731b313663ceeae9b7edb150863/pydantic_core-2.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e61eae9b31799c32c5f9b7be906be3380e699e74b2db26c227c50a5fc7988698"},
+ {url = "https://files.pythonhosted.org/packages/2d/eb/1199be6d451694fc736b4e79b8f9634ceb610a9bc3c7549fb590fb103eee/pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea053cefa008fda40f92aab937fb9f183cf8752e41dbc7bc68917884454c6362"},
+ {url = "https://files.pythonhosted.org/packages/31/2a/3796bbce3843cb9f10fc2cf8776d26556353e101342ac6aab7193bc73585/pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fa159b902d22b283b680ef52b532b29554ea2a7fc39bf354064751369e9dbd7"},
+ {url = "https://files.pythonhosted.org/packages/33/3b/c8e74c5021124ff007501522b6bf8ed56c56a975954cb24ca483d7b88cff/pydantic_core-2.6.3-cp39-none-win32.whl", hash = "sha256:44b4f937b992394a2e81a5c5ce716f3dcc1237281e81b80c748b2da6dd5cf29a"},
+ {url = "https://files.pythonhosted.org/packages/35/5f/f9a80b46692e52da721ee7e07e0b74032158c112179eb60cdd10bb2faccd/pydantic_core-2.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d38bbcef58220f9c81e42c255ef0bf99735d8f11edef69ab0b499da77105158a"},
+ {url = "https://files.pythonhosted.org/packages/35/b7/fe8fce6796ae947b988409326a4c7e171b364a0d55abbe6e6e26f38529d4/pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5e4a2cf8c4543f37f5dc881de6c190de08096c53986381daebb56a355be5dfe6"},
+ {url = "https://files.pythonhosted.org/packages/35/cc/265ddcc90040f14e7e4bd12d203692eb54e6914af020f1db56d9adfc04a4/pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b25afe9d5c4f60dcbbe2b277a79be114e2e65a16598db8abee2a2dcde24f162b"},
+ {url = "https://files.pythonhosted.org/packages/39/78/03cf262776aff1478cb04e2a99230c050b76c9854a0768f68719a828e647/pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4292ca56751aebbe63a84bbfc3b5717abb09b14d4b4442cc43fd7c49a1529efd"},
+ {url = "https://files.pythonhosted.org/packages/3a/5a/37e852cee70de74babcbc6b3b5e8076d64a08577da35a2a9de72e44b6e5b/pydantic_core-2.6.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:813aab5bfb19c98ae370952b6f7190f1e28e565909bfc219a0909db168783465"},
+ {url = "https://files.pythonhosted.org/packages/3b/0e/f6030be191443ea0d7b3babfb63b2dba2e13075dd714e26b772a4742d564/pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19e20f8baedd7d987bd3f8005c146e6bcbda7cdeefc36fad50c66adb2dd2da48"},
+ {url = "https://files.pythonhosted.org/packages/3c/ee/fde99471baf04184f13651df2f98135b865d5c1a5311ab6c942a2ee7693c/pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a892b5b1871b301ce20d40b037ffbe33d1407a39639c2b05356acfef5536d26a"},
+ {url = "https://files.pythonhosted.org/packages/3d/ab/887a4e183c02d0271123773fee48bd8bfd8689ece0afc9eb5b2db32342fd/pydantic_core-2.6.3-cp37-none-win32.whl", hash = "sha256:d9b4916b21931b08096efed090327f8fe78e09ae8f5ad44e07f5c72a7eedb51b"},
+ {url = "https://files.pythonhosted.org/packages/3e/b4/202942124bcd1f480f8d70a274808d544c6b2da2d86b93518514dd1f7a68/pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c9d469204abcca28926cbc28ce98f28e50e488767b084fb3fbdf21af11d3de26"},
+ {url = "https://files.pythonhosted.org/packages/40/4b/676c27610e3495bf2d45753bb49516756df83f4b8e28d49ffa534d22ebc0/pydantic_core-2.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bb128c30cf1df0ab78166ded1ecf876620fb9aac84d2413e8ea1594b588c735d"},
+ {url = "https://files.pythonhosted.org/packages/42/6e/5f07f9c7a9190e62f2220c0376b8f8d2518246851a698b2873f771016d2d/pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:930bfe73e665ebce3f0da2c6d64455098aaa67e1a00323c74dc752627879fc67"},
+ {url = "https://files.pythonhosted.org/packages/43/7d/e4c06fc30a5d8742caaca081e18db3957a450aca9c16e6099d39a0a99cc1/pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c8c6660089a25d45333cb9db56bb9e347241a6d7509838dbbd1931d0e19dbc7f"},
+ {url = "https://files.pythonhosted.org/packages/48/8c/b6009252ad531c3b39d20f1fda91a5db050596187c70e8d39dfbe5ee9985/pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9140ded382a5b04a1c030b593ed9bf3088243a0a8b7fa9f071a5736498c5483"},
+ {url = "https://files.pythonhosted.org/packages/48/c5/86e2ca533641e7a21354379725f681cfb7980c93cfb4f1e3c03b3260915e/pydantic_core-2.6.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:6bcc1ad776fffe25ea5c187a028991c031a00ff92d012ca1cc4714087e575973"},
+ {url = "https://files.pythonhosted.org/packages/49/4f/b19bec3633fce09636d1ae96b8ddcdf29e15c0764efe0176fc40e4afabc0/pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:883daa467865e5766931e07eb20f3e8152324f0adf52658f4d302242c12e2c32"},
+ {url = "https://files.pythonhosted.org/packages/4b/1e/d6fd97a4ac47c26af73fe7b855b84b97a8897156956274b931798a6c720f/pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:85cc4d105747d2aa3c5cf3e37dac50141bff779545ba59a095f4a96b0a460e70"},
+ {url = "https://files.pythonhosted.org/packages/4e/3d/051ad07548d576b7b3f8ac8099194215599c668fcb231faffea4b1e38c0a/pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4eb77df2964b64ba190eee00b2312a1fd7a862af8918ec70fc2d6308f76ac64"},
+ {url = "https://files.pythonhosted.org/packages/55/92/714a0af3ce3a34b9f0d11f2abece455174bab68c3fce350ed24fceb7dac9/pydantic_core-2.6.3-cp312-none-win_amd64.whl", hash = "sha256:23470a23614c701b37252618e7851e595060a96a23016f9a084f3f92f5ed5881"},
+ {url = "https://files.pythonhosted.org/packages/56/cb/a8f3bd21ce196c5b5e924d975dfa013c00ca4e5005b5e3dc0dd879c49352/pydantic_core-2.6.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:f2969e8f72c6236c51f91fbb79c33821d12a811e2a94b7aa59c65f8dbdfad34a"},
+ {url = "https://files.pythonhosted.org/packages/56/f9/851d1a5f5cacc908192a0452ee20a898c3d46517480d51b6abc6c37807bb/pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:046af9cfb5384f3684eeb3f58a48698ddab8dd870b4b3f67f825353a14441418"},
+ {url = "https://files.pythonhosted.org/packages/5b/a9/abda51237902e12644c9acfdfc98de61c2f4a28e1517750b0933c993a930/pydantic_core-2.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e8b374ef41ad5c461efb7a140ce4730661aadf85958b5c6a3e9cf4e040ff4bb"},
+ {url = "https://files.pythonhosted.org/packages/5f/d3/c66c5dc33dfbb1baa0b4bc4613925d100c6c31132488e59adf77b14168d0/pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:522a9c4a4d1924facce7270c84b5134c5cabcb01513213662a2e89cf28c1d309"},
+ {url = "https://files.pythonhosted.org/packages/5f/f8/b218d36e918be03714d558dc9ffab366faf4f551fcb52f9730b3d5394116/pydantic_core-2.6.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:a53e3195f134bde03620d87a7e2b2f2046e0e5a8195e66d0f244d6d5b2f6d31b"},
+ {url = "https://files.pythonhosted.org/packages/62/ee/fb63b80855bf8a51d477da75ec89e747c5e5d5034f5a40a4d6bc449f568a/pydantic_core-2.6.3-cp38-none-win32.whl", hash = "sha256:07a1aec07333bf5adebd8264047d3dc518563d92aca6f2f5b36f505132399efc"},
+ {url = "https://files.pythonhosted.org/packages/63/af/869dd176247e855468249bcdb873103146c6b41d52b12a7c6ffc5d30462f/pydantic_core-2.6.3-cp310-none-win_amd64.whl", hash = "sha256:6bf7d610ac8f0065a286002a23bcce241ea8248c71988bda538edcc90e0c39ad"},
+ {url = "https://files.pythonhosted.org/packages/66/67/8f294836b8ebd9abc7d94fc759c8b4fbe209a5e73bed83c31257e592398a/pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:252851b38bad3bfda47b104ffd077d4f9604a10cb06fe09d020016a25107bf98"},
+ {url = "https://files.pythonhosted.org/packages/67/ff/c6df2c938113bc72db40a671eb83c17911f459910807b9644ec828aa9e78/pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b7486d85293f7f0bbc39b34e1d8aa26210b450bbd3d245ec3d732864009819"},
+ {url = "https://files.pythonhosted.org/packages/69/35/06c53275843c593026df06f00f84ea31fe7b86218cba77b26f60768aba8f/pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7dc2ce039c7290b4ef64334ec7e6ca6494de6eecc81e21cb4f73b9b39991408c"},
+ {url = "https://files.pythonhosted.org/packages/6c/6e/049b05d470d02f8d11d186a746aededa31ddad82df9a4b7fb7a670cc1cf4/pydantic_core-2.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f14546403c2a1d11a130b537dda28f07eb6c1805a43dae4617448074fd49c282"},
+ {url = "https://files.pythonhosted.org/packages/71/3b/ed4197ea7a9a6dcc233ca654d3caeb3ea383cc60ac9f7e0a5a92db9ecbc5/pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf9d42a71a4d7a7c1f14f629e5c30eac451a6fc81827d2beefd57d014c006c4a"},
+ {url = "https://files.pythonhosted.org/packages/73/d7/1839f0a48c850e6af5051248abad877f976f31ef16662805632449bd6caa/pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:439a0de139556745ae53f9cc9668c6c2053444af940d3ef3ecad95b079bc9987"},
+ {url = "https://files.pythonhosted.org/packages/75/4d/f02a7aa5b63e2c7cdb101f5524a1a0cde5e1210fe7458348964e6649894c/pydantic_core-2.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22134a4453bd59b7d1e895c455fe277af9d9d9fbbcb9dc3f4a97b8693e7e2c9b"},
+ {url = "https://files.pythonhosted.org/packages/75/72/72eff1131f1913aeb78eed21b1c2bdee57b4c41ebc94f81ea8c0d48897c6/pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:02e1c385095efbd997311d85c6021d32369675c09bcbfff3b69d84e59dc103f6"},
+ {url = "https://files.pythonhosted.org/packages/7d/c0/38ad95c35bf21e04cee9c332616504b5f2698cb34ec22dcc316c8e7fcec2/pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6595b0d8c8711e8e1dc389d52648b923b809f68ac1c6f0baa525c6440aa0daa"},
+ {url = "https://files.pythonhosted.org/packages/7e/23/8c19bbb4d3bdd823e594c0112181f6e76bdcb0f7b064d57e6372d8b72918/pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f90e5e3afb11268628c89f378f7a1ea3f2fe502a28af4192e30a6cdea1e7d5e"},
+ {url = "https://files.pythonhosted.org/packages/85/b5/c52495965cc78ad15dcf04b59abf3509d1db052b93876ab6b353c0a18ddb/pydantic_core-2.6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b44c42edc07a50a081672e25dfe6022554b47f91e793066a7b601ca290f71e42"},
+ {url = "https://files.pythonhosted.org/packages/95/4c/10fb8d0335e6966ade1d46657d0a75df714e2e6c692e9438175ae43ef9e6/pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ef724a059396751aef71e847178d66ad7fc3fc969a1a40c29f5aac1aa5f8784"},
+ {url = "https://files.pythonhosted.org/packages/9b/d7/cbd63100d798bf4d302cbea70ee0b55107e84f2dbe0b4729c3d3c1f0d70d/pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99faba727727b2e59129c59542284efebbddade4f0ae6a29c8b8d3e1f437beb7"},
+ {url = "https://files.pythonhosted.org/packages/9b/f7/cae2dacff9e3fd553ca75ae14f8060e7bb18efb522cc9a4aec7937ba410f/pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:788be9844a6e5c4612b74512a76b2153f1877cd845410d756841f6c3420230eb"},
+ {url = "https://files.pythonhosted.org/packages/9c/60/15daecade2df0d85bcbd277195ca017d5214b236f4e7476df2423b723b8a/pydantic_core-2.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5cfde4fab34dd1e3a3f7f3db38182ab6c95e4ea91cf322242ee0be5c2f7e3d2f"},
+ {url = "https://files.pythonhosted.org/packages/9e/79/40f780f3929efd6ce4be33b8c9efec5beddfcb101aaa9f2dcca76f57a64c/pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:3796a6152c545339d3b1652183e786df648ecdf7c4f9347e1d30e6750907f5bb"},
+ {url = "https://files.pythonhosted.org/packages/9f/8b/d88f086e7f40e68f8e4ea9465a8f10ffa370dda85d7facb538656c795667/pydantic_core-2.6.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1a0ddaa723c48af27d19f27f1c73bdc615c73686d763388c8683fe34ae777bad"},
+ {url = "https://files.pythonhosted.org/packages/a6/58/6ce467c899bddd94718c7d1dc66e8deada77ba4edc2186b719c791dca44e/pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b962700962f6e7a6bd77e5f37320cabac24b4c0f76afeac05e9f93cf0c620014"},
+ {url = "https://files.pythonhosted.org/packages/a7/9d/f78e8927bb73d1f6111de7be5ac1cc1d45a6e4234063a9287d9ef0f6329a/pydantic_core-2.6.3-cp310-none-win32.whl", hash = "sha256:04fe5c0a43dec39aedba0ec9579001061d4653a9b53a1366b113aca4a3c05ca7"},
+ {url = "https://files.pythonhosted.org/packages/aa/be/d91d2183f6c3cd1e251e2deb2ab560e38ac1c3d920f33aed77abf2e96791/pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48c1ed8b02ffea4d5c9c220eda27af02b8149fe58526359b3c07eb391cb353a2"},
+ {url = "https://files.pythonhosted.org/packages/ae/9f/eda26f38f76ea7cb47ad1dc0d4597c504cf8dc9376b74195b272d4d00ca5/pydantic_core-2.6.3-cp312-none-win_arm64.whl", hash = "sha256:1ac1750df1b4339b543531ce793b8fd5c16660a95d13aecaab26b44ce11775e9"},
+ {url = "https://files.pythonhosted.org/packages/af/d7/149e40873b0d6f37f31cfe72ad874125055a3408a45a99a0f9e53ccb69eb/pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:615a31b1629e12445c0e9fc8339b41aaa6cc60bd53bf802d5fe3d2c0cda2ae8d"},
+ {url = "https://files.pythonhosted.org/packages/b0/88/43c79099fe0bcf6680c0782eb1b08069f024a08e114121b6704c9b26355a/pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9680dd23055dd874173a3a63a44e7f5a13885a4cfd7e84814be71be24fba83db"},
+ {url = "https://files.pythonhosted.org/packages/b4/19/9b2685fd637b2aa8a0ed3051782b7d70dbab0cfd824c5649941541f15db5/pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f93255b3e4d64785554e544c1c76cd32f4a354fa79e2eeca5d16ac2e7fdd57aa"},
+ {url = "https://files.pythonhosted.org/packages/b4/64/6bbd24f487891c9049c9c2529c4f15c218140b87aaa9b063500421da0556/pydantic_core-2.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:50555ba3cb58f9861b7a48c493636b996a617db1a72c18da4d7f16d7b1b9952b"},
+ {url = "https://files.pythonhosted.org/packages/b8/2b/541a0206fa615b37a9fca2426303c2e1c45bb2f00d8fb7c42d6abef4ca96/pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85463560c67fc65cd86153a4975d0b720b6d7725cf7ee0b2d291288433fc21b"},
+ {url = "https://files.pythonhosted.org/packages/bc/41/60569994e95b8dc27701f9dcd09f057643a802473b934e698e289735596e/pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6656a0ae383d8cd7cc94e91de4e526407b3726049ce8d7939049cbfa426518c8"},
+ {url = "https://files.pythonhosted.org/packages/c4/dc/bbc346df4afa3aa4c9ec2a6d22c9fd31c326a2d99a491055d735519c2a3f/pydantic_core-2.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:df14f6332834444b4a37685810216cc8fe1fe91f447332cd56294c984ecbff1c"},
+ {url = "https://files.pythonhosted.org/packages/c7/28/e9c511e09d6d168354411cb75928b5ab0740c0d37d4868aabf2a1777c986/pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2a20c533cb80466c1d42a43a4521669ccad7cf2967830ac62c2c2f9cece63e7e"},
+ {url = "https://files.pythonhosted.org/packages/c7/74/900985786e5e7c2e66c396f94009f5a17372b6abbb14c2c080e9a538efa6/pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d63b7545d489422d417a0cae6f9898618669608750fc5e62156957e609e728a5"},
+ {url = "https://files.pythonhosted.org/packages/c8/eb/c7432cbca6468f998d5e5d2ecd0b968e8fccd1423eac9a4513182265610c/pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1480fa4682e8202b560dcdc9eeec1005f62a15742b813c88cdc01d44e85308e5"},
+ {url = "https://files.pythonhosted.org/packages/ca/15/2de7d8a1905dd8c11706ede05e722e0a8322cdf5cb2efe169c47891fe087/pydantic_core-2.6.3-cp311-none-win32.whl", hash = "sha256:430ddd965ffd068dd70ef4e4d74f2c489c3a313adc28e829dd7262cc0d2dd1e8"},
+ {url = "https://files.pythonhosted.org/packages/ca/6d/e67aa5a1db011d7dac8c7d6810eef703fe38b4d606450f50bcd928a08829/pydantic_core-2.6.3-cp38-none-win_amd64.whl", hash = "sha256:621afe25cc2b3c4ba05fff53525156d5100eb35c6e5a7cf31d66cc9e1963e378"},
+ {url = "https://files.pythonhosted.org/packages/cb/37/86bec7ed20592bfcaecf4e27ea7608387bef226e19b92b4469d16be1fadd/pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37a822f630712817b6ecc09ccc378192ef5ff12e2c9bae97eb5968a6cdf3b862"},
+ {url = "https://files.pythonhosted.org/packages/cb/fe/8c9363389f8f303fb151895af83ac30e06c0406779fe188b4281a64e4c50/pydantic_core-2.6.3.tar.gz", hash = "sha256:1508f37ba9e3ddc0189e6ff4e2228bd2d3c3a4641cbe8c07177162f76ed696c7"},
+ {url = "https://files.pythonhosted.org/packages/d4/f7/0f44cd7e48801c0986fb46f13c5972a416c1fbf8b04388a11bf9faf1c136/pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f468d520f47807d1eb5d27648393519655eadc578d5dd862d06873cce04c4d1b"},
+ {url = "https://files.pythonhosted.org/packages/d7/9a/367a33d36373e5fea7a5abf0c619d2e1cb08f866d065fe4c2090ec967465/pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d7050899026e708fb185e174c63ebc2c4ee7a0c17b0a96ebc50e1f76a231c057"},
+ {url = "https://files.pythonhosted.org/packages/d9/62/d104454f5c1b8f5cb92147ea9a7515159d6867bca367a849639276991f9a/pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0a5d7edb76c1c57b95df719af703e796fc8e796447a1da939f97bfa8a918d60"},
+ {url = "https://files.pythonhosted.org/packages/dd/3c/489be431725a8bb66157b696be45eb87cda80ffb37a0a717a1f09e5d9e41/pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaafc776e5edc72b3cad1ccedb5fd869cc5c9a591f1213aa9eba31a781be9ac1"},
+ {url = "https://files.pythonhosted.org/packages/de/e7/96e8a756a204bc4d5275b6b24fba327c68f3dc5de747a4b4963c8114e483/pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b594b64e8568cf09ee5c9501ede37066b9fc41d83d58f55b9952e32141256acd"},
+ {url = "https://files.pythonhosted.org/packages/e0/31/4c15dbf79c1a3a5156534506d4d2b1d3d22f17a345bcb8dc69a834d2a9c9/pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:340e96c08de1069f3d022a85c2a8c63529fd88709468373b418f4cf2c949fb0e"},
+ {url = "https://files.pythonhosted.org/packages/e0/45/27166728e86a58d03223ed9e557437c5a9fdaa9875f7f4f3907cbc88a283/pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ccc13afee44b9006a73d2046068d4df96dc5b333bf3509d9a06d1b42db6d8bf"},
+ {url = "https://files.pythonhosted.org/packages/e1/be/bee1032fb4ddc7edf9d9c15d765e06f0a7c6f8e3b2c77303beded54a3882/pydantic_core-2.6.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f1a5d8f18877474c80b7711d870db0eeef9442691fcdb00adabfc97e183ee0b0"},
+ {url = "https://files.pythonhosted.org/packages/e2/e0/b29dd1cf3963a45c877bf7c22fe64005e0fa51f70721db1d69085b90d8fa/pydantic_core-2.6.3-cp37-none-win_amd64.whl", hash = "sha256:a8acc9dedd304da161eb071cc7ff1326aa5b66aadec9622b2574ad3ffe225525"},
+ {url = "https://files.pythonhosted.org/packages/e6/92/31f86fb76e889586adb2fc683e83ede61b96b0738aa25f896b9469745386/pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c0ebbebae71ed1e385f7dfd9b74c1cff09fed24a6df43d326dd7f12339ec34"},
+ {url = "https://files.pythonhosted.org/packages/e7/db/ee143cd185b04fe1528be9d42bd0e221bc074fff4e8306b27bea50756745/pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:002d0ea50e17ed982c2d65b480bd975fc41086a5a2f9c924ef8fc54419d1dea3"},
+ {url = "https://files.pythonhosted.org/packages/e9/ab/8a7d00512e3fe6150d7d7a9138262e042052a5ebed7b295de1fdbf1cea07/pydantic_core-2.6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ed7ceca6aba5331ece96c0e328cd52f0dcf942b8895a1ed2642de50800b79d3"},
+ {url = "https://files.pythonhosted.org/packages/ec/93/74db7ee54c3393860ba129993cf37b9fa30dd88e5a05f4c0b229189df8c2/pydantic_core-2.6.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e49ce7dc9f925e1fb010fc3d555250139df61fa6e5a0a95ce356329602c11ea9"},
+ {url = "https://files.pythonhosted.org/packages/f1/69/74868b3de48990943303bf2f967cac8fc148f76af18104f461d24857b8b0/pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:acafc4368b289a9f291e204d2c4c75908557d4f36bd3ae937914d4529bf62a76"},
+ {url = "https://files.pythonhosted.org/packages/f1/93/02b3ac615ecd8bb5de5afd7b733d057c35675b9b6441a3de73498e40c95d/pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9616567800bdc83ce136e5847d41008a1d602213d024207b0ff6cab6753fe645"},
+ {url = "https://files.pythonhosted.org/packages/f3/dd/1f9bf99ea2f2737471e67f24d9ec91a887f75cd1c829a686e771bd3eccaf/pydantic_core-2.6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a718d56c4d55efcfc63f680f207c9f19c8376e5a8a67773535e6f7e80e93170"},
+ {url = "https://files.pythonhosted.org/packages/f6/1d/b42918302817a49dce460724b8847996c5704c83ca112f1900feeb27c68d/pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1c721bfc575d57305dd922e6a40a8fe3f762905851d694245807a351ad255c58"},
+ {url = "https://files.pythonhosted.org/packages/f8/46/cc1c9aeffc74a68f4c53737c2e7d7160fbe3f766e704e7a0d625ca695d2f/pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d79f1f2f7ebdb9b741296b69049ff44aedd95976bfee38eb4848820628a99b50"},
+ {url = "https://files.pythonhosted.org/packages/fb/26/7d4a4e9349c3ec619d8f300ea3a637e1a8902e48c7ec7ca4e0bf69606273/pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ea80269077003eaa59723bac1d8bacd2cd15ae30456f2890811efc1e3d4413"},
+ {url = "https://files.pythonhosted.org/packages/fc/dc/2443b6224c396b765d2c68d61a8c24eeb05a6b425518cad80ce1fc4d4430/pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a750a83b2728299ca12e003d73d1264ad0440f60f4fc9cee54acc489249b728"},
+ {url = "https://files.pythonhosted.org/packages/fe/13/118d3219cb42a2cea5e86f6a1865670c84c54db07cd4813a35433f971b4c/pydantic_core-2.6.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:5e9c068f36b9f396399d43bfb6defd4cc99c36215f6ff33ac8b9c14ba15bdf6b"},
+ {url = "https://files.pythonhosted.org/packages/ff/7a/730696eaa6f1190a53236fca7eb013aeff25fd951dbae8a108128ddd982c/pydantic_core-2.6.3-cp312-none-win32.whl", hash = "sha256:f70dc00a91311a1aea124e5f64569ea44c011b58433981313202c46bccbec0e1"},
+]
+"pyflakes 3.1.0" = [
+ {url = "https://files.pythonhosted.org/packages/00/e9/1e1fd7fae559bfd07704991e9a59dd1349b72423c904256c073ce88a9940/pyflakes-3.1.0-py2.py3-none-any.whl", hash = "sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774"},
+ {url = "https://files.pythonhosted.org/packages/8b/fb/7251eaec19a055ec6aafb3d1395db7622348130d1b9b763f78567b2aab32/pyflakes-3.1.0.tar.gz", hash = "sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"},
+]
+"pytest 7.4.1" = [
+ {url = "https://files.pythonhosted.org/packages/5b/a2/4db5b065b0694b330f2b3c47e64abda0a470839da5119a404610d6349a11/pytest-7.4.1.tar.gz", hash = "sha256:2f2301e797521b23e4d2585a0a3d7b5e50fdddaaf7e7d6773ea26ddb17c213ab"},
+ {url = "https://files.pythonhosted.org/packages/78/af/1a79db43409ea8569a8a91d0a87db4445c7de4cefcf6141e9a5c77dda2d6/pytest-7.4.1-py3-none-any.whl", hash = "sha256:460c9a59b14e27c602eb5ece2e47bec99dc5fc5f6513cf924a7d03a578991b1f"},
+]
+"pytest-asyncio 0.21.1" = [
+ {url = "https://files.pythonhosted.org/packages/5a/85/d39ef5f69d5597a206f213ce387bcdfa47922423875829f7a98a87d33281/pytest-asyncio-0.21.1.tar.gz", hash = "sha256:40a7eae6dded22c7b604986855ea48400ab15b069ae38116e8c01238e9eeb64d"},
+ {url = "https://files.pythonhosted.org/packages/7d/2c/2e5ab8708667972ee31b88bb6fed680ed5ba92dfc2db28e07d0d68d8b3b1/pytest_asyncio-0.21.1-py3-none-any.whl", hash = "sha256:8666c1c8ac02631d7c51ba282e0c69a8a452b211ffedf2599099845da5c5c37b"},
]
"pytest-httpx 0.22.0" = [
{url = "https://files.pythonhosted.org/packages/56/23/a8438a0e11bc159d922a62c868593088b78285628e61f01c78bc1f1251e4/pytest_httpx-0.22.0-py3-none-any.whl", hash = "sha256:cefb7dcf66a4cb0601b0de05e576cca423b6081f3245e7912a4d84c58fa3eae8"},
@@ -590,13 +673,13 @@ content_hash = "sha256:4f924f3751260019f3113dfc4711ba904ffd7acb67603eca610128ba7
{url = "https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
{url = "https://files.pythonhosted.org/packages/4c/c4/13b4776ea2d76c115c1d1b84579f3764ee6d57204f6be27119f13a61d0a9/python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
]
-"respx 0.20.1" = [
- {url = "https://files.pythonhosted.org/packages/b0/22/de442b7a15808434fed3e6b65d61709f798b6a4673ad3d71229c82b5f4a1/respx-0.20.1.tar.gz", hash = "sha256:cc47a86d7010806ab65abdcf3b634c56337a737bb5c4d74c19a0dfca83b3bc73"},
- {url = "https://files.pythonhosted.org/packages/bc/6b/52f9a607fd3fa0facefb05f69c6f4b5c6071b92d71b8479217d7b7a95d74/respx-0.20.1-py2.py3-none-any.whl", hash = "sha256:372f06991c03d1f7f480a420a2199d01f1815b6ed5a802f4e4628043a93bd03e"},
+"respx 0.20.2" = [
+ {url = "https://files.pythonhosted.org/packages/47/47/8c5a8b02c2144770fe353585b6db21e392c4318b8cff897738159feff562/respx-0.20.2-py2.py3-none-any.whl", hash = "sha256:ab8e1cf6da28a5b2dd883ea617f8130f77f676736e6e9e4a25817ad116a172c9"},
+ {url = "https://files.pythonhosted.org/packages/e6/0b/e0df26ea5c7145d95f1ab8ecb20f0778dd8af718e56747977dca9d28362a/respx-0.20.2.tar.gz", hash = "sha256:07cf4108b1c88b82010f67d3c831dae33a375c7b436e54d87737c7f9f99be643"},
]
-"setuptools 67.7.2" = [
- {url = "https://files.pythonhosted.org/packages/2f/8c/f336a966d4097c7cef6fc699b2ecb83b5fb63fd698198c1b5c7905a74f0f/setuptools-67.7.2-py3-none-any.whl", hash = "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b"},
- {url = "https://files.pythonhosted.org/packages/fd/53/e5d7ae40d03e4ed20b7cba317cf9c0c97097c8debb39f9d72d182a6578a2/setuptools-67.7.2.tar.gz", hash = "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990"},
+"setuptools 68.1.2" = [
+ {url = "https://files.pythonhosted.org/packages/19/20/d8dd9d8becaf3e2d6fdc17cc41870d5ada5ceda518996cf5968c2ca71bd8/setuptools-68.1.2.tar.gz", hash = "sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d"},
+ {url = "https://files.pythonhosted.org/packages/4f/ab/0bcfebdfc3bfa8554b2b2c97a555569c4c1ebc74ea288741ea8326c51906/setuptools-68.1.2-py3-none-any.whl", hash = "sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b"},
]
"six 1.16.0" = [
{url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
@@ -610,7 +693,7 @@ content_hash = "sha256:4f924f3751260019f3113dfc4711ba904ffd7acb67603eca610128ba7
{url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
-"typing-extensions 4.5.0" = [
- {url = "https://files.pythonhosted.org/packages/31/25/5abcd82372d3d4a3932e1fa8c3dbf9efac10cc7c0d16e78467460571b404/typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"},
- {url = "https://files.pythonhosted.org/packages/d3/20/06270dac7316220643c32ae61694e451c98f8caf4c8eab3aa80a2bedf0df/typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"},
+"typing-extensions 4.7.1" = [
+ {url = "https://files.pythonhosted.org/packages/3c/8b/0111dd7d6c1478bf83baa1cab85c686426c7a6274119aceb2bd9d35395ad/typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"},
+ {url = "https://files.pythonhosted.org/packages/ec/6b/63cc3df74987c36fe26157ee12e09e8f9db4de771e0f3404263117e75b95/typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"},
]
diff --git a/pyproject.toml b/pyproject.toml
index b593a70..c21d93c 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,7 +1,7 @@
[project]
name = "huntflow-api-client"
-version = "0.0.18"
+version = "0.1.0"
description = "Huntflow API Client for Python"
authors = [
{name = "Developers huntflow", email = "developer@huntflow.ru"},
@@ -9,7 +9,8 @@ authors = [
dependencies = [
"httpx>=0.23.3",
"email-validator>=1.3.1",
- "pydantic>=1.10.4",
+ "pydantic>=2.3.0",
+ "freezegun>=1.2.2",
]
requires-python = ">3.8"
readme = "README.md"
@@ -32,7 +33,6 @@ test = [
"pytest-httpx>=0.22.0",
"respx>=0.20.1",
"pytest-asyncio>=0.21.0",
- "pytest-freezegun>=0.4.2",
]
lint = [
"isort>=5.12.0",
diff --git a/tests/test_entities/test_account_divisions.py b/tests/test_entities/test_account_divisions.py
index 75a0c3a..aae59a4 100644
--- a/tests/test_entities/test_account_divisions.py
+++ b/tests/test_entities/test_account_divisions.py
@@ -79,14 +79,14 @@ async def test_list_account_division(
divisions = AccountDivision(api_client)
response = await divisions.list(ACCOUNT_ID, only_available=only_available)
- assert response == DivisionsListResponse.parse_obj(ACCOUNT_DIVISIONS_LIST_RESPONSE)
+ assert response == DivisionsListResponse.model_validate(ACCOUNT_DIVISIONS_LIST_RESPONSE)
httpx_mock.add_response(
url=f"{BASE_URL}/accounts/{ACCOUNT_ID}/coworkers/{COWORKER_ID}/divisions",
json=ACCOUNT_DIVISIONS_LIST_RESPONSE,
)
response = await divisions.list(ACCOUNT_ID, COWORKER_ID)
- assert response == DivisionsListResponse.parse_obj(ACCOUNT_DIVISIONS_LIST_RESPONSE)
+ assert response == DivisionsListResponse.model_validate(ACCOUNT_DIVISIONS_LIST_RESPONSE)
with pytest.raises(ValueError):
await divisions.list(ACCOUNT_ID, 1, True)
@@ -102,6 +102,6 @@ async def test_create_account_division(
)
api_client = HuntflowAPI(BASE_URL, token_proxy=token_proxy)
divisions = AccountDivision(api_client)
- create_divisions_request = BatchDivisionsRequest.parse_obj(BATCH_ACCOUNT_DIVISIONS_REQUEST)
+ create_divisions_request = BatchDivisionsRequest.model_validate(BATCH_ACCOUNT_DIVISIONS_REQUEST)
response = await divisions.create(ACCOUNT_ID, create_divisions_request)
- assert response == BatchDivisionsResponse.parse_obj(BATCH_ACCOUNT_DIVISIONS_RESPONSE)
+ assert response == BatchDivisionsResponse.model_validate(BATCH_ACCOUNT_DIVISIONS_RESPONSE)
diff --git a/tests/test_entities/test_account_vacancy_request.py b/tests/test_entities/test_account_vacancy_request.py
index fbbbb3e..20126ee 100644
--- a/tests/test_entities/test_account_vacancy_request.py
+++ b/tests/test_entities/test_account_vacancy_request.py
@@ -106,7 +106,9 @@ async def test_list_schemas(
api_client = HuntflowAPI(BASE_URL, token_proxy=token_proxy)
vacancy_request = AccountVacancyRequest(api_client)
response = await vacancy_request.list(ACCOUNT_ID, only_active=True)
- assert response == AccountVacancyRequestsListResponse.parse_obj(VACANCY_REQUEST_SCHEMAS_LIST)
+ assert response == AccountVacancyRequestsListResponse.model_validate(
+ VACANCY_REQUEST_SCHEMAS_LIST,
+ )
async def test_get_schema(
@@ -121,4 +123,4 @@ async def test_get_schema(
api_client = HuntflowAPI(BASE_URL, token_proxy=token_proxy)
vacancy_request = AccountVacancyRequest(api_client)
response = await vacancy_request.get(ACCOUNT_ID, schema_id)
- assert response == AccountVacancyRequestResponse.parse_obj(VACANCY_REQUEST_SCHEMA)
+ assert response == AccountVacancyRequestResponse.model_validate(VACANCY_REQUEST_SCHEMA)
diff --git a/tests/test_entities/test_applicant_logs.py b/tests/test_entities/test_applicant_logs.py
index c57d65c..8124e76 100644
--- a/tests/test_entities/test_applicant_logs.py
+++ b/tests/test_entities/test_applicant_logs.py
@@ -189,7 +189,7 @@ async def test_applicant_log_list(
type_=ApplicantLogType.ADD,
personal=True,
)
- assert response == ApplicantLogResponse.parse_obj(APPLICANT_LOG_LIST_RESPONSE)
+ assert response == ApplicantLogResponse.model_validate(APPLICANT_LOG_LIST_RESPONSE)
async def test_create_log(
@@ -209,4 +209,4 @@ async def test_create_log(
applicant_id=APPLICANT_ID,
data=data,
)
- assert response == CreateApplicantLogResponse.parse_obj(APPLICANT_CREATE_LOG_RESPONSE)
+ assert response == CreateApplicantLogResponse.model_validate(APPLICANT_CREATE_LOG_RESPONSE)
diff --git a/tests/test_entities/test_applicants.py b/tests/test_entities/test_applicants.py
index 9a8a38a..3933b5c 100644
--- a/tests/test_entities/test_applicants.py
+++ b/tests/test_entities/test_applicants.py
@@ -371,7 +371,7 @@ async def test_applicant_search_by_cursor(
vacancy=[],
account_source=[1],
)
- assert response == ApplicantSearchByCursorResponse.parse_obj(
+ assert response == ApplicantSearchByCursorResponse.model_validate(
APPLICANT_SEARCH_BY_CURSOR_RESPONSE,
)
next_page_cursor = response.next_page_cursor
@@ -382,6 +382,6 @@ async def test_applicant_search_by_cursor(
json=APPLICANT_SEARCH_BY_CURSOR_RESPONSE,
)
response = await applicants.search_by_cursor(ACCOUNT_ID, next_page_cursor=next_page_cursor)
- assert response == ApplicantSearchByCursorResponse.parse_obj(
+ assert response == ApplicantSearchByCursorResponse.model_validate(
APPLICANT_SEARCH_BY_CURSOR_RESPONSE,
)
diff --git a/tests/test_entities/test_delayed_tasks.py b/tests/test_entities/test_delayed_tasks.py
index f2db7b0..5d2b6fa 100644
--- a/tests/test_entities/test_delayed_tasks.py
+++ b/tests/test_entities/test_delayed_tasks.py
@@ -39,4 +39,4 @@ async def test_get_delayed_task(
api_client = HuntflowAPI(BASE_URL, token_proxy=token_proxy)
tasks = DelayedTask(api_client)
response = await tasks.get(ACCOUNT_ID, TASK_ID)
- assert response == DelayedTaskResponse.parse_obj(DELAYED_TASKS_RESPONSE)
+ assert response == DelayedTaskResponse.model_validate(DELAYED_TASKS_RESPONSE)
diff --git a/tests/test_entities/test_dictionaries.py b/tests/test_entities/test_dictionaries.py
index a53a4f7..6407c4b 100644
--- a/tests/test_entities/test_dictionaries.py
+++ b/tests/test_entities/test_dictionaries.py
@@ -109,7 +109,7 @@ async def test_get_dictionary(
dictionaries = Dictionary(api_client)
response = await dictionaries.get(ACCOUNT_ID, DICT_CODE)
- assert response == DictionaryResponse.parse_obj(DICT_GET_RESPONSE)
+ assert response == DictionaryResponse.model_validate(DICT_GET_RESPONSE)
async def test_list_dictionary(
@@ -124,7 +124,7 @@ async def test_list_dictionary(
dictionaries = Dictionary(api_client)
response = await dictionaries.list(ACCOUNT_ID)
- assert response == DictionariesListResponse.parse_obj(DICT_LIST_RESPONSE)
+ assert response == DictionariesListResponse.model_validate(DICT_LIST_RESPONSE)
async def test_create_dictionary(
@@ -140,7 +140,7 @@ async def test_create_dictionary(
api_request = DictionaryCreateRequest(**DICT_CREATE_REQUEST)
response = await dictionaries.create(ACCOUNT_ID, api_request)
- assert response == DictionaryTaskResponse.parse_obj(DICT_CREATE_RESPONSE)
+ assert response == DictionaryTaskResponse.model_validate(DICT_CREATE_RESPONSE)
async def test_update_dictionary(
@@ -156,4 +156,4 @@ async def test_update_dictionary(
api_request = DictionaryUpdateRequest(**DICT_UPDATE_REQUEST)
response = await dictionaries.update(ACCOUNT_ID, DICT_CODE, api_request)
- assert response == DictionaryTaskResponse.parse_obj(DICT_UPDATE_RESPONSE)
+ assert response == DictionaryTaskResponse.model_validate(DICT_UPDATE_RESPONSE)
diff --git a/tests/test_entities/test_multi_vacancies.py b/tests/test_entities/test_multi_vacancies.py
index 6f14654..5b7baaf 100644
--- a/tests/test_entities/test_multi_vacancies.py
+++ b/tests/test_entities/test_multi_vacancies.py
@@ -10,6 +10,7 @@
MultiVacancyPartialUpdateRequest,
MultiVacancyUpdateRequest,
VacancyBlock,
+ VacancyBlockUpdate,
VacancyBlockUpdatePartial,
)
from huntflow_api_client.models.response.muilti_vacancies import MultiVacancyResponse
@@ -54,7 +55,7 @@ async def test_update_multi_vacancy(
multi_vacancies = MultiVacancy(api_client)
data = MultiVacancyUpdateRequest(
position="Test vacancy",
- blocks=[VacancyBlock(fill_quotas=[FillQuota()])],
+ blocks=[VacancyBlockUpdate(fill_quotas=[FillQuota()])],
)
response = await multi_vacancies.update(ACCOUNT_ID, VACANCY_ID, data)
diff --git a/tests/test_entities/test_production_calendar.py b/tests/test_entities/test_production_calendar.py
index 15c221c..37c9add 100644
--- a/tests/test_entities/test_production_calendar.py
+++ b/tests/test_entities/test_production_calendar.py
@@ -71,7 +71,7 @@ async def test_list_calendar(
calendars = ProductionCalendar(api_client)
response = await calendars.list()
- assert response == CalendarListResponse.parse_obj(CALENDAR_LIST_RESPONSE)
+ assert response == CalendarListResponse.model_validate(CALENDAR_LIST_RESPONSE)
async def test_get_calendar(
@@ -86,7 +86,7 @@ async def test_get_calendar(
calendars = ProductionCalendar(api_client)
response = await calendars.get(calendar_id=1)
- assert response == CalendarResponse.parse_obj(CALENDAR_GET_RESPONSE)
+ assert response == CalendarResponse.model_validate(CALENDAR_GET_RESPONSE)
async def test_get_organizations_calendar(
@@ -101,7 +101,7 @@ async def test_get_organizations_calendar(
calendars = ProductionCalendar(api_client)
response = await calendars.get_organizations_calendar(account_id=ACCOUNT_ID)
- assert response == AccountCalendarResponse.parse_obj(ORG_CALENDAR_GET_RESPONSE)
+ assert response == AccountCalendarResponse.model_validate(ORG_CALENDAR_GET_RESPONSE)
async def test_get_non_working_days_in_period(
@@ -117,7 +117,7 @@ async def test_get_non_working_days_in_period(
calendars = ProductionCalendar(api_client)
response = await calendars.get_non_working_days_in_period(calendar_id=1, deadline=DEADLINE_DATE)
- assert response == NonWorkingDaysResponse.parse_obj(NON_WORKING_DAYS_GET_RESPONSE)
+ assert response == NonWorkingDaysResponse.model_validate(NON_WORKING_DAYS_GET_RESPONSE)
async def test_get_non_working_days_for_multiple_period(
@@ -132,13 +132,15 @@ async def test_get_non_working_days_for_multiple_period(
calendars = ProductionCalendar(api_client)
data = NonWorkingDaysBulkRequest(
- __root__=[
+ root=[
NonWorkingDays(deadline=datetime.date(2022, 10, 10), start=datetime.date(2021, 10, 10)),
NonWorkingDays(deadline=datetime.date(2023, 10, 10), start=datetime.date(2022, 10, 10)),
],
)
response = await calendars.get_non_working_days_for_multiple_period(calendar_id=1, data=data)
- assert response == NonWorkingDaysBulkResponse.parse_obj(MULTIPLE_NON_WORKING_DAYS_GET_RESPONSE)
+ assert response == NonWorkingDaysBulkResponse.model_validate(
+ MULTIPLE_NON_WORKING_DAYS_GET_RESPONSE,
+ )
async def test_get_deadline_date_with_non_working_days(
@@ -173,7 +175,7 @@ async def test_get_multiple_deadline_dates_with_non_working_days(
calendars = ProductionCalendar(api_client)
data = DeadLineDatesBulkRequest(
- __root__=[
+ root=[
DeadLineDate(days=100, start=datetime.date(2021, 10, 10)),
DeadLineDate(days=5, start=datetime.date(2022, 10, 10)),
],
@@ -183,7 +185,7 @@ async def test_get_multiple_deadline_dates_with_non_working_days(
calendar_id=1,
data=data,
)
- assert response == DatesBulkResponse.parse_obj(MULTIPLE_DEADLINE_RESPONSE)
+ assert response == DatesBulkResponse.model_validate(MULTIPLE_DEADLINE_RESPONSE)
async def test_get_start_date_with_non_working_days(
@@ -218,7 +220,7 @@ async def test_get_multiple_start_dates_with_non_working_days(
calendars = ProductionCalendar(api_client)
data = StartDatesBulkRequest(
- __root__=[
+ root=[
StartDate(days=100, deadline=datetime.date(2021, 10, 10)),
StartDate(days=200, deadline=datetime.date(2019, 7, 17)),
],
@@ -228,4 +230,4 @@ async def test_get_multiple_start_dates_with_non_working_days(
calendar_id=1,
data=data,
)
- assert response == DatesBulkResponse.parse_obj(MULTIPLE_START_RESPONSE)
+ assert response == DatesBulkResponse.model_validate(MULTIPLE_START_RESPONSE)
diff --git a/tests/test_entities/test_questionary.py b/tests/test_entities/test_questionary.py
index cecb6d2..481d1f1 100644
--- a/tests/test_entities/test_questionary.py
+++ b/tests/test_entities/test_questionary.py
@@ -58,7 +58,7 @@ async def test_get_schema(
questionary = ApplicantsQuestionary(api_client)
response = await questionary.get_schema(ACCOUNT_ID)
- assert response == QuestionarySchemaResponse.parse_obj(QUESTIONARY_SCHEMA_RESPONSE)
+ assert response == QuestionarySchemaResponse.model_validate(QUESTIONARY_SCHEMA_RESPONSE)
async def test_create_questionary(
diff --git a/tests/test_entities/test_vacancies.py b/tests/test_entities/test_vacancies.py
index 1799e05..872022e 100644
--- a/tests/test_entities/test_vacancies.py
+++ b/tests/test_entities/test_vacancies.py
@@ -482,7 +482,7 @@ async def test_get_vacancy_quota_list(
vacancies = Vacancy(api_client)
response = await vacancies.get_quotas(ACCOUNT_ID, VACANCY_ID, FRAME_ID)
- assert response == VacancyQuotasResponse.parse_obj(VACANCY_QUOTAS_RESPONSE)
+ assert response == VacancyQuotasResponse.model_validate(VACANCY_QUOTAS_RESPONSE)
async def test_get_vacancy_status_groups(
diff --git a/tests/test_entities/test_vacancy_request.py b/tests/test_entities/test_vacancy_request.py
index b5dfcbe..211b16c 100644
--- a/tests/test_entities/test_vacancy_request.py
+++ b/tests/test_entities/test_vacancy_request.py
@@ -89,7 +89,9 @@ async def test_list_vacancy_request(
vacancy_request = VacancyRequest(api_client)
response = await vacancy_request.list(ACCOUNT_ID)
- assert response == VacancyRequestListResponse.parse_obj(VACANCY_REQUEST_LIST_WITHOUT_VALUES)
+ assert response == VacancyRequestListResponse.model_validate(
+ VACANCY_REQUEST_LIST_WITHOUT_VALUES,
+ )
httpx_mock.add_response(
url=(
@@ -100,7 +102,7 @@ async def test_list_vacancy_request(
)
response = await vacancy_request.list(ACCOUNT_ID, vacancy_id=1, values=True)
- assert response == VacancyRequestListResponse.parse_obj(VACANCY_REQUEST_LIST_WITH_VALUES)
+ assert response == VacancyRequestListResponse.model_validate(VACANCY_REQUEST_LIST_WITH_VALUES)
async def test_get_vacancy_request(
@@ -115,7 +117,7 @@ async def test_get_vacancy_request(
vacancy_request = VacancyRequest(api_client)
response = await vacancy_request.get(ACCOUNT_ID, 1)
- assert response == VacancyRequestResponse.parse_obj(VACANCY_REQUEST_RESPONSE)
+ assert response == VacancyRequestResponse.model_validate(VACANCY_REQUEST_RESPONSE)
assert response.values
@@ -129,6 +131,6 @@ async def test_create_vacancy_request(
)
api_client = HuntflowAPI(BASE_URL, token_proxy=token_proxy)
vacancy_request = VacancyRequest(api_client)
- data = CreateVacancyRequestRequest.parse_obj(VACANCY_REQUEST_CREATE_REQUEST)
+ data = CreateVacancyRequestRequest.model_validate(VACANCY_REQUEST_CREATE_REQUEST)
response = await vacancy_request.create(ACCOUNT_ID, data)
- assert response == VacancyRequestResponse.parse_obj(VACANCY_REQUEST_RESPONSE)
+ assert response == VacancyRequestResponse.model_validate(VACANCY_REQUEST_RESPONSE)
diff --git a/tests/test_tokens/test_huntflow_token_proxy.py b/tests/test_tokens/test_huntflow_token_proxy.py
index c482417..e7f12ab 100644
--- a/tests/test_tokens/test_huntflow_token_proxy.py
+++ b/tests/test_tokens/test_huntflow_token_proxy.py
@@ -1,7 +1,7 @@
import json
-import time
from datetime import datetime, timedelta
-from typing import Any
+
+from freezegun import freeze_time
from huntflow_api_client.tokens.locker import AsyncioLockLocker
from huntflow_api_client.tokens.proxy import HuntflowTokenProxy
@@ -30,28 +30,25 @@ async def test_get_refresh_token_data__ok(
async def test_update_token__ok(
token_storage: HuntflowTokenFileStorage,
token_filename: str,
- freezer: Any,
) -> None:
token_proxy = HuntflowTokenProxy(token_storage, AsyncioLockLocker())
await token_proxy.get_auth_header()
tomorrow = datetime.now() + timedelta(days=1)
- freezer.move_to(tomorrow.isoformat())
- now = time.time()
-
- new_token_pair = TokenPair()
- refresh_token_data = get_token_refresh_data(new_token_pair)
-
- await token_proxy.update(refresh_token_data)
- assert await token_proxy.is_updated()
-
- updated_api_token = {}
- with open(token_filename) as token_data_file:
- updated_api_token = json.load(token_data_file)
-
- assert updated_api_token == {
- "access_token": refresh_token_data["access_token"],
- "refresh_token": refresh_token_data["refresh_token"],
- "expiration_timestamp": now + refresh_token_data["expires_in"],
- "last_refresh_timestamp": now,
- }
+ with freeze_time(tomorrow):
+ tomorrow_ts = datetime.now().timestamp()
+ new_token_pair = TokenPair()
+ refresh_token_data = get_token_refresh_data(new_token_pair)
+
+ await token_proxy.update(refresh_token_data)
+ assert await token_proxy.is_updated()
+
+ with open(token_filename) as token_data_file:
+ updated_api_token = json.load(token_data_file)
+
+ assert updated_api_token == {
+ "access_token": refresh_token_data["access_token"],
+ "refresh_token": refresh_token_data["refresh_token"],
+ "expiration_timestamp": tomorrow_ts + refresh_token_data["expires_in"],
+ "last_refresh_timestamp": tomorrow_ts,
+ }