Skip to content

Commit 281741f

Browse files
committed
default to env vars for session init
1 parent 7e2dc69 commit 281741f

File tree

2 files changed

+11
-13
lines changed

2 files changed

+11
-13
lines changed

tastytrade/session.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import annotations
22

33
import json
4+
import os
45
import time
56
from contextlib import asynccontextmanager
67
from datetime import date, datetime
@@ -251,8 +252,10 @@ class Session(AsyncContextManagerMixin):
251252
252253
Prefer using with its async context manager to ensure proper cleanup.
253254
254-
:param provider_secret: OAuth secret for your provider
255-
:param refresh_token: refresh token for the user
255+
:param provider_secret:
256+
OAuth secret for your provider; defaults to the $TT_SECRET environment variable
257+
:param refresh_token:
258+
refresh token for the user; defaults to the $TT_REFRESH environment variable
256259
:param is_test:
257260
whether to use the test API endpoints, default False
258261
:param proxy:
@@ -265,8 +268,8 @@ class Session(AsyncContextManagerMixin):
265268

266269
def __init__(
267270
self,
268-
provider_secret: str,
269-
refresh_token: str,
271+
provider_secret: str | None = None,
272+
refresh_token: str | None = None,
270273
is_test: bool = False,
271274
proxy: str | None = None,
272275
**client_kwargs: Any,
@@ -276,9 +279,9 @@ def __init__(
276279
#: Proxy URL to use for requests and web sockets
277280
self.proxy = proxy
278281
#: OAuth secret for your provider
279-
self.provider_secret = provider_secret
282+
self.provider_secret = provider_secret or os.environ["TT_SECRET"]
280283
#: Refresh token for the user
281-
self.refresh_token = refresh_token
284+
self.refresh_token = refresh_token or os.environ["TT_REFRESH"]
282285
# The headers to use for API requests
283286
headers = {"Accept": "application/json", "Content-Type": "application/json"}
284287
if not is_test: # not accepted in sandbox

tests/test_session.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import json
2-
import os
32

43
import pytest
54
from proxy import TestCase
@@ -9,16 +8,11 @@
98
pytestmark = pytest.mark.anyio
109

1110

12-
@pytest.fixture(scope="module")
13-
def session_with_kwargs(anyio_backend: str) -> Session:
14-
return Session(os.environ["TT_SECRET"], os.environ["TT_REFRESH"], timeout=10.0)
15-
16-
1711
async def test_get_customer(session: Session):
1812
await session.get_customer()
1913

2014

21-
def test_serialize_deserialize(session: Session, session_with_kwargs: Session):
15+
def test_serialize_deserialize(session: Session):
2216
# No client_kwargs
2317
data = session.serialize()
2418
obj = Session.deserialize(data)
@@ -30,6 +24,7 @@ def test_serialize_deserialize(session: Session, session_with_kwargs: Session):
3024
legacy_obj = Session.deserialize(json.dumps(legacy_payload))
3125
assert legacy_obj.client_kwargs == {}
3226
# With timeout client_kwargs
27+
session_with_kwargs = Session(timeout=10.0)
3328
data_with_kwargs = session_with_kwargs.serialize()
3429
obj_with_kwargs = Session.deserialize(data_with_kwargs)
3530
assert set(obj_with_kwargs.__dict__.keys()) == set(

0 commit comments

Comments
 (0)