Skip to content

Commit df4fec1

Browse files
committed
fix(python/sdk): Fix correct settings (#7098)
GitOrigin-RevId: b15aa8f053b040d42de832e9e2710e6697f12139
1 parent 5439bb7 commit df4fec1

File tree

3 files changed

+92
-8
lines changed

3 files changed

+92
-8
lines changed

assemblyai/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "0.35.0"
1+
__version__ = "0.35.1"

assemblyai/types.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@
99

1010
try:
1111
# pydantic v2 import
12-
from pydantic import UUID4, BaseModel, Field
12+
from pydantic import UUID4, BaseModel, ConfigDict, Field
1313
from pydantic_settings import BaseSettings, SettingsConfigDict
14+
15+
pydantic_v2 = True
1416
except ImportError:
1517
# pydantic v1 import
16-
from pydantic.v1 import UUID4, BaseModel, BaseSettings, Field
17-
from pydantic.v1 import ConfigDict as SettingsConfigDict
18+
from pydantic.v1 import UUID4, BaseModel, BaseSettings, ConfigDict, Field
19+
20+
pydantic_v2 = False
1821

1922
from typing_extensions import Self
2023

@@ -80,9 +83,15 @@ class Settings(BaseSettings):
8083
base_url: str = "https://api.assemblyai.com"
8184
"The base URL for the AssemblyAI API"
8285

83-
polling_interval: float = Field(default=3.0, gte=0.1)
86+
polling_interval: float = Field(default=3.0, gt=0.0)
8487
"The default polling interval for long-running requests (e.g. polling the `Transcript`'s status)"
85-
model_config = SettingsConfigDict(env_prefix="assemblyai_")
88+
89+
if pydantic_v2:
90+
model_config = SettingsConfigDict(env_prefix="assemblyai_")
91+
else:
92+
93+
class Config:
94+
env_prefix = "assemblyai_"
8695

8796

8897
class TranscriptStatus(str, Enum):
@@ -571,7 +580,7 @@ class RawTranscriptionConfig(BaseModel):
571580
"""
572581
The speech model to use for the transcription.
573582
"""
574-
model_config = SettingsConfigDict(extra="allow")
583+
model_config = ConfigDict(extra="allow")
575584

576585

577586
class TranscriptionConfig:
@@ -1796,7 +1805,7 @@ class ListTranscriptParameters(BaseModel):
17961805

17971806
throttled_only: Optional[bool] = None
17981807
"Get only throttled transcripts, overrides the status filter"
1799-
model_config = SettingsConfigDict(use_enum_values=True)
1808+
model_config = ConfigDict(use_enum_values=True)
18001809

18011810

18021811
class PageDetails(BaseModel):

tests/unit/test_settings.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import os
2+
from importlib import reload
3+
4+
import assemblyai as aai
5+
6+
7+
def test_api_key_settings():
8+
"""
9+
Tests that `ASSEMBLYAI_API_KEY` works correctly
10+
"""
11+
tmp1 = os.environ.pop("ASSEMBLYAI_API_KEY", None)
12+
tmp2 = os.environ.pop("API_KEY", None)
13+
14+
aai.settings.api_key = None
15+
reload(aai)
16+
assert aai.settings.api_key is None
17+
18+
# this should not change the api key
19+
os.environ["API_KEY"] = "test"
20+
reload(aai)
21+
assert aai.settings.api_key is None
22+
23+
# this should change the api key
24+
os.environ["ASSEMBLYAI_API_KEY"] = "test"
25+
reload(aai)
26+
assert aai.settings.api_key == "test"
27+
28+
# reset
29+
if tmp1:
30+
os.environ["ASSEMBLYAI_API_KEY"] = tmp1
31+
else:
32+
os.environ.pop("ASSEMBLYAI_API_KEY", None)
33+
34+
if tmp2:
35+
os.environ["API_KEY"] = tmp2
36+
else:
37+
os.environ.pop("API_KEY", None)
38+
39+
reload(aai)
40+
aai.settings.api_key = "test"
41+
42+
43+
def test_base_url_settings():
44+
"""
45+
Tests that `ASSEMBLY_BASE_URL` works correctly
46+
"""
47+
tmp1 = os.environ.pop("ASSEMBLYAI_BASE_URL", None)
48+
tmp2 = os.environ.pop("BASE_URL", None)
49+
50+
aai.settings.base_url = "https://api.assemblyai.com"
51+
reload(aai)
52+
assert aai.settings.base_url == "https://api.assemblyai.com"
53+
54+
# this should not change the base url
55+
os.environ["BASE_URL"] = "https://test.com"
56+
reload(aai)
57+
assert aai.settings.base_url == "https://api.assemblyai.com"
58+
59+
# this should change the base url
60+
os.environ["ASSEMBLYAI_BASE_URL"] = "https://test.com"
61+
reload(aai)
62+
assert aai.settings.base_url == "https://test.com"
63+
64+
# reset
65+
if tmp1:
66+
os.environ["ASSEMBLYAI_BASE_URL"] = tmp1
67+
else:
68+
os.environ.pop("ASSEMBLYAI_BASE_URL", None)
69+
if tmp2:
70+
os.environ["BASE_URL"] = tmp2
71+
else:
72+
os.environ.pop("BASE_URL", None)
73+
74+
reload(aai)
75+
aai.settings.api_key = "test"

0 commit comments

Comments
 (0)