142142 # TmpxMacro — 2 variants
143143 ("IdentityMatchTmpxMacro" , "trusted_match.identity_match_response" , "TmpxMacro" ),
144144 ("ProviderRegistrationTmpxMacro" , "trusted_match.provider_registration" , "TmpxMacro" ),
145- # Unit — 4 variants
146- ( "DurationUnit" , "core.duration" , "Unit" ),
145+ # Unit — 3 remaining inline variants. DurationUnit has a dedicated
146+ # compatibility test because its schema source can be inline or shared.
147147 ("OverlayUnit" , "core.overlay" , "Unit" ),
148148 ("RealEstateUnit" , "core.real_estate_item" , "Unit" ),
149149 ("VehicleUnit" , "core.vehicle_item" , "Unit" ),
@@ -155,6 +155,16 @@ def _source_class(module_suffix: str, base_name: str) -> type:
155155 return getattr (module , base_name )
156156
157157
158+ def _duration_unit_source_class () -> type :
159+ try :
160+ module = importlib .import_module ("adcp.types.generated_poc.enums.duration_unit" )
161+ return module .DurationUnit
162+ except ModuleNotFoundError as exc :
163+ if exc .name != "adcp.types.generated_poc.enums.duration_unit" :
164+ raise
165+ return _source_class ("core.duration" , "Unit" )
166+
167+
158168@pytest .mark .parametrize (("alias_name" , "module_suffix" , "base_name" ), COLLISION_ALIASES )
159169def test_alias_resolves_to_named_module_variant (
160170 alias_name : str , module_suffix : str , base_name : str
@@ -193,6 +203,18 @@ def test_alias_in_aliases_all(alias_name: str, module_suffix: str, base_name: st
193203 assert alias_name in aliases .__all__ , f"{ alias_name } missing from aliases.__all__"
194204
195205
206+ def test_duration_unit_alias_survives_shared_enum_extraction () -> None :
207+ """The public alias follows either supported generated schema layout."""
208+ import adcp .types as types_module
209+ from adcp .types import aliases
210+
211+ expected = _duration_unit_source_class ()
212+ assert aliases .DurationUnit is expected
213+ assert types_module .DurationUnit is expected
214+ assert "DurationUnit" in aliases .__all__
215+ assert "DurationUnit" in types_module .__all__
216+
217+
196218def test_alias_set_is_internally_consistent () -> None :
197219 """The alias table has no duplicate alias names and covers each base
198220 name's set of source modules with one alias per (base, module) pair."""
0 commit comments