in luigi/mypy.py [0:0]
def transform(self) -> bool:
"""Apply all the necessary transformations to the underlying gokart.Task"""
info = self._cls.info
attributes = self.collect_attributes()
if attributes is None:
# Some definitions are not ready. We need another pass.
return False
for attr in attributes:
if attr.type is None:
return False
# If there are no attributes, it may be that the semantic analyzer has not
# processed them yet. In order to work around this, we can simply skip generating
# __init__ if there are no attributes, because if the user truly did not define any,
# then the object default __init__ with an empty signature will be present anyway.
if (
"__init__" not in info.names or info.names["__init__"].plugin_generated
) and attributes:
args = [attr.to_argument(info, of="__init__") for attr in attributes]
add_method_to_class(
self._api, self._cls, "__init__", args=args, return_type=NoneType()
)
info.metadata[METADATA_TAG] = {
"attributes": [attr.serialize() for attr in attributes],
}
return True