Offer a `mods: list` to `dec_type_union()`; drop importing this-mod

ext_type_plds
Tyler Goodlet 2025-03-08 15:49:21 -05:00
parent 6b65b9e4de
commit 9ec63f8187
1 changed files with 8 additions and 4 deletions

View File

@ -33,6 +33,9 @@ converters,
|_ https://jcristharif.com/msgspec/changelog.html |_ https://jcristharif.com/msgspec/changelog.html
''' '''
from types import (
ModuleType,
)
import typing import typing
from typing import ( from typing import (
Type, Type,
@ -41,19 +44,20 @@ from typing import (
def dec_type_union( def dec_type_union(
type_names: list[str], type_names: list[str],
) -> Type: mods: list[ModuleType] = []
) -> Type|Union[Type]:
''' '''
Look up types by name, compile into a list and then create and Look up types by name, compile into a list and then create and
return a `typing.Union` from the full set. return a `typing.Union` from the full set.
''' '''
import importlib # import importlib
types: list[Type] = [] types: list[Type] = []
for type_name in type_names: for type_name in type_names:
for mod in [ for mod in [
typing, typing,
importlib.import_module(__name__), # importlib.import_module(__name__),
]: ] + mods:
if type_ref := getattr( if type_ref := getattr(
mod, mod,
type_name, type_name,