Skip to content

Commit d435ffe

Browse files
authored
Fix fetching env values for nested bytes field (#52)
1 parent 9d8c9a1 commit d435ffe

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

pydantic_settings/sources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ def _annotation_is_complex(annotation: type[Any] | None) -> bool:
532532

533533

534534
def _annotation_is_complex_inner(annotation: type[Any] | None) -> bool:
535-
if lenient_issubclass(annotation, str):
535+
if lenient_issubclass(annotation, (str, bytes)):
536536
return False
537537

538538
return lenient_issubclass(annotation, (BaseModel, Mapping, Sequence, tuple, set, frozenset, deque)) or is_dataclass(

tests/test_settings.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1582,3 +1582,25 @@ class Settings(BaseSettings):
15821582
s = Settings()
15831583
assert s.A == 'b'
15841584
assert s.sub_MODEL.v == 'v1'
1585+
1586+
1587+
def test_nested_bytes_field(env):
1588+
class SubModel(BaseModel):
1589+
v1: str
1590+
v2: bytes
1591+
1592+
class Settings(BaseSettings):
1593+
v0: str
1594+
sub_model: SubModel
1595+
1596+
model_config = ConfigDict(env_nested_delimiter='__', env_prefix='TEST_')
1597+
1598+
env.set('TEST_V0', 'v0')
1599+
env.set('TEST_SUB_MODEL__V1', 'v1')
1600+
env.set('TEST_SUB_MODEL__V2', 'v2')
1601+
1602+
s = Settings()
1603+
1604+
assert s.v0 == 'v0'
1605+
assert s.sub_model.v1 == 'v1'
1606+
assert s.sub_model.v2 == b'v2'

0 commit comments

Comments
 (0)