99from functools import partial , wraps
1010from inspect import Parameter , iscoroutinefunction , signature
1111from typing import (
12+ TYPE_CHECKING ,
1213 Any ,
1314 Callable ,
1415 DefaultDict ,
4849from hydra_zen import instantiate
4950from hydra_zen ._compatibility import HYDRA_VERSION , Version
5051from hydra_zen .errors import HydraZenValidationError
51- from hydra_zen .structured_configs ._implementations import BuildsFn , DefaultBuilds
52+ from hydra_zen .structured_configs ._implementations import DefaultBuilds
5253from hydra_zen .structured_configs ._type_guards import safe_getattr
5354from hydra_zen .typing ._implementations import (
5455 DataClass_ ,
6162from ..structured_configs ._type_guards import is_dataclass
6263from ..structured_configs ._utils import safe_name
6364
65+ if TYPE_CHECKING :
66+ from hydra_zen import BuildsFn
67+
68+
6469__all__ = ["zen" , "store" , "Zen" ]
6570
66- get_obj_path = BuildsFn ._get_obj_path # type: ignore
6771
6872R = TypeVar ("R" )
6973P = ParamSpec ("P" )
@@ -830,7 +834,7 @@ def default_to_config(
830834 ListConfig ,
831835 DictConfig ,
832836 ],
833- BuildsFn : Type [BuildsFn [Any ]] = DefaultBuilds ,
837+ CustomBuildsFn : Type [" BuildsFn[Any]" ] = DefaultBuilds ,
834838 ** kw : Any ,
835839) -> Union [DataClass_ , Type [DataClass_ ], ListConfig , DictConfig ]:
836840 """Creates a config that describes `target`.
@@ -849,7 +853,7 @@ def default_to_config(
849853 ----------
850854 target : Callable[..., Any] | DataClass | Type[DataClass] | list | dict
851855
852- BuildsFn : Type[BuildsFn[Any]], optional (default=DefaultBuilds)
856+ CustomBuildsFn : Type[BuildsFn[Any]], optional (default=DefaultBuilds)
853857 Provides the config-creation functions (`builds`, `just`) used
854858 by this function.
855859
@@ -893,21 +897,20 @@ def default_to_config(
893897 'y': ???
894898 """
895899
900+ kw = kw .copy ()
901+
896902 if is_dataclass (target ):
897903 if isinstance (target , type ):
898904 if issubclass (target , HydraConf ):
899905 # don't auto-config HydraConf
900906 return target
901907
902- if not kw and get_obj_path (target ).startswith ("types." ):
908+ if not kw and CustomBuildsFn . _get_obj_path (target ).startswith ("types." ): # type: ignore
903909 # handles dataclasses returned by make_config()
904910 return target
905- return BuildsFn .builds (
906- target ,
907- ** kw ,
908- populate_full_signature = True ,
909- builds_bases = (target ,),
910- )
911+ kw .setdefault ("populate_full_signature" , True )
912+ kw .setdefault ("builds_bases" , (target ,))
913+ return CustomBuildsFn .builds (target , ** kw )
911914 if kw :
912915 raise ValueError (
913916 "store(<dataclass-instance>, [...]) does not support specifying "
@@ -917,14 +920,13 @@ def default_to_config(
917920
918921 elif isinstance (target , (dict , list )):
919922 # TODO: convert to OmegaConf containers?
920- return BuildsFn .just (target )
923+ return CustomBuildsFn .just (target )
921924 elif isinstance (target , (DictConfig , ListConfig )):
922925 return target
923926 else :
924927 t = cast (Callable [..., Any ], target )
925- return cast (
926- Type [DataClass_ ], BuildsFn .builds (t , ** kw , populate_full_signature = True )
927- )
928+ kw .setdefault ("populate_full_signature" , True )
929+ return cast (Type [DataClass_ ], CustomBuildsFn .builds (t , ** kw ))
928930
929931
930932class _HasName (Protocol ):
0 commit comments