From aee16d5e51e8c0f9395d33e6449cf289290f9088 Mon Sep 17 00:00:00 2001 From: Johanan Lai Date: Thu, 9 Apr 2026 13:10:01 -0700 Subject: [PATCH] Support passing external session to sync client --- stytch/b2b/client.py | 3 +++ stytch/consumer/client.py | 3 +++ stytch/core/client_base.py | 4 +++- stytch/core/http/test/test_client.py | 15 ++++++++++++++- stytch/version.py | 2 +- 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/stytch/b2b/client.py b/stytch/b2b/client.py index 4e62fc58..d58e12fb 100644 --- a/stytch/b2b/client.py +++ b/stytch/b2b/client.py @@ -9,6 +9,7 @@ import aiohttp import jwt +import requests from stytch.b2b.api.discovery import Discovery from stytch.b2b.api.idp import IDP @@ -47,6 +48,7 @@ def __init__( environment: Optional[str] = None, suppress_warnings: bool = False, async_session: Optional[aiohttp.ClientSession] = None, + sync_session: Optional[requests.Session] = None, fraud_environment: Optional[str] = None, custom_base_url: Optional[str] = None, ): @@ -56,6 +58,7 @@ def __init__( environment=environment, suppress_warnings=suppress_warnings, async_session=async_session, + sync_session=sync_session, fraud_environment=fraud_environment, custom_base_url=custom_base_url, ) diff --git a/stytch/consumer/client.py b/stytch/consumer/client.py index fec51098..66fca389 100644 --- a/stytch/consumer/client.py +++ b/stytch/consumer/client.py @@ -9,6 +9,7 @@ import aiohttp import jwt +import requests from stytch.consumer.api.connected_apps import ConnectedApp from stytch.consumer.api.crypto_wallets import CryptoWallets @@ -45,6 +46,7 @@ def __init__( environment: Optional[str] = None, suppress_warnings: bool = False, async_session: Optional[aiohttp.ClientSession] = None, + sync_session: Optional[requests.Session] = None, fraud_environment: Optional[str] = None, custom_base_url: Optional[str] = None, ): @@ -54,6 +56,7 @@ def __init__( environment=environment, suppress_warnings=suppress_warnings, async_session=async_session, + sync_session=sync_session, fraud_environment=fraud_environment, custom_base_url=custom_base_url, ) diff --git a/stytch/core/client_base.py b/stytch/core/client_base.py index 8aa78fa3..ba75f2df 100644 --- a/stytch/core/client_base.py +++ b/stytch/core/client_base.py @@ -4,6 +4,7 @@ import aiohttp import jwt +import requests from stytch.core.api_base import ApiBase from stytch.core.http.client import AsyncClient, SyncClient @@ -17,6 +18,7 @@ def __init__( environment: Optional[str] = None, suppress_warnings: bool = False, async_session: Optional[aiohttp.ClientSession] = None, + sync_session: Optional[requests.Session] = None, fraud_environment: Optional[str] = None, custom_base_url: Optional[str] = None, ): @@ -29,7 +31,7 @@ def __init__( fraud_base_url = fraud_environment self.api_base = ApiBase(base_url) self.fraud_api_base = ApiBase(fraud_base_url) - self.sync_client = SyncClient(project_id, secret) + self.sync_client = SyncClient(project_id, secret, session=sync_session) self.async_client = AsyncClient(project_id, secret, session=async_session) self.jwks_client = self.get_jwks_client(project_id) diff --git a/stytch/core/http/test/test_client.py b/stytch/core/http/test/test_client.py index 7df28950..739f1b67 100644 --- a/stytch/core/http/test/test_client.py +++ b/stytch/core/http/test/test_client.py @@ -5,7 +5,9 @@ import asyncio import unittest -from stytch.core.http.client import AsyncClient +import requests + +from stytch.core.http.client import AsyncClient, SyncClient class NoEventLoopPolicy(asyncio.DefaultEventLoopPolicy): @@ -13,6 +15,17 @@ def get_event_loop(self): raise RuntimeError("No event loop") +class TestSyncClient(unittest.TestCase): + def test_external_session_is_used(self): + session = requests.Session() + client = SyncClient("project_id", "secret", session=session) + self.assertIs(client._session, session) + + def test_no_external_session_creates_one(self): + client = SyncClient("project_id", "secret") + self.assertIsInstance(client._session, requests.Session) + + class TestAsyncClient(unittest.TestCase): def test_session_without_event_loop(self): asyncio.set_event_loop_policy(NoEventLoopPolicy()) diff --git a/stytch/version.py b/stytch/version.py index f79d47d4..15fd90e4 100644 --- a/stytch/version.py +++ b/stytch/version.py @@ -1 +1 @@ -__version__ = "14.3.0" +__version__ = "14.4.0"