make x_enabled compulsory

Summary: Optional[some_configurable] won't autogenerate the enabled flag

Reviewed By: shapovalov

Differential Revision: D41522104

fbshipit-source-id: 555ff6b343faf6f18aad2f92fbb7c341f5e991c6
This commit is contained in:
Jeremy Reizenstein
2022-11-24 09:38:02 -08:00
committed by Facebook GitHub Bot
parent 1706eb8216
commit 60ab1cdb72
2 changed files with 10 additions and 5 deletions

View File

@@ -783,16 +783,16 @@ def expand_args_fields(
Similarly, replace,
x: Optional[X]
x_enabled: bool = ...
and optionally
def create_x(self):...
x_enabled: bool = ...
with
x_args: dict = dataclasses.field(default_factory=lambda: get_default_args(X))
x_enabled: bool = False
x_enabled: bool = ...
def create_x(self):
self.create_x_impl(self.x_enabled, self.x_args)
@@ -1091,8 +1091,10 @@ def _process_member(
if process_type == _ProcessType.OPTIONAL_CONFIGURABLE:
enabled_name = name + ENABLED_SUFFIX
if enabled_name not in some_class.__annotations__:
some_class.__annotations__[enabled_name] = bool
setattr(some_class, enabled_name, False)
raise ValueError(
f"{name} is an Optional[{type_.__name__}] member "
f"but there is no corresponding member {enabled_name}."
)
creation_function_name = f"{CREATE_PREFIX}{name}"
if not hasattr(some_class, creation_function_name):