From b43172be04510b5a760a1446d3b302e9487cf3ab Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 18:39:13 +0000 Subject: [PATCH 1/8] fix(java): Resolve name collisions --- .stats.yml | 4 +- api.md | 4 +- src/finch/resources/connect/sessions.py | 40 +++++++-------- src/finch/resources/request_forwarding.py | 24 ++++----- src/finch/types/connect/__init__.py | 4 +- ...ew_params.py => session_connect_params.py} | 4 +- ...esponse.py => session_connect_response.py} | 4 +- .../request_forwarding_forward_params.py | 14 +++--- tests/api_resources/connect/test_sessions.py | 50 +++++++++---------- .../api_resources/test_request_forwarding.py | 4 +- 10 files changed, 76 insertions(+), 76 deletions(-) rename src/finch/types/connect/{session_new_params.py => session_connect_params.py} (94%) rename src/finch/types/connect/{session_new_response.py => session_connect_response.py} (79%) diff --git a/.stats.yml b/.stats.yml index 8d224370..f316e062 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-970ab04a97244c68824c0c52e06925cba14fb7dbfc36c03167c1afe74cd1b150.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-640ec74bfc2f335f7277863ee0cbd0af98bb6018cb1ec2f116ce4145148f4477.yml openapi_spec_hash: 315e7859c3f77311261fb824b74a8247 -config_hash: f2846563903bf75ab0858872154df0f7 +config_hash: f921f92cc97449dcc1334a594b435c73 diff --git a/api.md b/api.md index 54860760..62145265 100644 --- a/api.md +++ b/api.md @@ -430,10 +430,10 @@ Methods: Types: ```python -from finch.types.connect import SessionNewResponse, SessionReauthenticateResponse +from finch.types.connect import SessionConnectResponse, SessionReauthenticateResponse ``` Methods: -- client.connect.sessions.new(\*\*params) -> SessionNewResponse +- client.connect.sessions.connect(\*\*params) -> SessionConnectResponse - client.connect.sessions.reauthenticate(\*\*params) -> SessionReauthenticateResponse diff --git a/src/finch/resources/connect/sessions.py b/src/finch/resources/connect/sessions.py index f402a565..75c09e79 100644 --- a/src/finch/resources/connect/sessions.py +++ b/src/finch/resources/connect/sessions.py @@ -14,8 +14,8 @@ from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper from ..._base_client import make_request_options -from ...types.connect import session_new_params, session_reauthenticate_params -from ...types.connect.session_new_response import SessionNewResponse +from ...types.connect import session_connect_params, session_reauthenticate_params +from ...types.connect.session_connect_response import SessionConnectResponse from ...types.connect.session_reauthenticate_response import SessionReauthenticateResponse __all__ = ["Sessions", "AsyncSessions"] @@ -41,7 +41,7 @@ def with_streaming_response(self) -> SessionsWithStreamingResponse: """ return SessionsWithStreamingResponse(self) - def new( + def connect( self, *, customer_id: str, @@ -61,7 +61,7 @@ def new( ] ], customer_email: Optional[str] | Omit = omit, - integration: Optional[session_new_params.Integration] | Omit = omit, + integration: Optional[session_connect_params.Integration] | Omit = omit, manual: Optional[bool] | Omit = omit, minutes_to_expire: Optional[float] | Omit = omit, redirect_uri: Optional[str] | Omit = omit, @@ -72,7 +72,7 @@ def new( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SessionNewResponse: + ) -> SessionConnectResponse: """ Create a new connect session for an employer @@ -118,12 +118,12 @@ def new( "redirect_uri": redirect_uri, "sandbox": sandbox, }, - session_new_params.SessionNewParams, + session_connect_params.SessionConnectParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=SessionNewResponse, + cast_to=SessionConnectResponse, ) def reauthenticate( @@ -215,7 +215,7 @@ def with_streaming_response(self) -> AsyncSessionsWithStreamingResponse: """ return AsyncSessionsWithStreamingResponse(self) - async def new( + async def connect( self, *, customer_id: str, @@ -235,7 +235,7 @@ async def new( ] ], customer_email: Optional[str] | Omit = omit, - integration: Optional[session_new_params.Integration] | Omit = omit, + integration: Optional[session_connect_params.Integration] | Omit = omit, manual: Optional[bool] | Omit = omit, minutes_to_expire: Optional[float] | Omit = omit, redirect_uri: Optional[str] | Omit = omit, @@ -246,7 +246,7 @@ async def new( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SessionNewResponse: + ) -> SessionConnectResponse: """ Create a new connect session for an employer @@ -292,12 +292,12 @@ async def new( "redirect_uri": redirect_uri, "sandbox": sandbox, }, - session_new_params.SessionNewParams, + session_connect_params.SessionConnectParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=SessionNewResponse, + cast_to=SessionConnectResponse, ) async def reauthenticate( @@ -373,8 +373,8 @@ class SessionsWithRawResponse: def __init__(self, sessions: Sessions) -> None: self._sessions = sessions - self.new = _legacy_response.to_raw_response_wrapper( - sessions.new, + self.connect = _legacy_response.to_raw_response_wrapper( + sessions.connect, ) self.reauthenticate = _legacy_response.to_raw_response_wrapper( sessions.reauthenticate, @@ -385,8 +385,8 @@ class AsyncSessionsWithRawResponse: def __init__(self, sessions: AsyncSessions) -> None: self._sessions = sessions - self.new = _legacy_response.async_to_raw_response_wrapper( - sessions.new, + self.connect = _legacy_response.async_to_raw_response_wrapper( + sessions.connect, ) self.reauthenticate = _legacy_response.async_to_raw_response_wrapper( sessions.reauthenticate, @@ -397,8 +397,8 @@ class SessionsWithStreamingResponse: def __init__(self, sessions: Sessions) -> None: self._sessions = sessions - self.new = to_streamed_response_wrapper( - sessions.new, + self.connect = to_streamed_response_wrapper( + sessions.connect, ) self.reauthenticate = to_streamed_response_wrapper( sessions.reauthenticate, @@ -409,8 +409,8 @@ class AsyncSessionsWithStreamingResponse: def __init__(self, sessions: AsyncSessions) -> None: self._sessions = sessions - self.new = async_to_streamed_response_wrapper( - sessions.new, + self.connect = async_to_streamed_response_wrapper( + sessions.connect, ) self.reauthenticate = async_to_streamed_response_wrapper( sessions.reauthenticate, diff --git a/src/finch/resources/request_forwarding.py b/src/finch/resources/request_forwarding.py index 62e2a25e..dacb93fd 100644 --- a/src/finch/resources/request_forwarding.py +++ b/src/finch/resources/request_forwarding.py @@ -45,8 +45,8 @@ def forward( method: str, route: str, data: Optional[str] | Omit = omit, - headers: Optional[Dict[str, Optional[object]]] | Omit = omit, params: Optional[Dict[str, Optional[object]]] | Omit = omit, + request_headers: Optional[Dict[str, Optional[object]]] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -72,13 +72,13 @@ def forward( data: The body for the forwarded request. This value must be specified as either a string or a valid JSON object. - headers: The HTTP headers to include on the forwarded request. This value must be - specified as an object of key-value pairs. Example: - `{"Content-Type": "application/xml", "X-API-Version": "v1" }` - params: The query parameters for the forwarded request. This value must be specified as a valid JSON object rather than a query string. + request_headers: The HTTP headers to include on the forwarded request. This value must be + specified as an object of key-value pairs. Example: + `{"Content-Type": "application/xml", "X-API-Version": "v1" }` + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -94,8 +94,8 @@ def forward( "method": method, "route": route, "data": data, - "headers": headers, "params": params, + "request_headers": request_headers, }, request_forwarding_forward_params.RequestForwardingForwardParams, ), @@ -132,8 +132,8 @@ async def forward( method: str, route: str, data: Optional[str] | Omit = omit, - headers: Optional[Dict[str, Optional[object]]] | Omit = omit, params: Optional[Dict[str, Optional[object]]] | Omit = omit, + request_headers: Optional[Dict[str, Optional[object]]] | Omit = omit, # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. # The extra values given here take precedence over values defined on the client or passed to this method. extra_headers: Headers | None = None, @@ -159,13 +159,13 @@ async def forward( data: The body for the forwarded request. This value must be specified as either a string or a valid JSON object. - headers: The HTTP headers to include on the forwarded request. This value must be - specified as an object of key-value pairs. Example: - `{"Content-Type": "application/xml", "X-API-Version": "v1" }` - params: The query parameters for the forwarded request. This value must be specified as a valid JSON object rather than a query string. + request_headers: The HTTP headers to include on the forwarded request. This value must be + specified as an object of key-value pairs. Example: + `{"Content-Type": "application/xml", "X-API-Version": "v1" }` + extra_headers: Send extra headers extra_query: Add additional query parameters to the request @@ -181,8 +181,8 @@ async def forward( "method": method, "route": route, "data": data, - "headers": headers, "params": params, + "request_headers": request_headers, }, request_forwarding_forward_params.RequestForwardingForwardParams, ), diff --git a/src/finch/types/connect/__init__.py b/src/finch/types/connect/__init__.py index fe6954ab..ef140341 100644 --- a/src/finch/types/connect/__init__.py +++ b/src/finch/types/connect/__init__.py @@ -2,7 +2,7 @@ from __future__ import annotations -from .session_new_params import SessionNewParams as SessionNewParams -from .session_new_response import SessionNewResponse as SessionNewResponse +from .session_connect_params import SessionConnectParams as SessionConnectParams +from .session_connect_response import SessionConnectResponse as SessionConnectResponse from .session_reauthenticate_params import SessionReauthenticateParams as SessionReauthenticateParams from .session_reauthenticate_response import SessionReauthenticateResponse as SessionReauthenticateResponse diff --git a/src/finch/types/connect/session_new_params.py b/src/finch/types/connect/session_connect_params.py similarity index 94% rename from src/finch/types/connect/session_new_params.py rename to src/finch/types/connect/session_connect_params.py index b78da76a..fa1d17a6 100644 --- a/src/finch/types/connect/session_new_params.py +++ b/src/finch/types/connect/session_connect_params.py @@ -5,10 +5,10 @@ from typing import List, Optional from typing_extensions import Literal, Required, TypedDict -__all__ = ["SessionNewParams", "Integration"] +__all__ = ["SessionConnectParams", "Integration"] -class SessionNewParams(TypedDict, total=False): +class SessionConnectParams(TypedDict, total=False): customer_id: Required[str] """Unique identifier for the customer""" diff --git a/src/finch/types/connect/session_new_response.py b/src/finch/types/connect/session_connect_response.py similarity index 79% rename from src/finch/types/connect/session_new_response.py rename to src/finch/types/connect/session_connect_response.py index 6789fe28..cbe65471 100644 --- a/src/finch/types/connect/session_new_response.py +++ b/src/finch/types/connect/session_connect_response.py @@ -2,10 +2,10 @@ from ..._models import BaseModel -__all__ = ["SessionNewResponse"] +__all__ = ["SessionConnectResponse"] -class SessionNewResponse(BaseModel): +class SessionConnectResponse(BaseModel): connect_url: str """The Connect URL to redirect the user to for authentication""" diff --git a/src/finch/types/request_forwarding_forward_params.py b/src/finch/types/request_forwarding_forward_params.py index a7d9f205..9fff24b5 100644 --- a/src/finch/types/request_forwarding_forward_params.py +++ b/src/finch/types/request_forwarding_forward_params.py @@ -28,15 +28,15 @@ class RequestForwardingForwardParams(TypedDict, total=False): This value must be specified as either a string or a valid JSON object. """ - headers: Optional[Dict[str, Optional[object]]] - """The HTTP headers to include on the forwarded request. - - This value must be specified as an object of key-value pairs. Example: - `{"Content-Type": "application/xml", "X-API-Version": "v1" }` - """ - params: Optional[Dict[str, Optional[object]]] """The query parameters for the forwarded request. This value must be specified as a valid JSON object rather than a query string. """ + + request_headers: Optional[Dict[str, Optional[object]]] + """The HTTP headers to include on the forwarded request. + + This value must be specified as an object of key-value pairs. Example: + `{"Content-Type": "application/xml", "X-API-Version": "v1" }` + """ diff --git a/tests/api_resources/connect/test_sessions.py b/tests/api_resources/connect/test_sessions.py index a6ece5bc..11822245 100644 --- a/tests/api_resources/connect/test_sessions.py +++ b/tests/api_resources/connect/test_sessions.py @@ -10,7 +10,7 @@ from finch import Finch, AsyncFinch from tests.utils import assert_matches_type from finch.types.connect import ( - SessionNewResponse, + SessionConnectResponse, SessionReauthenticateResponse, ) @@ -22,18 +22,18 @@ class TestSessions: @pytest.mark.skip(reason="prism tests are broken") @parametrize - def test_method_new(self, client: Finch) -> None: - session = client.connect.sessions.new( + def test_method_connect(self, client: Finch) -> None: + session = client.connect.sessions.connect( customer_id="x", customer_name="x", products=["benefits"], ) - assert_matches_type(SessionNewResponse, session, path=["response"]) + assert_matches_type(SessionConnectResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - def test_method_new_with_all_params(self, client: Finch) -> None: - session = client.connect.sessions.new( + def test_method_connect_with_all_params(self, client: Finch) -> None: + session = client.connect.sessions.connect( customer_id="x", customer_name="x", products=["benefits"], @@ -47,12 +47,12 @@ def test_method_new_with_all_params(self, client: Finch) -> None: redirect_uri="redirect_uri", sandbox="finch", ) - assert_matches_type(SessionNewResponse, session, path=["response"]) + assert_matches_type(SessionConnectResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - def test_raw_response_new(self, client: Finch) -> None: - response = client.connect.sessions.with_raw_response.new( + def test_raw_response_connect(self, client: Finch) -> None: + response = client.connect.sessions.with_raw_response.connect( customer_id="x", customer_name="x", products=["benefits"], @@ -61,12 +61,12 @@ def test_raw_response_new(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" session = response.parse() - assert_matches_type(SessionNewResponse, session, path=["response"]) + assert_matches_type(SessionConnectResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - def test_streaming_response_new(self, client: Finch) -> None: - with client.connect.sessions.with_streaming_response.new( + def test_streaming_response_connect(self, client: Finch) -> None: + with client.connect.sessions.with_streaming_response.connect( customer_id="x", customer_name="x", products=["benefits"], @@ -75,7 +75,7 @@ def test_streaming_response_new(self, client: Finch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" session = response.parse() - assert_matches_type(SessionNewResponse, session, path=["response"]) + assert_matches_type(SessionConnectResponse, session, path=["response"]) assert cast(Any, response.is_closed) is True @@ -132,18 +132,18 @@ class TestAsyncSessions: @pytest.mark.skip(reason="prism tests are broken") @parametrize - async def test_method_new(self, async_client: AsyncFinch) -> None: - session = await async_client.connect.sessions.new( + async def test_method_connect(self, async_client: AsyncFinch) -> None: + session = await async_client.connect.sessions.connect( customer_id="x", customer_name="x", products=["benefits"], ) - assert_matches_type(SessionNewResponse, session, path=["response"]) + assert_matches_type(SessionConnectResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - async def test_method_new_with_all_params(self, async_client: AsyncFinch) -> None: - session = await async_client.connect.sessions.new( + async def test_method_connect_with_all_params(self, async_client: AsyncFinch) -> None: + session = await async_client.connect.sessions.connect( customer_id="x", customer_name="x", products=["benefits"], @@ -157,12 +157,12 @@ async def test_method_new_with_all_params(self, async_client: AsyncFinch) -> Non redirect_uri="redirect_uri", sandbox="finch", ) - assert_matches_type(SessionNewResponse, session, path=["response"]) + assert_matches_type(SessionConnectResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - async def test_raw_response_new(self, async_client: AsyncFinch) -> None: - response = await async_client.connect.sessions.with_raw_response.new( + async def test_raw_response_connect(self, async_client: AsyncFinch) -> None: + response = await async_client.connect.sessions.with_raw_response.connect( customer_id="x", customer_name="x", products=["benefits"], @@ -171,12 +171,12 @@ async def test_raw_response_new(self, async_client: AsyncFinch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" session = response.parse() - assert_matches_type(SessionNewResponse, session, path=["response"]) + assert_matches_type(SessionConnectResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - async def test_streaming_response_new(self, async_client: AsyncFinch) -> None: - async with async_client.connect.sessions.with_streaming_response.new( + async def test_streaming_response_connect(self, async_client: AsyncFinch) -> None: + async with async_client.connect.sessions.with_streaming_response.connect( customer_id="x", customer_name="x", products=["benefits"], @@ -185,7 +185,7 @@ async def test_streaming_response_new(self, async_client: AsyncFinch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" session = await response.parse() - assert_matches_type(SessionNewResponse, session, path=["response"]) + assert_matches_type(SessionConnectResponse, session, path=["response"]) assert cast(Any, response.is_closed) is True diff --git a/tests/api_resources/test_request_forwarding.py b/tests/api_resources/test_request_forwarding.py index 5615e4d2..5bd28a5f 100644 --- a/tests/api_resources/test_request_forwarding.py +++ b/tests/api_resources/test_request_forwarding.py @@ -31,8 +31,8 @@ def test_method_forward_with_all_params(self, client: Finch) -> None: method="method", route="route", data="data", - headers={"foo": "bar"}, params={"foo": "bar"}, + request_headers={"foo": "bar"}, ) assert_matches_type(RequestForwardingForwardResponse, request_forwarding, path=["response"]) @@ -82,8 +82,8 @@ async def test_method_forward_with_all_params(self, async_client: AsyncFinch) -> method="method", route="route", data="data", - headers={"foo": "bar"}, params={"foo": "bar"}, + request_headers={"foo": "bar"}, ) assert_matches_type(RequestForwardingForwardResponse, request_forwarding, path=["response"]) From a00107bb227b9dfa7daa3858fb06063d5b053e68 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 20:22:34 +0000 Subject: [PATCH 2/8] feat(api): manual updates --- .stats.yml | 2 +- api.md | 4 +- src/finch/resources/connect/sessions.py | 40 +++++++-------- src/finch/types/connect/__init__.py | 4 +- ...onnect_params.py => session_new_params.py} | 4 +- ...ct_response.py => session_new_response.py} | 4 +- tests/api_resources/connect/test_sessions.py | 50 +++++++++---------- 7 files changed, 54 insertions(+), 54 deletions(-) rename src/finch/types/connect/{session_connect_params.py => session_new_params.py} (94%) rename src/finch/types/connect/{session_connect_response.py => session_new_response.py} (79%) diff --git a/.stats.yml b/.stats.yml index f316e062..40836a3f 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-640ec74bfc2f335f7277863ee0cbd0af98bb6018cb1ec2f116ce4145148f4477.yml openapi_spec_hash: 315e7859c3f77311261fb824b74a8247 -config_hash: f921f92cc97449dcc1334a594b435c73 +config_hash: 0892e2e0eeb0343a022afa62e9080dd1 diff --git a/api.md b/api.md index 62145265..54860760 100644 --- a/api.md +++ b/api.md @@ -430,10 +430,10 @@ Methods: Types: ```python -from finch.types.connect import SessionConnectResponse, SessionReauthenticateResponse +from finch.types.connect import SessionNewResponse, SessionReauthenticateResponse ``` Methods: -- client.connect.sessions.connect(\*\*params) -> SessionConnectResponse +- client.connect.sessions.new(\*\*params) -> SessionNewResponse - client.connect.sessions.reauthenticate(\*\*params) -> SessionReauthenticateResponse diff --git a/src/finch/resources/connect/sessions.py b/src/finch/resources/connect/sessions.py index 75c09e79..f402a565 100644 --- a/src/finch/resources/connect/sessions.py +++ b/src/finch/resources/connect/sessions.py @@ -14,8 +14,8 @@ from ..._resource import SyncAPIResource, AsyncAPIResource from ..._response import to_streamed_response_wrapper, async_to_streamed_response_wrapper from ..._base_client import make_request_options -from ...types.connect import session_connect_params, session_reauthenticate_params -from ...types.connect.session_connect_response import SessionConnectResponse +from ...types.connect import session_new_params, session_reauthenticate_params +from ...types.connect.session_new_response import SessionNewResponse from ...types.connect.session_reauthenticate_response import SessionReauthenticateResponse __all__ = ["Sessions", "AsyncSessions"] @@ -41,7 +41,7 @@ def with_streaming_response(self) -> SessionsWithStreamingResponse: """ return SessionsWithStreamingResponse(self) - def connect( + def new( self, *, customer_id: str, @@ -61,7 +61,7 @@ def connect( ] ], customer_email: Optional[str] | Omit = omit, - integration: Optional[session_connect_params.Integration] | Omit = omit, + integration: Optional[session_new_params.Integration] | Omit = omit, manual: Optional[bool] | Omit = omit, minutes_to_expire: Optional[float] | Omit = omit, redirect_uri: Optional[str] | Omit = omit, @@ -72,7 +72,7 @@ def connect( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SessionConnectResponse: + ) -> SessionNewResponse: """ Create a new connect session for an employer @@ -118,12 +118,12 @@ def connect( "redirect_uri": redirect_uri, "sandbox": sandbox, }, - session_connect_params.SessionConnectParams, + session_new_params.SessionNewParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=SessionConnectResponse, + cast_to=SessionNewResponse, ) def reauthenticate( @@ -215,7 +215,7 @@ def with_streaming_response(self) -> AsyncSessionsWithStreamingResponse: """ return AsyncSessionsWithStreamingResponse(self) - async def connect( + async def new( self, *, customer_id: str, @@ -235,7 +235,7 @@ async def connect( ] ], customer_email: Optional[str] | Omit = omit, - integration: Optional[session_connect_params.Integration] | Omit = omit, + integration: Optional[session_new_params.Integration] | Omit = omit, manual: Optional[bool] | Omit = omit, minutes_to_expire: Optional[float] | Omit = omit, redirect_uri: Optional[str] | Omit = omit, @@ -246,7 +246,7 @@ async def connect( extra_query: Query | None = None, extra_body: Body | None = None, timeout: float | httpx.Timeout | None | NotGiven = not_given, - ) -> SessionConnectResponse: + ) -> SessionNewResponse: """ Create a new connect session for an employer @@ -292,12 +292,12 @@ async def connect( "redirect_uri": redirect_uri, "sandbox": sandbox, }, - session_connect_params.SessionConnectParams, + session_new_params.SessionNewParams, ), options=make_request_options( extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout ), - cast_to=SessionConnectResponse, + cast_to=SessionNewResponse, ) async def reauthenticate( @@ -373,8 +373,8 @@ class SessionsWithRawResponse: def __init__(self, sessions: Sessions) -> None: self._sessions = sessions - self.connect = _legacy_response.to_raw_response_wrapper( - sessions.connect, + self.new = _legacy_response.to_raw_response_wrapper( + sessions.new, ) self.reauthenticate = _legacy_response.to_raw_response_wrapper( sessions.reauthenticate, @@ -385,8 +385,8 @@ class AsyncSessionsWithRawResponse: def __init__(self, sessions: AsyncSessions) -> None: self._sessions = sessions - self.connect = _legacy_response.async_to_raw_response_wrapper( - sessions.connect, + self.new = _legacy_response.async_to_raw_response_wrapper( + sessions.new, ) self.reauthenticate = _legacy_response.async_to_raw_response_wrapper( sessions.reauthenticate, @@ -397,8 +397,8 @@ class SessionsWithStreamingResponse: def __init__(self, sessions: Sessions) -> None: self._sessions = sessions - self.connect = to_streamed_response_wrapper( - sessions.connect, + self.new = to_streamed_response_wrapper( + sessions.new, ) self.reauthenticate = to_streamed_response_wrapper( sessions.reauthenticate, @@ -409,8 +409,8 @@ class AsyncSessionsWithStreamingResponse: def __init__(self, sessions: AsyncSessions) -> None: self._sessions = sessions - self.connect = async_to_streamed_response_wrapper( - sessions.connect, + self.new = async_to_streamed_response_wrapper( + sessions.new, ) self.reauthenticate = async_to_streamed_response_wrapper( sessions.reauthenticate, diff --git a/src/finch/types/connect/__init__.py b/src/finch/types/connect/__init__.py index ef140341..fe6954ab 100644 --- a/src/finch/types/connect/__init__.py +++ b/src/finch/types/connect/__init__.py @@ -2,7 +2,7 @@ from __future__ import annotations -from .session_connect_params import SessionConnectParams as SessionConnectParams -from .session_connect_response import SessionConnectResponse as SessionConnectResponse +from .session_new_params import SessionNewParams as SessionNewParams +from .session_new_response import SessionNewResponse as SessionNewResponse from .session_reauthenticate_params import SessionReauthenticateParams as SessionReauthenticateParams from .session_reauthenticate_response import SessionReauthenticateResponse as SessionReauthenticateResponse diff --git a/src/finch/types/connect/session_connect_params.py b/src/finch/types/connect/session_new_params.py similarity index 94% rename from src/finch/types/connect/session_connect_params.py rename to src/finch/types/connect/session_new_params.py index fa1d17a6..b78da76a 100644 --- a/src/finch/types/connect/session_connect_params.py +++ b/src/finch/types/connect/session_new_params.py @@ -5,10 +5,10 @@ from typing import List, Optional from typing_extensions import Literal, Required, TypedDict -__all__ = ["SessionConnectParams", "Integration"] +__all__ = ["SessionNewParams", "Integration"] -class SessionConnectParams(TypedDict, total=False): +class SessionNewParams(TypedDict, total=False): customer_id: Required[str] """Unique identifier for the customer""" diff --git a/src/finch/types/connect/session_connect_response.py b/src/finch/types/connect/session_new_response.py similarity index 79% rename from src/finch/types/connect/session_connect_response.py rename to src/finch/types/connect/session_new_response.py index cbe65471..6789fe28 100644 --- a/src/finch/types/connect/session_connect_response.py +++ b/src/finch/types/connect/session_new_response.py @@ -2,10 +2,10 @@ from ..._models import BaseModel -__all__ = ["SessionConnectResponse"] +__all__ = ["SessionNewResponse"] -class SessionConnectResponse(BaseModel): +class SessionNewResponse(BaseModel): connect_url: str """The Connect URL to redirect the user to for authentication""" diff --git a/tests/api_resources/connect/test_sessions.py b/tests/api_resources/connect/test_sessions.py index 11822245..a6ece5bc 100644 --- a/tests/api_resources/connect/test_sessions.py +++ b/tests/api_resources/connect/test_sessions.py @@ -10,7 +10,7 @@ from finch import Finch, AsyncFinch from tests.utils import assert_matches_type from finch.types.connect import ( - SessionConnectResponse, + SessionNewResponse, SessionReauthenticateResponse, ) @@ -22,18 +22,18 @@ class TestSessions: @pytest.mark.skip(reason="prism tests are broken") @parametrize - def test_method_connect(self, client: Finch) -> None: - session = client.connect.sessions.connect( + def test_method_new(self, client: Finch) -> None: + session = client.connect.sessions.new( customer_id="x", customer_name="x", products=["benefits"], ) - assert_matches_type(SessionConnectResponse, session, path=["response"]) + assert_matches_type(SessionNewResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - def test_method_connect_with_all_params(self, client: Finch) -> None: - session = client.connect.sessions.connect( + def test_method_new_with_all_params(self, client: Finch) -> None: + session = client.connect.sessions.new( customer_id="x", customer_name="x", products=["benefits"], @@ -47,12 +47,12 @@ def test_method_connect_with_all_params(self, client: Finch) -> None: redirect_uri="redirect_uri", sandbox="finch", ) - assert_matches_type(SessionConnectResponse, session, path=["response"]) + assert_matches_type(SessionNewResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - def test_raw_response_connect(self, client: Finch) -> None: - response = client.connect.sessions.with_raw_response.connect( + def test_raw_response_new(self, client: Finch) -> None: + response = client.connect.sessions.with_raw_response.new( customer_id="x", customer_name="x", products=["benefits"], @@ -61,12 +61,12 @@ def test_raw_response_connect(self, client: Finch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" session = response.parse() - assert_matches_type(SessionConnectResponse, session, path=["response"]) + assert_matches_type(SessionNewResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - def test_streaming_response_connect(self, client: Finch) -> None: - with client.connect.sessions.with_streaming_response.connect( + def test_streaming_response_new(self, client: Finch) -> None: + with client.connect.sessions.with_streaming_response.new( customer_id="x", customer_name="x", products=["benefits"], @@ -75,7 +75,7 @@ def test_streaming_response_connect(self, client: Finch) -> None: assert response.http_request.headers.get("X-Stainless-Lang") == "python" session = response.parse() - assert_matches_type(SessionConnectResponse, session, path=["response"]) + assert_matches_type(SessionNewResponse, session, path=["response"]) assert cast(Any, response.is_closed) is True @@ -132,18 +132,18 @@ class TestAsyncSessions: @pytest.mark.skip(reason="prism tests are broken") @parametrize - async def test_method_connect(self, async_client: AsyncFinch) -> None: - session = await async_client.connect.sessions.connect( + async def test_method_new(self, async_client: AsyncFinch) -> None: + session = await async_client.connect.sessions.new( customer_id="x", customer_name="x", products=["benefits"], ) - assert_matches_type(SessionConnectResponse, session, path=["response"]) + assert_matches_type(SessionNewResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - async def test_method_connect_with_all_params(self, async_client: AsyncFinch) -> None: - session = await async_client.connect.sessions.connect( + async def test_method_new_with_all_params(self, async_client: AsyncFinch) -> None: + session = await async_client.connect.sessions.new( customer_id="x", customer_name="x", products=["benefits"], @@ -157,12 +157,12 @@ async def test_method_connect_with_all_params(self, async_client: AsyncFinch) -> redirect_uri="redirect_uri", sandbox="finch", ) - assert_matches_type(SessionConnectResponse, session, path=["response"]) + assert_matches_type(SessionNewResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - async def test_raw_response_connect(self, async_client: AsyncFinch) -> None: - response = await async_client.connect.sessions.with_raw_response.connect( + async def test_raw_response_new(self, async_client: AsyncFinch) -> None: + response = await async_client.connect.sessions.with_raw_response.new( customer_id="x", customer_name="x", products=["benefits"], @@ -171,12 +171,12 @@ async def test_raw_response_connect(self, async_client: AsyncFinch) -> None: assert response.is_closed is True assert response.http_request.headers.get("X-Stainless-Lang") == "python" session = response.parse() - assert_matches_type(SessionConnectResponse, session, path=["response"]) + assert_matches_type(SessionNewResponse, session, path=["response"]) @pytest.mark.skip(reason="prism tests are broken") @parametrize - async def test_streaming_response_connect(self, async_client: AsyncFinch) -> None: - async with async_client.connect.sessions.with_streaming_response.connect( + async def test_streaming_response_new(self, async_client: AsyncFinch) -> None: + async with async_client.connect.sessions.with_streaming_response.new( customer_id="x", customer_name="x", products=["benefits"], @@ -185,7 +185,7 @@ async def test_streaming_response_connect(self, async_client: AsyncFinch) -> Non assert response.http_request.headers.get("X-Stainless-Lang") == "python" session = await response.parse() - assert_matches_type(SessionConnectResponse, session, path=["response"]) + assert_matches_type(SessionNewResponse, session, path=["response"]) assert cast(Any, response.is_closed) is True From f7306871020ec264ad289455f31b942d0251809e Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 25 Nov 2025 17:18:39 +0000 Subject: [PATCH 3/8] feat(api): api update --- .stats.yml | 4 ++-- src/finch/types/sandbox/payment_create_params.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 40836a3f..c27288ed 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-640ec74bfc2f335f7277863ee0cbd0af98bb6018cb1ec2f116ce4145148f4477.yml -openapi_spec_hash: 315e7859c3f77311261fb824b74a8247 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-d9cb320c8313cd122b4851d726c6cea39a14a5317880c6d063671ad3f412e632.yml +openapi_spec_hash: 58c2cf578f0736b8c5df957f6a61190b config_hash: 0892e2e0eeb0343a022afa62e9080dd1 diff --git a/src/finch/types/sandbox/payment_create_params.py b/src/finch/types/sandbox/payment_create_params.py index 1f74fb81..f3fbcd67 100644 --- a/src/finch/types/sandbox/payment_create_params.py +++ b/src/finch/types/sandbox/payment_create_params.py @@ -55,6 +55,7 @@ class PayStatementEmployeeDeduction(TypedDict, total=False): amount: int name: str + """The deduction name. Required when type is specified.""" pre_tax: bool @@ -85,6 +86,7 @@ class PayStatementEmployerContribution(TypedDict, total=False): amount: int name: str + """The contribution name. Required when type is specified.""" type: Literal[ "457", From 3b90188ae6b7c3029cdd649d96ce4a07418584e2 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 27 Nov 2025 16:52:48 +0000 Subject: [PATCH 4/8] fix: ensure streams are always closed --- src/finch/_streaming.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/finch/_streaming.py b/src/finch/_streaming.py index 82877ebb..facc5e66 100644 --- a/src/finch/_streaming.py +++ b/src/finch/_streaming.py @@ -54,11 +54,12 @@ def __stream__(self) -> Iterator[_T]: process_data = self._client._process_response_data iterator = self._iter_events() - for sse in iterator: - yield process_data(data=sse.json(), cast_to=cast_to, response=response) - - # As we might not fully consume the response stream, we need to close it explicitly - response.close() + try: + for sse in iterator: + yield process_data(data=sse.json(), cast_to=cast_to, response=response) + finally: + # Ensure the response is closed even if the consumer doesn't read all data + response.close() def __enter__(self) -> Self: return self @@ -117,11 +118,12 @@ async def __stream__(self) -> AsyncIterator[_T]: process_data = self._client._process_response_data iterator = self._iter_events() - async for sse in iterator: - yield process_data(data=sse.json(), cast_to=cast_to, response=response) - - # As we might not fully consume the response stream, we need to close it explicitly - await response.aclose() + try: + async for sse in iterator: + yield process_data(data=sse.json(), cast_to=cast_to, response=response) + finally: + # Ensure the response is closed even if the consumer doesn't read all data + await response.aclose() async def __aenter__(self) -> Self: return self From f37f836bfcafc6eca093e2158eaaf874350f52ee Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 27 Nov 2025 18:49:45 +0000 Subject: [PATCH 5/8] chore(deps): mypy 1.18.1 has a regression, pin to 1.17 --- pyproject.toml | 2 +- requirements-dev.lock | 4 +++- requirements.lock | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 812de227..3b6e2354 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,7 +46,7 @@ managed = true # version pins are in requirements-dev.lock dev-dependencies = [ "pyright==1.1.399", - "mypy", + "mypy==1.17", "respx", "pytest", "pytest-asyncio", diff --git a/requirements-dev.lock b/requirements-dev.lock index 11981681..5bc92efd 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -72,7 +72,7 @@ mdurl==0.1.2 multidict==6.4.4 # via aiohttp # via yarl -mypy==1.14.1 +mypy==1.17.0 mypy-extensions==1.0.0 # via mypy nodeenv==1.8.0 @@ -81,6 +81,8 @@ nox==2023.4.22 packaging==23.2 # via nox # via pytest +pathspec==0.12.1 + # via mypy platformdirs==3.11.0 # via virtualenv pluggy==1.5.0 diff --git a/requirements.lock b/requirements.lock index b68ef972..123cccf5 100644 --- a/requirements.lock +++ b/requirements.lock @@ -55,21 +55,21 @@ multidict==6.4.4 propcache==0.3.1 # via aiohttp # via yarl -pydantic==2.11.9 +pydantic==2.12.5 # via finch-api -pydantic-core==2.33.2 +pydantic-core==2.41.5 # via pydantic sniffio==1.3.0 # via anyio # via finch-api -typing-extensions==4.12.2 +typing-extensions==4.15.0 # via anyio # via finch-api # via multidict # via pydantic # via pydantic-core # via typing-inspection -typing-inspection==0.4.1 +typing-inspection==0.4.2 # via pydantic yarl==1.20.0 # via aiohttp From 5d992ce454b47b07b7cfd4a176adcd287e3ed069 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 1 Dec 2025 17:41:05 +0000 Subject: [PATCH 6/8] codegen metadata --- .stats.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.stats.yml b/.stats.yml index c27288ed..459fe737 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-d9cb320c8313cd122b4851d726c6cea39a14a5317880c6d063671ad3f412e632.yml +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch%2Ffinch-39e0191e43a9db93c8f35e91d10013f05352a2bedcf7ead6bac437957f6e922e.yml openapi_spec_hash: 58c2cf578f0736b8c5df957f6a61190b config_hash: 0892e2e0eeb0343a022afa62e9080dd1 From 2b0384bce698659f8349abaa89c4c72fecc83b68 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 11:10:01 +0000 Subject: [PATCH 7/8] chore: update lockfile --- pyproject.toml | 14 +++--- requirements-dev.lock | 108 +++++++++++++++++++++++------------------- requirements.lock | 31 ++++++------ 3 files changed, 83 insertions(+), 70 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 3b6e2354..e2dac044 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,14 +7,16 @@ license = "Apache-2.0" authors = [ { name = "Finch", email = "founders@tryfinch.com" }, ] + dependencies = [ - "httpx>=0.23.0, <1", - "pydantic>=1.9.0, <3", - "typing-extensions>=4.10, <5", - "anyio>=3.5.0, <5", - "distro>=1.7.0, <2", - "sniffio", + "httpx>=0.23.0, <1", + "pydantic>=1.9.0, <3", + "typing-extensions>=4.10, <5", + "anyio>=3.5.0, <5", + "distro>=1.7.0, <2", + "sniffio", ] + requires-python = ">= 3.9" classifiers = [ "Typing :: Typed", diff --git a/requirements-dev.lock b/requirements-dev.lock index 5bc92efd..96c9c174 100644 --- a/requirements-dev.lock +++ b/requirements-dev.lock @@ -12,40 +12,45 @@ -e file:. aiohappyeyeballs==2.6.1 # via aiohttp -aiohttp==3.12.8 +aiohttp==3.13.2 # via finch-api # via httpx-aiohttp -aiosignal==1.3.2 +aiosignal==1.4.0 # via aiohttp -annotated-types==0.6.0 +annotated-types==0.7.0 # via pydantic -anyio==4.4.0 +anyio==4.12.0 # via finch-api # via httpx -argcomplete==3.1.2 +argcomplete==3.6.3 # via nox async-timeout==5.0.1 # via aiohttp -attrs==25.3.0 +attrs==25.4.0 # via aiohttp -certifi==2023.7.22 + # via nox +backports-asyncio-runner==1.2.0 + # via pytest-asyncio +certifi==2025.11.12 # via httpcore # via httpx -colorlog==6.7.0 +colorlog==6.10.1 + # via nox +dependency-groups==1.3.1 # via nox -dirty-equals==0.6.0 -distlib==0.3.7 +dirty-equals==0.11 +distlib==0.4.0 # via virtualenv -distro==1.8.0 +distro==1.9.0 # via finch-api -exceptiongroup==1.2.2 +exceptiongroup==1.3.1 # via anyio # via pytest -execnet==2.1.1 +execnet==2.1.2 # via pytest-xdist -filelock==3.12.4 +filelock==3.19.1 # via virtualenv -frozenlist==1.6.2 +frozenlist==1.8.0 # via aiohttp # via aiosignal h11==0.16.0 @@ -58,82 +63,87 @@ httpx==0.28.1 # via respx httpx-aiohttp==0.1.9 # via finch-api -idna==3.4 +humanize==4.13.0 + # via nox +idna==3.11 # via anyio # via httpx # via yarl -importlib-metadata==7.0.0 -iniconfig==2.0.0 +importlib-metadata==8.7.0 +iniconfig==2.1.0 # via pytest markdown-it-py==3.0.0 # via rich mdurl==0.1.2 # via markdown-it-py -multidict==6.4.4 +multidict==6.7.0 # via aiohttp # via yarl mypy==1.17.0 -mypy-extensions==1.0.0 +mypy-extensions==1.1.0 # via mypy -nodeenv==1.8.0 +nodeenv==1.9.1 # via pyright -nox==2023.4.22 -packaging==23.2 +nox==2025.11.12 +packaging==25.0 + # via dependency-groups # via nox # via pytest pathspec==0.12.1 # via mypy -platformdirs==3.11.0 +platformdirs==4.4.0 # via virtualenv -pluggy==1.5.0 +pluggy==1.6.0 # via pytest -propcache==0.3.1 +propcache==0.4.1 # via aiohttp # via yarl -pydantic==2.11.9 +pydantic==2.12.5 # via finch-api -pydantic-core==2.33.2 +pydantic-core==2.41.5 # via pydantic -pygments==2.18.0 +pygments==2.19.2 + # via pytest # via rich pyright==1.1.399 -pytest==8.3.3 +pytest==8.4.2 # via pytest-asyncio # via pytest-xdist -pytest-asyncio==0.24.0 -pytest-xdist==3.7.0 -python-dateutil==2.8.2 +pytest-asyncio==1.2.0 +pytest-xdist==3.8.0 +python-dateutil==2.9.0.post0 # via time-machine -pytz==2023.3.post1 - # via dirty-equals respx==0.22.0 -rich==13.7.1 -ruff==0.9.4 -setuptools==68.2.2 - # via nodeenv -six==1.16.0 +rich==14.2.0 +ruff==0.14.7 +six==1.17.0 # via python-dateutil -sniffio==1.3.0 - # via anyio +sniffio==1.3.1 # via finch-api -time-machine==2.9.0 -tomli==2.0.2 +time-machine==2.19.0 +tomli==2.3.0 + # via dependency-groups # via mypy + # via nox # via pytest -typing-extensions==4.12.2 +typing-extensions==4.15.0 + # via aiosignal # via anyio + # via exceptiongroup # via finch-api # via multidict # via mypy # via pydantic # via pydantic-core # via pyright + # via pytest-asyncio # via typing-inspection -typing-inspection==0.4.1 + # via virtualenv +typing-inspection==0.4.2 # via pydantic -virtualenv==20.24.5 +virtualenv==20.35.4 # via nox -yarl==1.20.0 +yarl==1.22.0 # via aiohttp -zipp==3.17.0 +zipp==3.23.0 # via importlib-metadata diff --git a/requirements.lock b/requirements.lock index 123cccf5..dbf05384 100644 --- a/requirements.lock +++ b/requirements.lock @@ -12,28 +12,28 @@ -e file:. aiohappyeyeballs==2.6.1 # via aiohttp -aiohttp==3.12.8 +aiohttp==3.13.2 # via finch-api # via httpx-aiohttp -aiosignal==1.3.2 +aiosignal==1.4.0 # via aiohttp -annotated-types==0.6.0 +annotated-types==0.7.0 # via pydantic -anyio==4.4.0 +anyio==4.12.0 # via finch-api # via httpx async-timeout==5.0.1 # via aiohttp -attrs==25.3.0 +attrs==25.4.0 # via aiohttp -certifi==2023.7.22 +certifi==2025.11.12 # via httpcore # via httpx -distro==1.8.0 +distro==1.9.0 # via finch-api -exceptiongroup==1.2.2 +exceptiongroup==1.3.1 # via anyio -frozenlist==1.6.2 +frozenlist==1.8.0 # via aiohttp # via aiosignal h11==0.16.0 @@ -45,25 +45,26 @@ httpx==0.28.1 # via httpx-aiohttp httpx-aiohttp==0.1.9 # via finch-api -idna==3.4 +idna==3.11 # via anyio # via httpx # via yarl -multidict==6.4.4 +multidict==6.7.0 # via aiohttp # via yarl -propcache==0.3.1 +propcache==0.4.1 # via aiohttp # via yarl pydantic==2.12.5 # via finch-api pydantic-core==2.41.5 # via pydantic -sniffio==1.3.0 - # via anyio +sniffio==1.3.1 # via finch-api typing-extensions==4.15.0 + # via aiosignal # via anyio + # via exceptiongroup # via finch-api # via multidict # via pydantic @@ -71,5 +72,5 @@ typing-extensions==4.15.0 # via typing-inspection typing-inspection==0.4.2 # via pydantic -yarl==1.20.0 +yarl==1.22.0 # via aiohttp From 5194c2732e0772d0fd27353581b78591eac1f7b8 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 11:10:24 +0000 Subject: [PATCH 8/8] release: 1.42.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 21 +++++++++++++++++++++ pyproject.toml | 2 +- src/finch/_version.py | 2 +- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b34aa0b2..507912c5 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.41.2" + ".": "1.42.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index b16a3763..99c96c42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## 1.42.0 (2025-12-02) + +Full Changelog: [v1.41.2...v1.42.0](https://github.com/Finch-API/finch-api-python/compare/v1.41.2...v1.42.0) + +### Features + +* **api:** api update ([f730687](https://github.com/Finch-API/finch-api-python/commit/f7306871020ec264ad289455f31b942d0251809e)) +* **api:** manual updates ([a00107b](https://github.com/Finch-API/finch-api-python/commit/a00107bb227b9dfa7daa3858fb06063d5b053e68)) + + +### Bug Fixes + +* ensure streams are always closed ([3b90188](https://github.com/Finch-API/finch-api-python/commit/3b90188ae6b7c3029cdd649d96ce4a07418584e2)) +* **java:** Resolve name collisions ([b43172b](https://github.com/Finch-API/finch-api-python/commit/b43172be04510b5a760a1446d3b302e9487cf3ab)) + + +### Chores + +* **deps:** mypy 1.18.1 has a regression, pin to 1.17 ([f37f836](https://github.com/Finch-API/finch-api-python/commit/f37f836bfcafc6eca093e2158eaaf874350f52ee)) +* update lockfile ([2b0384b](https://github.com/Finch-API/finch-api-python/commit/2b0384bce698659f8349abaa89c4c72fecc83b68)) + ## 1.41.2 (2025-11-21) Full Changelog: [v1.41.1...v1.41.2](https://github.com/Finch-API/finch-api-python/compare/v1.41.1...v1.41.2) diff --git a/pyproject.toml b/pyproject.toml index e2dac044..e8bc00b1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "finch-api" -version = "1.41.2" +version = "1.42.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 71049362..1adaf11f 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.41.2" # x-release-please-version +__version__ = "1.42.0" # x-release-please-version