From 7ac875106bdcfb8bfb097b971f48ecd88d06c26a Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 13:48:22 +0000 Subject: [PATCH 1/8] feat(api): api update (#646) --- .stats.yml | 4 +- api.md | 11 ++--- src/finch/resources/hris/benefits/benefits.py | 14 +++---- .../resources/hris/benefits/individuals.py | 40 +++++++++---------- src/finch/types/hris/__init__.py | 4 +- ...nefit_list_supported_benefits_response.py} | 8 +--- src/finch/types/hris/benefits/__init__.py | 3 +- .../hris/benefits/enrolled_individual.py | 28 ------------- .../individual_enroll_many_response.py | 10 +++++ .../hris/benefits/unenrolled_individual.py | 27 ------------- .../hris/create_company_benefits_response.py | 2 + .../hris/update_company_benefit_response.py | 2 + .../hris/benefits/test_individuals.py | 35 ++++++++-------- tests/api_resources/hris/test_benefits.py | 14 +++---- 14 files changed, 78 insertions(+), 124 deletions(-) rename src/finch/types/hris/{supported_benefit.py => benefit_list_supported_benefits_response.py} (88%) delete mode 100644 src/finch/types/hris/benefits/enrolled_individual.py create mode 100644 src/finch/types/hris/benefits/individual_enroll_many_response.py delete mode 100644 src/finch/types/hris/benefits/unenrolled_individual.py diff --git a/.stats.yml b/.stats.yml index a45a587e..950c125e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 46 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-14d375aab89e6b212fe459805a42d6ea7d7da8eae2037ae710a187d06911be1d.yml -openapi_spec_hash: 08b86ecbec3323717d48e4aaee48ed54 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-8c83f0eae70d2a02ed3e2059fc251affdccd2f848f45445e4fed64dfd9ca5985.yml +openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee config_hash: ce10384813f68ba3fed61c7b601b396b diff --git a/api.md b/api.md index 13b455d8..1a45d403 100644 --- a/api.md +++ b/api.md @@ -170,6 +170,7 @@ from finch.types.hris import ( SupportPerBenefitType, SupportedBenefit, UpdateCompanyBenefitResponse, + BenefitListSupportedBenefitsResponse, BenfitContribution, ) ``` @@ -180,7 +181,7 @@ Methods: - client.hris.benefits.retrieve(benefit_id) -> CompanyBenefit - client.hris.benefits.update(benefit_id, \*\*params) -> UpdateCompanyBenefitResponse - client.hris.benefits.list() -> SyncSinglePage[CompanyBenefit] -- client.hris.benefits.list_supported_benefits() -> SyncSinglePage[SupportedBenefit] +- client.hris.benefits.list_supported_benefits() -> SyncSinglePage[BenefitListSupportedBenefitsResponse] ### Individuals @@ -188,19 +189,19 @@ Types: ```python from finch.types.hris.benefits import ( - EnrolledIndividual, IndividualBenefit, - UnenrolledIndividual, + IndividualEnrollManyResponse, IndividualEnrolledIDsResponse, + IndividualUnenrollManyResponse, ) ``` Methods: -- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> SyncSinglePage[EnrolledIndividual] +- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> IndividualEnrollManyResponse - client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse - client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit] -- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> SyncSinglePage[UnenrolledIndividual] +- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> SyncSinglePage[object] # Providers diff --git a/src/finch/resources/hris/benefits/benefits.py b/src/finch/resources/hris/benefits/benefits.py index cc24e7e1..28fc3a75 100644 --- a/src/finch/resources/hris/benefits/benefits.py +++ b/src/finch/resources/hris/benefits/benefits.py @@ -29,9 +29,9 @@ from ....types.hris.benefit_type import BenefitType from ....types.hris.company_benefit import CompanyBenefit from ....types.hris.benefit_frequency import BenefitFrequency -from ....types.hris.supported_benefit import SupportedBenefit from ....types.hris.update_company_benefit_response import UpdateCompanyBenefitResponse from ....types.hris.create_company_benefits_response import CreateCompanyBenefitsResponse +from ....types.hris.benefit_list_supported_benefits_response import BenefitListSupportedBenefitsResponse __all__ = ["Benefits", "AsyncBenefits"] @@ -210,15 +210,15 @@ def list_supported_benefits( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> SyncSinglePage[SupportedBenefit]: + ) -> SyncSinglePage[BenefitListSupportedBenefitsResponse]: """Get deductions metadata""" return self._get_api_list( "/employer/benefits/meta", - page=SyncSinglePage[SupportedBenefit], + page=SyncSinglePage[BenefitListSupportedBenefitsResponse], options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - model=SupportedBenefit, + model=BenefitListSupportedBenefitsResponse, ) @@ -396,15 +396,15 @@ def list_supported_benefits( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> AsyncPaginator[SupportedBenefit, AsyncSinglePage[SupportedBenefit]]: + ) -> AsyncPaginator[BenefitListSupportedBenefitsResponse, AsyncSinglePage[BenefitListSupportedBenefitsResponse]]: """Get deductions metadata""" return self._get_api_list( "/employer/benefits/meta", - page=AsyncSinglePage[SupportedBenefit], + page=AsyncSinglePage[BenefitListSupportedBenefitsResponse], options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - model=SupportedBenefit, + model=BenefitListSupportedBenefitsResponse, ) diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py index c6e472cf..a017e491 100644 --- a/src/finch/resources/hris/benefits/individuals.py +++ b/src/finch/resources/hris/benefits/individuals.py @@ -8,7 +8,10 @@ from .... import _legacy_response from ...._types import NOT_GIVEN, Body, Query, Headers, NotGiven -from ...._utils import maybe_transform +from ...._utils import ( + maybe_transform, + async_maybe_transform, +) from ...._compat import cached_property from ...._resource import SyncAPIResource, AsyncAPIResource from ...._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper @@ -20,8 +23,7 @@ individual_retrieve_many_benefits_params, ) from ....types.hris.benefits.individual_benefit import IndividualBenefit -from ....types.hris.benefits.enrolled_individual import EnrolledIndividual -from ....types.hris.benefits.unenrolled_individual import UnenrolledIndividual +from ....types.hris.benefits.individual_enroll_many_response import IndividualEnrollManyResponse from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse __all__ = ["Individuals", "AsyncIndividuals"] @@ -58,7 +60,7 @@ def enroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> SyncSinglePage[EnrolledIndividual]: + ) -> IndividualEnrollManyResponse: """Enroll an individual into a deduction or contribution. This is an overwrite @@ -79,15 +81,13 @@ def enroll_many( """ if not benefit_id: raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}") - return self._get_api_list( + return self._post( f"/employer/benefits/{benefit_id}/individuals", - page=SyncSinglePage[EnrolledIndividual], body=maybe_transform(individuals, Iterable[individual_enroll_many_params.Individual]), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - model=EnrolledIndividual, - method="post", + cast_to=IndividualEnrollManyResponse, ) def enrolled_ids( @@ -179,7 +179,7 @@ def unenroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> SyncSinglePage[UnenrolledIndividual]: + ) -> SyncSinglePage[object]: """ Unenroll individuals from a deduction or contribution @@ -198,14 +198,14 @@ def unenroll_many( raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}") return self._get_api_list( f"/employer/benefits/{benefit_id}/individuals", - page=SyncSinglePage[UnenrolledIndividual], + page=SyncSinglePage[object], body=maybe_transform( {"individual_ids": individual_ids}, individual_unenroll_many_params.IndividualUnenrollManyParams ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - model=UnenrolledIndividual, + model=object, method="delete", ) @@ -230,7 +230,7 @@ def with_streaming_response(self) -> AsyncIndividualsWithStreamingResponse: """ return AsyncIndividualsWithStreamingResponse(self) - def enroll_many( + async def enroll_many( self, benefit_id: str, *, @@ -241,7 +241,7 @@ def enroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> AsyncPaginator[EnrolledIndividual, AsyncSinglePage[EnrolledIndividual]]: + ) -> IndividualEnrollManyResponse: """Enroll an individual into a deduction or contribution. This is an overwrite @@ -262,15 +262,13 @@ def enroll_many( """ if not benefit_id: raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}") - return self._get_api_list( + return await self._post( f"/employer/benefits/{benefit_id}/individuals", - page=AsyncSinglePage[EnrolledIndividual], - body=maybe_transform(individuals, Iterable[individual_enroll_many_params.Individual]), + body=await async_maybe_transform(individuals, Iterable[individual_enroll_many_params.Individual]), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - model=EnrolledIndividual, - method="post", + cast_to=IndividualEnrollManyResponse, ) async def enrolled_ids( @@ -362,7 +360,7 @@ def unenroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> AsyncPaginator[UnenrolledIndividual, AsyncSinglePage[UnenrolledIndividual]]: + ) -> AsyncPaginator[object, AsyncSinglePage[object]]: """ Unenroll individuals from a deduction or contribution @@ -381,14 +379,14 @@ def unenroll_many( raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}") return self._get_api_list( f"/employer/benefits/{benefit_id}/individuals", - page=AsyncSinglePage[UnenrolledIndividual], + page=AsyncSinglePage[object], body=maybe_transform( {"individual_ids": individual_ids}, individual_unenroll_many_params.IndividualUnenrollManyParams ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - model=UnenrolledIndividual, + model=object, method="delete", ) diff --git a/src/finch/types/hris/__init__.py b/src/finch/types/hris/__init__.py index 40744f3e..4f9edc30 100644 --- a/src/finch/types/hris/__init__.py +++ b/src/finch/types/hris/__init__.py @@ -14,7 +14,6 @@ from .benefits_support import BenefitsSupport as BenefitsSupport from .benefit_frequency import BenefitFrequency as BenefitFrequency from .document_response import DocumentResponse as DocumentResponse -from .supported_benefit import SupportedBenefit as SupportedBenefit from .benfit_contribution import BenfitContribution as BenfitContribution from .individual_response import IndividualResponse as IndividualResponse from .payment_list_params import PaymentListParams as PaymentListParams @@ -37,3 +36,6 @@ from .create_company_benefits_response import CreateCompanyBenefitsResponse as CreateCompanyBenefitsResponse from .directory_list_individuals_params import DirectoryListIndividualsParams as DirectoryListIndividualsParams from .pay_statement_retrieve_many_params import PayStatementRetrieveManyParams as PayStatementRetrieveManyParams +from .benefit_list_supported_benefits_response import ( + BenefitListSupportedBenefitsResponse as BenefitListSupportedBenefitsResponse, +) diff --git a/src/finch/types/hris/supported_benefit.py b/src/finch/types/hris/benefit_list_supported_benefits_response.py similarity index 88% rename from src/finch/types/hris/supported_benefit.py rename to src/finch/types/hris/benefit_list_supported_benefits_response.py index ef148ffa..e29b2b7f 100644 --- a/src/finch/types/hris/supported_benefit.py +++ b/src/finch/types/hris/benefit_list_supported_benefits_response.py @@ -4,13 +4,12 @@ from typing_extensions import Literal from ..._models import BaseModel -from .benefit_type import BenefitType from .benefit_frequency import BenefitFrequency -__all__ = ["SupportedBenefit"] +__all__ = ["BenefitListSupportedBenefitsResponse"] -class SupportedBenefit(BaseModel): +class BenefitListSupportedBenefitsResponse(BaseModel): annual_maximum: Optional[bool] = None """Whether the provider supports an annual maximum for this benefit.""" @@ -43,6 +42,3 @@ class SupportedBenefit(BaseModel): Empty if this feature is not supported for the benefit. This array only has values for HSA benefits. """ - - type: Optional[BenefitType] = None - """Type of benefit.""" diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py index 4cca9ced..34a2f325 100644 --- a/src/finch/types/hris/benefits/__init__.py +++ b/src/finch/types/hris/benefits/__init__.py @@ -3,9 +3,8 @@ from __future__ import annotations from .individual_benefit import IndividualBenefit as IndividualBenefit -from .enrolled_individual import EnrolledIndividual as EnrolledIndividual -from .unenrolled_individual import UnenrolledIndividual as UnenrolledIndividual from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams +from .individual_enroll_many_response import IndividualEnrollManyResponse as IndividualEnrollManyResponse from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse from .individual_retrieve_many_benefits_params import ( diff --git a/src/finch/types/hris/benefits/enrolled_individual.py b/src/finch/types/hris/benefits/enrolled_individual.py deleted file mode 100644 index c8d6f912..00000000 --- a/src/finch/types/hris/benefits/enrolled_individual.py +++ /dev/null @@ -1,28 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Optional -from typing_extensions import Literal - -from ...._models import BaseModel - -__all__ = ["EnrolledIndividual", "Body"] - - -class Body(BaseModel): - finch_code: Optional[str] = None - """A descriptive identifier for the response.""" - - message: Optional[str] = None - """Short description in English that provides more information about the response.""" - - name: Optional[str] = None - """Identifier indicating whether the benefit was newly enrolled or updated.""" - - -class EnrolledIndividual(BaseModel): - body: Optional[Body] = None - - code: Optional[Literal[200, 201, 404, 403]] = None - """HTTP status code. Either 201 or 200""" - - individual_id: Optional[str] = None diff --git a/src/finch/types/hris/benefits/individual_enroll_many_response.py b/src/finch/types/hris/benefits/individual_enroll_many_response.py new file mode 100644 index 00000000..e205eec5 --- /dev/null +++ b/src/finch/types/hris/benefits/individual_enroll_many_response.py @@ -0,0 +1,10 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + + +from ...._models import BaseModel + +__all__ = ["IndividualEnrollManyResponse"] + + +class IndividualEnrollManyResponse(BaseModel): + job_id: str diff --git a/src/finch/types/hris/benefits/unenrolled_individual.py b/src/finch/types/hris/benefits/unenrolled_individual.py deleted file mode 100644 index d9f10497..00000000 --- a/src/finch/types/hris/benefits/unenrolled_individual.py +++ /dev/null @@ -1,27 +0,0 @@ -# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. - -from typing import Optional - -from ...._models import BaseModel - -__all__ = ["UnenrolledIndividual", "Body"] - - -class Body(BaseModel): - finch_code: Optional[str] = None - """A descriptive identifier for the response.""" - - message: Optional[str] = None - """Short description in English that provides more information about the response.""" - - name: Optional[str] = None - """Identifier indicating whether the benefit was newly enrolled or updated.""" - - -class UnenrolledIndividual(BaseModel): - body: Optional[Body] = None - - code: Optional[int] = None - """HTTP status code""" - - individual_id: Optional[str] = None diff --git a/src/finch/types/hris/create_company_benefits_response.py b/src/finch/types/hris/create_company_benefits_response.py index e96088af..092bf5c9 100644 --- a/src/finch/types/hris/create_company_benefits_response.py +++ b/src/finch/types/hris/create_company_benefits_response.py @@ -9,3 +9,5 @@ class CreateCompanyBenefitsResponse(BaseModel): benefit_id: str """The id of the benefit.""" + + job_id: str diff --git a/src/finch/types/hris/update_company_benefit_response.py b/src/finch/types/hris/update_company_benefit_response.py index 865b10d6..8f6506e3 100644 --- a/src/finch/types/hris/update_company_benefit_response.py +++ b/src/finch/types/hris/update_company_benefit_response.py @@ -9,3 +9,5 @@ class UpdateCompanyBenefitResponse(BaseModel): benefit_id: str """The id of the benefit.""" + + job_id: str diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py index d8677fa1..62af21a9 100644 --- a/tests/api_resources/hris/benefits/test_individuals.py +++ b/tests/api_resources/hris/benefits/test_individuals.py @@ -13,8 +13,7 @@ from finch.pagination import SyncSinglePage, AsyncSinglePage from finch.types.hris.benefits import ( IndividualBenefit, - EnrolledIndividual, - UnenrolledIndividual, + IndividualEnrollManyResponse, IndividualEnrolledIDsResponse, ) @@ -29,7 +28,7 @@ def test_method_enroll_many(self, client: Finch) -> None: individual = client.hris.benefits.individuals.enroll_many( benefit_id="benefit_id", ) - assert_matches_type(SyncSinglePage[EnrolledIndividual], individual, path=["response"]) + assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) @parametrize def test_method_enroll_many_with_all_params(self, client: Finch) -> None: @@ -55,7 +54,7 @@ def test_method_enroll_many_with_all_params(self, client: Finch) -> None: } ], ) - assert_matches_type(SyncSinglePage[EnrolledIndividual], individual, path=["response"]) + assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) @parametrize def test_raw_response_enroll_many(self, client: Finch) -> None: @@ -66,7 +65,7 @@ def test_raw_response_enroll_many(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(SyncSinglePage[EnrolledIndividual], individual, path=["response"]) + assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) @parametrize def test_streaming_response_enroll_many(self, client: Finch) -> None: @@ -77,7 +76,7 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(SyncSinglePage[EnrolledIndividual], individual, path=["response"]) + assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) assert cast(Any, response.is_closed) is True @@ -177,7 +176,7 @@ def test_method_unenroll_many(self, client: Finch) -> None: individual = client.hris.benefits.individuals.unenroll_many( benefit_id="benefit_id", ) - assert_matches_type(SyncSinglePage[UnenrolledIndividual], individual, path=["response"]) + assert_matches_type(SyncSinglePage[object], individual, path=["response"]) @parametrize def test_method_unenroll_many_with_all_params(self, client: Finch) -> None: @@ -185,7 +184,7 @@ def test_method_unenroll_many_with_all_params(self, client: Finch) -> None: benefit_id="benefit_id", individual_ids=["string"], ) - assert_matches_type(SyncSinglePage[UnenrolledIndividual], individual, path=["response"]) + assert_matches_type(SyncSinglePage[object], individual, path=["response"]) @parametrize def test_raw_response_unenroll_many(self, client: Finch) -> None: @@ -196,7 +195,7 @@ def test_raw_response_unenroll_many(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(SyncSinglePage[UnenrolledIndividual], individual, path=["response"]) + assert_matches_type(SyncSinglePage[object], individual, path=["response"]) @parametrize def test_streaming_response_unenroll_many(self, client: Finch) -> None: @@ -207,7 +206,7 @@ def test_streaming_response_unenroll_many(self, client: Finch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(SyncSinglePage[UnenrolledIndividual], individual, path=["response"]) + assert_matches_type(SyncSinglePage[object], individual, path=["response"]) assert cast(Any, response.is_closed) is True @@ -227,7 +226,7 @@ async def test_method_enroll_many(self, async_client: AsyncFinch) -> None: individual = await async_client.hris.benefits.individuals.enroll_many( benefit_id="benefit_id", ) - assert_matches_type(AsyncSinglePage[EnrolledIndividual], individual, path=["response"]) + assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) @parametrize async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch) -> None: @@ -253,7 +252,7 @@ async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch } ], ) - assert_matches_type(AsyncSinglePage[EnrolledIndividual], individual, path=["response"]) + assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) @parametrize async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None: @@ -264,7 +263,7 @@ async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(AsyncSinglePage[EnrolledIndividual], individual, path=["response"]) + assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) @parametrize async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> None: @@ -275,7 +274,7 @@ async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = await response.parse() - assert_matches_type(AsyncSinglePage[EnrolledIndividual], individual, path=["response"]) + assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) assert cast(Any, response.is_closed) is True @@ -375,7 +374,7 @@ async def test_method_unenroll_many(self, async_client: AsyncFinch) -> None: individual = await async_client.hris.benefits.individuals.unenroll_many( benefit_id="benefit_id", ) - assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"]) + assert_matches_type(AsyncSinglePage[object], individual, path=["response"]) @parametrize async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFinch) -> None: @@ -383,7 +382,7 @@ async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFin benefit_id="benefit_id", individual_ids=["string"], ) - assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"]) + assert_matches_type(AsyncSinglePage[object], individual, path=["response"]) @parametrize async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> None: @@ -394,7 +393,7 @@ async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> Non assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"]) + assert_matches_type(AsyncSinglePage[object], individual, path=["response"]) @parametrize async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch) -> None: @@ -405,7 +404,7 @@ async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch) assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = await response.parse() - assert_matches_type(AsyncSinglePage[UnenrolledIndividual], individual, path=["response"]) + assert_matches_type(AsyncSinglePage[object], individual, path=["response"]) assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/hris/test_benefits.py b/tests/api_resources/hris/test_benefits.py index ce1adced..8d6507f9 100644 --- a/tests/api_resources/hris/test_benefits.py +++ b/tests/api_resources/hris/test_benefits.py @@ -12,9 +12,9 @@ from finch.pagination import SyncSinglePage, AsyncSinglePage from finch.types.hris import ( CompanyBenefit, - SupportedBenefit, UpdateCompanyBenefitResponse, CreateCompanyBenefitsResponse, + BenefitListSupportedBenefitsResponse, ) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -169,7 +169,7 @@ def test_streaming_response_list(self, client: Finch) -> None: @parametrize def test_method_list_supported_benefits(self, client: Finch) -> None: benefit = client.hris.benefits.list_supported_benefits() - assert_matches_type(SyncSinglePage[SupportedBenefit], benefit, path=["response"]) + assert_matches_type(SyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"]) @parametrize def test_raw_response_list_supported_benefits(self, client: Finch) -> None: @@ -178,7 +178,7 @@ def test_raw_response_list_supported_benefits(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" benefit = response.parse() - assert_matches_type(SyncSinglePage[SupportedBenefit], benefit, path=["response"]) + assert_matches_type(SyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"]) @parametrize def test_streaming_response_list_supported_benefits(self, client: Finch) -> None: @@ -187,7 +187,7 @@ def test_streaming_response_list_supported_benefits(self, client: Finch) -> None assert response.http_request.headers.get("X-Stainless-Lang") == "python" benefit = response.parse() - assert_matches_type(SyncSinglePage[SupportedBenefit], benefit, path=["response"]) + assert_matches_type(SyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"]) assert cast(Any, response.is_closed) is True @@ -341,7 +341,7 @@ async def test_streaming_response_list(self, async_client: AsyncFinch) -> None: @parametrize async def test_method_list_supported_benefits(self, async_client: AsyncFinch) -> None: benefit = await async_client.hris.benefits.list_supported_benefits() - assert_matches_type(AsyncSinglePage[SupportedBenefit], benefit, path=["response"]) + assert_matches_type(AsyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"]) @parametrize async def test_raw_response_list_supported_benefits(self, async_client: AsyncFinch) -> None: @@ -350,7 +350,7 @@ async def test_raw_response_list_supported_benefits(self, async_client: AsyncFin assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" benefit = response.parse() - assert_matches_type(AsyncSinglePage[SupportedBenefit], benefit, path=["response"]) + assert_matches_type(AsyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"]) @parametrize async def test_streaming_response_list_supported_benefits(self, async_client: AsyncFinch) -> None: @@ -359,6 +359,6 @@ async def test_streaming_response_list_supported_benefits(self, async_client: As assert response.http_request.headers.get("X-Stainless-Lang") == "python" benefit = await response.parse() - assert_matches_type(AsyncSinglePage[SupportedBenefit], benefit, path=["response"]) + assert_matches_type(AsyncSinglePage[BenefitListSupportedBenefitsResponse], benefit, path=["response"]) assert cast(Any, response.is_closed) is True From bc6c22d497fe8bb886e34095b01016904fe8258d Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 16:31:03 +0000 Subject: [PATCH 2/8] chore(internal): expand CI branch coverage (#648) --- .github/workflows/ci.yml | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3b286e5a..53a3a09c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,18 +1,18 @@ name: CI on: push: - branches: - - main - pull_request: - branches: - - main - - next + branches-ignore: + - 'generated' + - 'codegen/**' + - 'integrated/**' + - 'preview-head/**' + - 'preview-base/**' + - 'preview/**' jobs: lint: name: lint runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 @@ -33,7 +33,6 @@ jobs: test: name: test runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 From 4109f6cd3a880cab1e7ca9d90d8a29cf0ce737f4 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 19:05:58 +0000 Subject: [PATCH 3/8] feat(api): benefits mutation API endpoints (create benefit, update benefit, enroll individual, unenroll individual) now properly return async response types (#649) --- .stats.yml | 4 +-- api.md | 6 ++-- .../resources/hris/benefits/individuals.py | 31 ++++++++-------- src/finch/types/hris/benefits/__init__.py | 3 +- ...onse.py => enrolled_individual_benifit.py} | 4 +-- .../individual_unenroll_many_response.py | 10 ++++++ .../hris/benefits/test_individuals.py | 35 ++++++++++--------- 7 files changed, 51 insertions(+), 42 deletions(-) rename src/finch/types/hris/benefits/{individual_enroll_many_response.py => enrolled_individual_benifit.py} (61%) create mode 100644 src/finch/types/hris/benefits/individual_unenroll_many_response.py diff --git a/.stats.yml b/.stats.yml index 950c125e..de2b9cc9 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 46 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-8c83f0eae70d2a02ed3e2059fc251affdccd2f848f45445e4fed64dfd9ca5985.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-bf858f37d7ab420841ddc6329dad8c46377308b6a5c8e935908011d0f9845e22.yml openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee -config_hash: ce10384813f68ba3fed61c7b601b396b +config_hash: 4a8def48077df6382ed9fe00588baecf diff --git a/api.md b/api.md index 1a45d403..0936c7e1 100644 --- a/api.md +++ b/api.md @@ -189,8 +189,8 @@ Types: ```python from finch.types.hris.benefits import ( + EnrolledIndividualBenifit, IndividualBenefit, - IndividualEnrollManyResponse, IndividualEnrolledIDsResponse, IndividualUnenrollManyResponse, ) @@ -198,10 +198,10 @@ from finch.types.hris.benefits import ( Methods: -- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> IndividualEnrollManyResponse +- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenifit - client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse - client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit] -- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> SyncSinglePage[object] +- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> IndividualUnenrollManyResponse # Providers diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py index a017e491..3e06189d 100644 --- a/src/finch/resources/hris/benefits/individuals.py +++ b/src/finch/resources/hris/benefits/individuals.py @@ -23,8 +23,9 @@ individual_retrieve_many_benefits_params, ) from ....types.hris.benefits.individual_benefit import IndividualBenefit -from ....types.hris.benefits.individual_enroll_many_response import IndividualEnrollManyResponse +from ....types.hris.benefits.enrolled_individual_benifit import EnrolledIndividualBenifit from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse +from ....types.hris.benefits.individual_unenroll_many_response import IndividualUnenrollManyResponse __all__ = ["Individuals", "AsyncIndividuals"] @@ -60,7 +61,7 @@ def enroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> IndividualEnrollManyResponse: + ) -> EnrolledIndividualBenifit: """Enroll an individual into a deduction or contribution. This is an overwrite @@ -87,7 +88,7 @@ def enroll_many( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=IndividualEnrollManyResponse, + cast_to=EnrolledIndividualBenifit, ) def enrolled_ids( @@ -179,7 +180,7 @@ def unenroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> SyncSinglePage[object]: + ) -> IndividualUnenrollManyResponse: """ Unenroll individuals from a deduction or contribution @@ -196,17 +197,15 @@ def unenroll_many( """ if not benefit_id: raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}") - return self._get_api_list( + return self._delete( f"/employer/benefits/{benefit_id}/individuals", - page=SyncSinglePage[object], body=maybe_transform( {"individual_ids": individual_ids}, individual_unenroll_many_params.IndividualUnenrollManyParams ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - model=object, - method="delete", + cast_to=IndividualUnenrollManyResponse, ) @@ -241,7 +240,7 @@ async def enroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> IndividualEnrollManyResponse: + ) -> EnrolledIndividualBenifit: """Enroll an individual into a deduction or contribution. This is an overwrite @@ -268,7 +267,7 @@ async def enroll_many( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=IndividualEnrollManyResponse, + cast_to=EnrolledIndividualBenifit, ) async def enrolled_ids( @@ -349,7 +348,7 @@ def retrieve_many_benefits( model=IndividualBenefit, ) - def unenroll_many( + async def unenroll_many( self, benefit_id: str, *, @@ -360,7 +359,7 @@ def unenroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> AsyncPaginator[object, AsyncSinglePage[object]]: + ) -> IndividualUnenrollManyResponse: """ Unenroll individuals from a deduction or contribution @@ -377,17 +376,15 @@ def unenroll_many( """ if not benefit_id: raise ValueError(f"Expected a non-empty value for `benefit_id` but received {benefit_id!r}") - return self._get_api_list( + return await self._delete( f"/employer/benefits/{benefit_id}/individuals", - page=AsyncSinglePage[object], - body=maybe_transform( + body=await async_maybe_transform( {"individual_ids": individual_ids}, individual_unenroll_many_params.IndividualUnenrollManyParams ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - model=object, - method="delete", + cast_to=IndividualUnenrollManyResponse, ) diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py index 34a2f325..99dae977 100644 --- a/src/finch/types/hris/benefits/__init__.py +++ b/src/finch/types/hris/benefits/__init__.py @@ -3,10 +3,11 @@ from __future__ import annotations from .individual_benefit import IndividualBenefit as IndividualBenefit +from .enrolled_individual_benifit import EnrolledIndividualBenifit as EnrolledIndividualBenifit from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams -from .individual_enroll_many_response import IndividualEnrollManyResponse as IndividualEnrollManyResponse from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse +from .individual_unenroll_many_response import IndividualUnenrollManyResponse as IndividualUnenrollManyResponse from .individual_retrieve_many_benefits_params import ( IndividualRetrieveManyBenefitsParams as IndividualRetrieveManyBenefitsParams, ) diff --git a/src/finch/types/hris/benefits/individual_enroll_many_response.py b/src/finch/types/hris/benefits/enrolled_individual_benifit.py similarity index 61% rename from src/finch/types/hris/benefits/individual_enroll_many_response.py rename to src/finch/types/hris/benefits/enrolled_individual_benifit.py index e205eec5..6f1354e5 100644 --- a/src/finch/types/hris/benefits/individual_enroll_many_response.py +++ b/src/finch/types/hris/benefits/enrolled_individual_benifit.py @@ -3,8 +3,8 @@ from ...._models import BaseModel -__all__ = ["IndividualEnrollManyResponse"] +__all__ = ["EnrolledIndividualBenifit"] -class IndividualEnrollManyResponse(BaseModel): +class EnrolledIndividualBenifit(BaseModel): job_id: str diff --git a/src/finch/types/hris/benefits/individual_unenroll_many_response.py b/src/finch/types/hris/benefits/individual_unenroll_many_response.py new file mode 100644 index 00000000..03b9ecfa --- /dev/null +++ b/src/finch/types/hris/benefits/individual_unenroll_many_response.py @@ -0,0 +1,10 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + + +from ...._models import BaseModel + +__all__ = ["IndividualUnenrollManyResponse"] + + +class IndividualUnenrollManyResponse(BaseModel): + job_id: str diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py index 62af21a9..8c49ddd5 100644 --- a/tests/api_resources/hris/benefits/test_individuals.py +++ b/tests/api_resources/hris/benefits/test_individuals.py @@ -13,8 +13,9 @@ from finch.pagination import SyncSinglePage, AsyncSinglePage from finch.types.hris.benefits import ( IndividualBenefit, - IndividualEnrollManyResponse, + EnrolledIndividualBenifit, IndividualEnrolledIDsResponse, + IndividualUnenrollManyResponse, ) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -28,7 +29,7 @@ def test_method_enroll_many(self, client: Finch) -> None: individual = client.hris.benefits.individuals.enroll_many( benefit_id="benefit_id", ) - assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) @parametrize def test_method_enroll_many_with_all_params(self, client: Finch) -> None: @@ -54,7 +55,7 @@ def test_method_enroll_many_with_all_params(self, client: Finch) -> None: } ], ) - assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) @parametrize def test_raw_response_enroll_many(self, client: Finch) -> None: @@ -65,7 +66,7 @@ def test_raw_response_enroll_many(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) @parametrize def test_streaming_response_enroll_many(self, client: Finch) -> None: @@ -76,7 +77,7 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) assert cast(Any, response.is_closed) is True @@ -176,7 +177,7 @@ def test_method_unenroll_many(self, client: Finch) -> None: individual = client.hris.benefits.individuals.unenroll_many( benefit_id="benefit_id", ) - assert_matches_type(SyncSinglePage[object], individual, path=["response"]) + assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) @parametrize def test_method_unenroll_many_with_all_params(self, client: Finch) -> None: @@ -184,7 +185,7 @@ def test_method_unenroll_many_with_all_params(self, client: Finch) -> None: benefit_id="benefit_id", individual_ids=["string"], ) - assert_matches_type(SyncSinglePage[object], individual, path=["response"]) + assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) @parametrize def test_raw_response_unenroll_many(self, client: Finch) -> None: @@ -195,7 +196,7 @@ def test_raw_response_unenroll_many(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(SyncSinglePage[object], individual, path=["response"]) + assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) @parametrize def test_streaming_response_unenroll_many(self, client: Finch) -> None: @@ -206,7 +207,7 @@ def test_streaming_response_unenroll_many(self, client: Finch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(SyncSinglePage[object], individual, path=["response"]) + assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) assert cast(Any, response.is_closed) is True @@ -226,7 +227,7 @@ async def test_method_enroll_many(self, async_client: AsyncFinch) -> None: individual = await async_client.hris.benefits.individuals.enroll_many( benefit_id="benefit_id", ) - assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) @parametrize async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch) -> None: @@ -252,7 +253,7 @@ async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch } ], ) - assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) @parametrize async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None: @@ -263,7 +264,7 @@ async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) @parametrize async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> None: @@ -274,7 +275,7 @@ async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = await response.parse() - assert_matches_type(IndividualEnrollManyResponse, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) assert cast(Any, response.is_closed) is True @@ -374,7 +375,7 @@ async def test_method_unenroll_many(self, async_client: AsyncFinch) -> None: individual = await async_client.hris.benefits.individuals.unenroll_many( benefit_id="benefit_id", ) - assert_matches_type(AsyncSinglePage[object], individual, path=["response"]) + assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) @parametrize async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFinch) -> None: @@ -382,7 +383,7 @@ async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFin benefit_id="benefit_id", individual_ids=["string"], ) - assert_matches_type(AsyncSinglePage[object], individual, path=["response"]) + assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) @parametrize async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> None: @@ -393,7 +394,7 @@ async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> Non assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(AsyncSinglePage[object], individual, path=["response"]) + assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) @parametrize async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch) -> None: @@ -404,7 +405,7 @@ async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch) assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = await response.parse() - assert_matches_type(AsyncSinglePage[object], individual, path=["response"]) + assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) assert cast(Any, response.is_closed) is True From 17dc2ea50995d6883ad07a77a4c039a8c097253f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 19:06:58 +0000 Subject: [PATCH 4/8] chore: fix typo (#650) --- .stats.yml | 2 +- api.md | 4 ++-- .../resources/hris/benefits/individuals.py | 10 +++++----- src/finch/types/hris/benefits/__init__.py | 2 +- ...nifit.py => enrolled_individual_benefit.py} | 4 ++-- .../hris/benefits/test_individuals.py | 18 +++++++++--------- 6 files changed, 20 insertions(+), 20 deletions(-) rename src/finch/types/hris/benefits/{enrolled_individual_benifit.py => enrolled_individual_benefit.py} (62%) diff --git a/.stats.yml b/.stats.yml index de2b9cc9..7ded5a0c 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 46 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-bf858f37d7ab420841ddc6329dad8c46377308b6a5c8e935908011d0f9845e22.yml openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee -config_hash: 4a8def48077df6382ed9fe00588baecf +config_hash: 9faa2458e0e8bb125bf5d41e514a19e7 diff --git a/api.md b/api.md index 0936c7e1..c466063b 100644 --- a/api.md +++ b/api.md @@ -189,7 +189,7 @@ Types: ```python from finch.types.hris.benefits import ( - EnrolledIndividualBenifit, + EnrolledIndividualBenefit, IndividualBenefit, IndividualEnrolledIDsResponse, IndividualUnenrollManyResponse, @@ -198,7 +198,7 @@ from finch.types.hris.benefits import ( Methods: -- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenifit +- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenefit - client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse - client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit] - client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> IndividualUnenrollManyResponse diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py index 3e06189d..144bfff2 100644 --- a/src/finch/resources/hris/benefits/individuals.py +++ b/src/finch/resources/hris/benefits/individuals.py @@ -23,7 +23,7 @@ individual_retrieve_many_benefits_params, ) from ....types.hris.benefits.individual_benefit import IndividualBenefit -from ....types.hris.benefits.enrolled_individual_benifit import EnrolledIndividualBenifit +from ....types.hris.benefits.enrolled_individual_benefit import EnrolledIndividualBenefit from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse from ....types.hris.benefits.individual_unenroll_many_response import IndividualUnenrollManyResponse @@ -61,7 +61,7 @@ def enroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> EnrolledIndividualBenifit: + ) -> EnrolledIndividualBenefit: """Enroll an individual into a deduction or contribution. This is an overwrite @@ -88,7 +88,7 @@ def enroll_many( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=EnrolledIndividualBenifit, + cast_to=EnrolledIndividualBenefit, ) def enrolled_ids( @@ -240,7 +240,7 @@ async def enroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> EnrolledIndividualBenifit: + ) -> EnrolledIndividualBenefit: """Enroll an individual into a deduction or contribution. This is an overwrite @@ -267,7 +267,7 @@ async def enroll_many( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=EnrolledIndividualBenifit, + cast_to=EnrolledIndividualBenefit, ) async def enrolled_ids( diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py index 99dae977..2b8e565a 100644 --- a/src/finch/types/hris/benefits/__init__.py +++ b/src/finch/types/hris/benefits/__init__.py @@ -3,7 +3,7 @@ from __future__ import annotations from .individual_benefit import IndividualBenefit as IndividualBenefit -from .enrolled_individual_benifit import EnrolledIndividualBenifit as EnrolledIndividualBenifit +from .enrolled_individual_benefit import EnrolledIndividualBenefit as EnrolledIndividualBenefit from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse diff --git a/src/finch/types/hris/benefits/enrolled_individual_benifit.py b/src/finch/types/hris/benefits/enrolled_individual_benefit.py similarity index 62% rename from src/finch/types/hris/benefits/enrolled_individual_benifit.py rename to src/finch/types/hris/benefits/enrolled_individual_benefit.py index 6f1354e5..1e08cda3 100644 --- a/src/finch/types/hris/benefits/enrolled_individual_benifit.py +++ b/src/finch/types/hris/benefits/enrolled_individual_benefit.py @@ -3,8 +3,8 @@ from ...._models import BaseModel -__all__ = ["EnrolledIndividualBenifit"] +__all__ = ["EnrolledIndividualBenefit"] -class EnrolledIndividualBenifit(BaseModel): +class EnrolledIndividualBenefit(BaseModel): job_id: str diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py index 8c49ddd5..14df0529 100644 --- a/tests/api_resources/hris/benefits/test_individuals.py +++ b/tests/api_resources/hris/benefits/test_individuals.py @@ -13,7 +13,7 @@ from finch.pagination import SyncSinglePage, AsyncSinglePage from finch.types.hris.benefits import ( IndividualBenefit, - EnrolledIndividualBenifit, + EnrolledIndividualBenefit, IndividualEnrolledIDsResponse, IndividualUnenrollManyResponse, ) @@ -29,7 +29,7 @@ def test_method_enroll_many(self, client: Finch) -> None: individual = client.hris.benefits.individuals.enroll_many( benefit_id="benefit_id", ) - assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) @parametrize def test_method_enroll_many_with_all_params(self, client: Finch) -> None: @@ -55,7 +55,7 @@ def test_method_enroll_many_with_all_params(self, client: Finch) -> None: } ], ) - assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) @parametrize def test_raw_response_enroll_many(self, client: Finch) -> None: @@ -66,7 +66,7 @@ def test_raw_response_enroll_many(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) @parametrize def test_streaming_response_enroll_many(self, client: Finch) -> None: @@ -77,7 +77,7 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) assert cast(Any, response.is_closed) is True @@ -227,7 +227,7 @@ async def test_method_enroll_many(self, async_client: AsyncFinch) -> None: individual = await async_client.hris.benefits.individuals.enroll_many( benefit_id="benefit_id", ) - assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) @parametrize async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch) -> None: @@ -253,7 +253,7 @@ async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch } ], ) - assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) @parametrize async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None: @@ -264,7 +264,7 @@ async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) @parametrize async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> None: @@ -275,7 +275,7 @@ async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = await response.parse() - assert_matches_type(EnrolledIndividualBenifit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) assert cast(Any, response.is_closed) is True From 6452c2ce11111b2eba1c2cb941ccd32fdd1c5a82 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 19:35:14 +0000 Subject: [PATCH 5/8] feat(api): add models for hrs benefits individuals async responses --- .stats.yml | 2 +- api.md | 4 ++-- .../resources/hris/benefits/individuals.py | 10 +++++----- src/finch/types/hris/benefits/__init__.py | 2 +- ...=> enrolled_individual_benefit_response.py} | 4 ++-- .../hris/benefits/test_individuals.py | 18 +++++++++--------- 6 files changed, 20 insertions(+), 20 deletions(-) rename src/finch/types/hris/benefits/{enrolled_individual_benefit.py => enrolled_individual_benefit_response.py} (58%) diff --git a/.stats.yml b/.stats.yml index 7ded5a0c..5c34e39d 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 46 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-bf858f37d7ab420841ddc6329dad8c46377308b6a5c8e935908011d0f9845e22.yml openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee -config_hash: 9faa2458e0e8bb125bf5d41e514a19e7 +config_hash: bedc278fd693e36e7d8dc508d75ab76a diff --git a/api.md b/api.md index c466063b..d0ce7c58 100644 --- a/api.md +++ b/api.md @@ -189,7 +189,7 @@ Types: ```python from finch.types.hris.benefits import ( - EnrolledIndividualBenefit, + EnrolledIndividualBenefitResponse, IndividualBenefit, IndividualEnrolledIDsResponse, IndividualUnenrollManyResponse, @@ -198,7 +198,7 @@ from finch.types.hris.benefits import ( Methods: -- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenefit +- client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenefitResponse - client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse - client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit] - client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> IndividualUnenrollManyResponse diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py index 144bfff2..132d3e6e 100644 --- a/src/finch/resources/hris/benefits/individuals.py +++ b/src/finch/resources/hris/benefits/individuals.py @@ -23,9 +23,9 @@ individual_retrieve_many_benefits_params, ) from ....types.hris.benefits.individual_benefit import IndividualBenefit -from ....types.hris.benefits.enrolled_individual_benefit import EnrolledIndividualBenefit from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse from ....types.hris.benefits.individual_unenroll_many_response import IndividualUnenrollManyResponse +from ....types.hris.benefits.enrolled_individual_benefit_response import EnrolledIndividualBenefitResponse __all__ = ["Individuals", "AsyncIndividuals"] @@ -61,7 +61,7 @@ def enroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> EnrolledIndividualBenefit: + ) -> EnrolledIndividualBenefitResponse: """Enroll an individual into a deduction or contribution. This is an overwrite @@ -88,7 +88,7 @@ def enroll_many( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=EnrolledIndividualBenefit, + cast_to=EnrolledIndividualBenefitResponse, ) def enrolled_ids( @@ -240,7 +240,7 @@ async def enroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> EnrolledIndividualBenefit: + ) -> EnrolledIndividualBenefitResponse: """Enroll an individual into a deduction or contribution. This is an overwrite @@ -267,7 +267,7 @@ async def enroll_many( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=EnrolledIndividualBenefit, + cast_to=EnrolledIndividualBenefitResponse, ) async def enrolled_ids( diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py index 2b8e565a..c971cfa5 100644 --- a/src/finch/types/hris/benefits/__init__.py +++ b/src/finch/types/hris/benefits/__init__.py @@ -3,11 +3,11 @@ from __future__ import annotations from .individual_benefit import IndividualBenefit as IndividualBenefit -from .enrolled_individual_benefit import EnrolledIndividualBenefit as EnrolledIndividualBenefit from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse from .individual_unenroll_many_response import IndividualUnenrollManyResponse as IndividualUnenrollManyResponse +from .enrolled_individual_benefit_response import EnrolledIndividualBenefitResponse as EnrolledIndividualBenefitResponse from .individual_retrieve_many_benefits_params import ( IndividualRetrieveManyBenefitsParams as IndividualRetrieveManyBenefitsParams, ) diff --git a/src/finch/types/hris/benefits/enrolled_individual_benefit.py b/src/finch/types/hris/benefits/enrolled_individual_benefit_response.py similarity index 58% rename from src/finch/types/hris/benefits/enrolled_individual_benefit.py rename to src/finch/types/hris/benefits/enrolled_individual_benefit_response.py index 1e08cda3..0b42e9b4 100644 --- a/src/finch/types/hris/benefits/enrolled_individual_benefit.py +++ b/src/finch/types/hris/benefits/enrolled_individual_benefit_response.py @@ -3,8 +3,8 @@ from ...._models import BaseModel -__all__ = ["EnrolledIndividualBenefit"] +__all__ = ["EnrolledIndividualBenefitResponse"] -class EnrolledIndividualBenefit(BaseModel): +class EnrolledIndividualBenefitResponse(BaseModel): job_id: str diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py index 14df0529..4203e433 100644 --- a/tests/api_resources/hris/benefits/test_individuals.py +++ b/tests/api_resources/hris/benefits/test_individuals.py @@ -13,9 +13,9 @@ from finch.pagination import SyncSinglePage, AsyncSinglePage from finch.types.hris.benefits import ( IndividualBenefit, - EnrolledIndividualBenefit, IndividualEnrolledIDsResponse, IndividualUnenrollManyResponse, + EnrolledIndividualBenefitResponse, ) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -29,7 +29,7 @@ def test_method_enroll_many(self, client: Finch) -> None: individual = client.hris.benefits.individuals.enroll_many( benefit_id="benefit_id", ) - assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize def test_method_enroll_many_with_all_params(self, client: Finch) -> None: @@ -55,7 +55,7 @@ def test_method_enroll_many_with_all_params(self, client: Finch) -> None: } ], ) - assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize def test_raw_response_enroll_many(self, client: Finch) -> None: @@ -66,7 +66,7 @@ def test_raw_response_enroll_many(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize def test_streaming_response_enroll_many(self, client: Finch) -> None: @@ -77,7 +77,7 @@ def test_streaming_response_enroll_many(self, client: Finch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"]) assert cast(Any, response.is_closed) is True @@ -227,7 +227,7 @@ async def test_method_enroll_many(self, async_client: AsyncFinch) -> None: individual = await async_client.hris.benefits.individuals.enroll_many( benefit_id="benefit_id", ) - assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch) -> None: @@ -253,7 +253,7 @@ async def test_method_enroll_many_with_all_params(self, async_client: AsyncFinch } ], ) - assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None: @@ -264,7 +264,7 @@ async def test_raw_response_enroll_many(self, async_client: AsyncFinch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> None: @@ -275,7 +275,7 @@ async def test_streaming_response_enroll_many(self, async_client: AsyncFinch) -> assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = await response.parse() - assert_matches_type(EnrolledIndividualBenefit, individual, path=["response"]) + assert_matches_type(EnrolledIndividualBenefitResponse, individual, path=["response"]) assert cast(Any, response.is_closed) is True From 8772010e01df66a41bae7b5689bf7af20f2c0411 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 19:36:14 +0000 Subject: [PATCH 6/8] chore: fix typo --- .stats.yml | 2 +- api.md | 4 ++-- .../resources/hris/benefits/individuals.py | 10 +++++----- src/finch/types/hris/benefits/__init__.py | 4 +++- ... unenrolled_individual_benefit_response.py} | 4 ++-- .../hris/benefits/test_individuals.py | 18 +++++++++--------- 6 files changed, 22 insertions(+), 20 deletions(-) rename src/finch/types/hris/benefits/{individual_unenroll_many_response.py => unenrolled_individual_benefit_response.py} (57%) diff --git a/.stats.yml b/.stats.yml index 5c34e39d..f9cf330b 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 46 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-bf858f37d7ab420841ddc6329dad8c46377308b6a5c8e935908011d0f9845e22.yml openapi_spec_hash: 2523952a32436e3c7fd3b55508c2e7ee -config_hash: bedc278fd693e36e7d8dc508d75ab76a +config_hash: 53778a0b839c4f6ad34fbba051f5e8a6 diff --git a/api.md b/api.md index d0ce7c58..1e750c7c 100644 --- a/api.md +++ b/api.md @@ -191,8 +191,8 @@ Types: from finch.types.hris.benefits import ( EnrolledIndividualBenefitResponse, IndividualBenefit, + UnenrolledIndividualBenefitResponse, IndividualEnrolledIDsResponse, - IndividualUnenrollManyResponse, ) ``` @@ -201,7 +201,7 @@ Methods: - client.hris.benefits.individuals.enroll_many(benefit_id, \*\*params) -> EnrolledIndividualBenefitResponse - client.hris.benefits.individuals.enrolled_ids(benefit_id) -> IndividualEnrolledIDsResponse - client.hris.benefits.individuals.retrieve_many_benefits(benefit_id, \*\*params) -> SyncSinglePage[IndividualBenefit] -- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> IndividualUnenrollManyResponse +- client.hris.benefits.individuals.unenroll_many(benefit_id, \*\*params) -> UnenrolledIndividualBenefitResponse # Providers diff --git a/src/finch/resources/hris/benefits/individuals.py b/src/finch/resources/hris/benefits/individuals.py index 132d3e6e..604f867d 100644 --- a/src/finch/resources/hris/benefits/individuals.py +++ b/src/finch/resources/hris/benefits/individuals.py @@ -24,8 +24,8 @@ ) from ....types.hris.benefits.individual_benefit import IndividualBenefit from ....types.hris.benefits.individual_enrolled_ids_response import IndividualEnrolledIDsResponse -from ....types.hris.benefits.individual_unenroll_many_response import IndividualUnenrollManyResponse from ....types.hris.benefits.enrolled_individual_benefit_response import EnrolledIndividualBenefitResponse +from ....types.hris.benefits.unenrolled_individual_benefit_response import UnenrolledIndividualBenefitResponse __all__ = ["Individuals", "AsyncIndividuals"] @@ -180,7 +180,7 @@ def unenroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> IndividualUnenrollManyResponse: + ) -> UnenrolledIndividualBenefitResponse: """ Unenroll individuals from a deduction or contribution @@ -205,7 +205,7 @@ def unenroll_many( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=IndividualUnenrollManyResponse, + cast_to=UnenrolledIndividualBenefitResponse, ) @@ -359,7 +359,7 @@ async def unenroll_many( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, - ) -> IndividualUnenrollManyResponse: + ) -> UnenrolledIndividualBenefitResponse: """ Unenroll individuals from a deduction or contribution @@ -384,7 +384,7 @@ async def unenroll_many( options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=IndividualUnenrollManyResponse, + cast_to=UnenrolledIndividualBenefitResponse, ) diff --git a/src/finch/types/hris/benefits/__init__.py b/src/finch/types/hris/benefits/__init__.py index c971cfa5..90057bb2 100644 --- a/src/finch/types/hris/benefits/__init__.py +++ b/src/finch/types/hris/benefits/__init__.py @@ -6,8 +6,10 @@ from .individual_enroll_many_params import IndividualEnrollManyParams as IndividualEnrollManyParams from .individual_unenroll_many_params import IndividualUnenrollManyParams as IndividualUnenrollManyParams from .individual_enrolled_ids_response import IndividualEnrolledIDsResponse as IndividualEnrolledIDsResponse -from .individual_unenroll_many_response import IndividualUnenrollManyResponse as IndividualUnenrollManyResponse from .enrolled_individual_benefit_response import EnrolledIndividualBenefitResponse as EnrolledIndividualBenefitResponse +from .unenrolled_individual_benefit_response import ( + UnenrolledIndividualBenefitResponse as UnenrolledIndividualBenefitResponse, +) from .individual_retrieve_many_benefits_params import ( IndividualRetrieveManyBenefitsParams as IndividualRetrieveManyBenefitsParams, ) diff --git a/src/finch/types/hris/benefits/individual_unenroll_many_response.py b/src/finch/types/hris/benefits/unenrolled_individual_benefit_response.py similarity index 57% rename from src/finch/types/hris/benefits/individual_unenroll_many_response.py rename to src/finch/types/hris/benefits/unenrolled_individual_benefit_response.py index 03b9ecfa..aa539f3f 100644 --- a/src/finch/types/hris/benefits/individual_unenroll_many_response.py +++ b/src/finch/types/hris/benefits/unenrolled_individual_benefit_response.py @@ -3,8 +3,8 @@ from ...._models import BaseModel -__all__ = ["IndividualUnenrollManyResponse"] +__all__ = ["UnenrolledIndividualBenefitResponse"] -class IndividualUnenrollManyResponse(BaseModel): +class UnenrolledIndividualBenefitResponse(BaseModel): job_id: str diff --git a/tests/api_resources/hris/benefits/test_individuals.py b/tests/api_resources/hris/benefits/test_individuals.py index 4203e433..0800ed21 100644 --- a/tests/api_resources/hris/benefits/test_individuals.py +++ b/tests/api_resources/hris/benefits/test_individuals.py @@ -14,8 +14,8 @@ from finch.types.hris.benefits import ( IndividualBenefit, IndividualEnrolledIDsResponse, - IndividualUnenrollManyResponse, EnrolledIndividualBenefitResponse, + UnenrolledIndividualBenefitResponse, ) base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010") @@ -177,7 +177,7 @@ def test_method_unenroll_many(self, client: Finch) -> None: individual = client.hris.benefits.individuals.unenroll_many( benefit_id="benefit_id", ) - assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) + assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize def test_method_unenroll_many_with_all_params(self, client: Finch) -> None: @@ -185,7 +185,7 @@ def test_method_unenroll_many_with_all_params(self, client: Finch) -> None: benefit_id="benefit_id", individual_ids=["string"], ) - assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) + assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize def test_raw_response_unenroll_many(self, client: Finch) -> None: @@ -196,7 +196,7 @@ def test_raw_response_unenroll_many(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) + assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize def test_streaming_response_unenroll_many(self, client: Finch) -> None: @@ -207,7 +207,7 @@ def test_streaming_response_unenroll_many(self, client: Finch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) + assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"]) assert cast(Any, response.is_closed) is True @@ -375,7 +375,7 @@ async def test_method_unenroll_many(self, async_client: AsyncFinch) -> None: individual = await async_client.hris.benefits.individuals.unenroll_many( benefit_id="benefit_id", ) - assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) + assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFinch) -> None: @@ -383,7 +383,7 @@ async def test_method_unenroll_many_with_all_params(self, async_client: AsyncFin benefit_id="benefit_id", individual_ids=["string"], ) - assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) + assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> None: @@ -394,7 +394,7 @@ async def test_raw_response_unenroll_many(self, async_client: AsyncFinch) -> Non assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = response.parse() - assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) + assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"]) @parametrize async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch) -> None: @@ -405,7 +405,7 @@ async def test_streaming_response_unenroll_many(self, async_client: AsyncFinch) assert response.http_request.headers.get("X-Stainless-Lang") == "python" individual = await response.parse() - assert_matches_type(IndividualUnenrollManyResponse, individual, path=["response"]) + assert_matches_type(UnenrolledIndividualBenefitResponse, individual, path=["response"]) assert cast(Any, response.is_closed) is True From bad1202ad8b8e73fb4ae4c8624405997c2ad33e2 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 21:06:28 +0000 Subject: [PATCH 7/8] chore(internal): reduce CI branch coverage --- .github/workflows/ci.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 53a3a09c..81f6dc20 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,13 +1,12 @@ name: CI on: push: - branches-ignore: - - 'generated' - - 'codegen/**' - - 'integrated/**' - - 'preview-head/**' - - 'preview-base/**' - - 'preview/**' + branches: + - main + pull_request: + branches: + - main + - next jobs: lint: From 225c460e39d7dbcee37ba16f67b4a3f68c3b1d89 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 21:07:09 +0000 Subject: [PATCH 8/8] release: 1.21.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 18 ++++++++++++++++++ pyproject.toml | 2 +- src/finch/_version.py | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 511722b9..ba231b07 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.20.1" + ".": "1.21.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 356b6ee9..2db87fef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## 1.21.0 (2025-04-09) + +Full Changelog: [v1.20.1...v1.21.0](https://github.com/Finch-API/finch-api-python/compare/v1.20.1...v1.21.0) + +### Features + +* **api:** add models for hrs benefits individuals async responses ([6452c2c](https://github.com/Finch-API/finch-api-python/commit/6452c2ce11111b2eba1c2cb941ccd32fdd1c5a82)) +* **api:** api update ([#646](https://github.com/Finch-API/finch-api-python/issues/646)) ([7ac8751](https://github.com/Finch-API/finch-api-python/commit/7ac875106bdcfb8bfb097b971f48ecd88d06c26a)) +* **api:** benefits mutation API endpoints (create benefit, update benefit, enroll individual, unenroll individual) now properly return async response types ([#649](https://github.com/Finch-API/finch-api-python/issues/649)) ([4109f6c](https://github.com/Finch-API/finch-api-python/commit/4109f6cd3a880cab1e7ca9d90d8a29cf0ce737f4)) + + +### Chores + +* fix typo ([8772010](https://github.com/Finch-API/finch-api-python/commit/8772010e01df66a41bae7b5689bf7af20f2c0411)) +* fix typo ([#650](https://github.com/Finch-API/finch-api-python/issues/650)) ([17dc2ea](https://github.com/Finch-API/finch-api-python/commit/17dc2ea50995d6883ad07a77a4c039a8c097253f)) +* **internal:** expand CI branch coverage ([#648](https://github.com/Finch-API/finch-api-python/issues/648)) ([bc6c22d](https://github.com/Finch-API/finch-api-python/commit/bc6c22d497fe8bb886e34095b01016904fe8258d)) +* **internal:** reduce CI branch coverage ([bad1202](https://github.com/Finch-API/finch-api-python/commit/bad1202ad8b8e73fb4ae4c8624405997c2ad33e2)) + ## 1.20.1 (2025-04-08) Full Changelog: [v1.20.0...v1.20.1](https://github.com/Finch-API/finch-api-python/compare/v1.20.0...v1.20.1) diff --git a/pyproject.toml b/pyproject.toml index 7506addc..0080f7bf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "finch-api" -version = "1.20.1" +version = "1.21.0" description = "The official Python library for the Finch API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/finch/_version.py b/src/finch/_version.py index 15f2237e..4bdbe1a5 100644 --- a/src/finch/_version.py +++ b/src/finch/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "finch" -__version__ = "1.20.1" # x-release-please-version +__version__ = "1.21.0" # x-release-please-version