Skip to content

Commit ccbd402

Browse files
committed
fix: base json config does not use alias
1 parent 812a7c9 commit ccbd402

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

src/py_app_dev/core/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class BaseConfigJSONMixin(DataClassJSONMixin):
3030

3131
class Config(BaseConfig):
3232
omit_none = True
33+
serialize_by_alias = True
3334

3435
@classmethod
3536
def from_json_file(cls, file_path: Path) -> Self:

tests/test_config.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import json
2-
from dataclasses import dataclass
2+
from dataclasses import dataclass, field
33
from pathlib import Path
44
from typing import Any
55

@@ -109,3 +109,19 @@ def test_json_mixin_to_string() -> None:
109109
cfg = SampleJsonConfig(name="a", count=1)
110110

111111
assert cfg.to_string() == cfg.to_json_string()
112+
113+
114+
@dataclass
115+
class ConfigWithAlias(BaseConfigJSONMixin):
116+
internal_field: str = field(metadata={"alias": "externalName"})
117+
regular_field: int = 0
118+
119+
120+
def test_json_mixin_serialize_by_alias() -> None:
121+
cfg = ConfigWithAlias(internal_field="value", regular_field=42)
122+
json_str = cfg.to_json_string()
123+
parsed = json.loads(json_str)
124+
125+
assert "externalName" in parsed
126+
assert parsed["externalName"] == "value"
127+
assert "internal_field" not in parsed

0 commit comments

Comments
 (0)