MCPcopy Create free account
hub / github.com/apple/axlearn / _config_class_for_function

Function _config_class_for_function

axlearn/common/config.py:1058–1079  ·  view source on GitHub ↗

Returns a config class.

(fn: F)

Source from the content-addressed store, hash-verified

1056# Cache (attr.make_class()/inspect.signature() is expensive), func often shared across configs.
1057@lru_cache(maxsize=1024)
1058def _config_class_for_function(fn: F) -> type[FunctionConfigBase]:
1059 """Returns a config class."""
1060 init_sig = inspect.signature(fn)
1061 # attrs strips leading underscores, resulting in '_' becoming ''. We could get around this via
1062 # using an alias, but the safer option is to require explicit names for params. See:
1063 # https://github.com/python-attrs/attrs/issues/391
1064 # https://github.com/python-attrs/attrs/issues/945
1065 for param in ["fn", "_"]:
1066 if param in init_sig.parameters:
1067 raise ValueError(f"Configured function {fn} should not have a '{param}' parameter.")
1068 config_attrs = {
1069 name: _attr_field_from_signature_param(param) for name, param in init_sig.parameters.items()
1070 }
1071 return _wrap_config_attr_cls(
1072 attr.make_class(
1073 "FunctionConfig",
1074 bases=(FunctionConfigBase[F],),
1075 attrs=config_attrs,
1076 **_config_class_kwargs(),
1077 ),
1078 name=f"config_for_function({fn.__module__}.{fn.__qualname__})",
1079 )
1080
1081
1082def config_for_function(fn: Callable[..., T]) -> Union[Any, FunctionConfigBase[T]]:

Callers 1

config_for_functionFunction · 0.85

Calls 4

_wrap_config_attr_clsFunction · 0.85
_config_class_kwargsFunction · 0.85
itemsMethod · 0.80

Tested by

no test coverage detected