Problem
All generated enums in adcp.types are plain Enum, not StrEnum:
from adcp.types import CreativeAction, CreativeStatus, MediaBuyStatus, DeliveryStatus
import enum
for cls in [CreativeAction, CreativeStatus, MediaBuyStatus, DeliveryStatus]:
print(f"{cls.__name__}: {cls.__bases__}")
# (<enum 'Enum'>,) -- NOT StrEnum
This causes silent equality failures when model fields are typed as CreativeAction | str (which many are in SDK 5.7). The model stores raw strings, but downstream code compares against enum members:
from adcp.types.generated_poc.creative.sync_creatives_response import Creative
c = Creative(creative_id="c1", action="created")
print(c.action == CreativeAction.created) # False!
print(type(c.action)) # <class 'str'>
With StrEnum, "created" == CreativeAction.created would return True because StrEnum inherits from str.
Impact
SyncCreativesResponse.__str__ counted zero creatives (all comparisons returned False)
- Every
if result.action == CreativeAction.failed guard in production code silently fails when the value is a raw string
- 134 comparison sites in our codebase affected
Expected
Generated enums should use StrEnum (Python 3.11+) or str, Enum mixin:
class CreativeAction(StrEnum):
created = "created"
updated = "updated"
...
This is a datamodel-codegen config issue — the enum_field_as_literal or base class setting.
Environment
- adcp SDK: 5.7.0
- Python: 3.12
- Pydantic: 2.12
Problem
All generated enums in
adcp.typesare plainEnum, notStrEnum:This causes silent equality failures when model fields are typed as
CreativeAction | str(which many are in SDK 5.7). The model stores raw strings, but downstream code compares against enum members:With
StrEnum,"created" == CreativeAction.createdwould returnTruebecauseStrEnuminherits fromstr.Impact
SyncCreativesResponse.__str__counted zero creatives (all comparisons returned False)if result.action == CreativeAction.failedguard in production code silently fails when the value is a raw stringExpected
Generated enums should use
StrEnum(Python 3.11+) orstr, Enummixin:This is a
datamodel-codegenconfig issue — theenum_field_as_literalor base class setting.Environment