Protocol,
TypeGuard,
TypeVar,
+ cast,
overload,
)
return closure
class CConverterAutoRegister(type):
- def __init__(cls, name, bases, classdict):
- add_c_converter(cls)
- add_default_legacy_c_converter(cls)
+ def __init__(
+ cls, name: str, bases: tuple[type, ...], classdict: dict[str, Any]
+ ) -> None:
+ converter_cls = cast(type["CConverter"], cls)
+ add_c_converter(converter_cls)
+ add_default_legacy_c_converter(converter_cls)
class CConverter(metaclass=CConverterAutoRegister):
"""
def converter_init(self, *, type: str | None = None) -> None:
self.specified_type = type
- def render(self, parameter, data) -> None:
+ def render(self, parameter: Parameter, data: CRenderData) -> None:
self._render_self(parameter, data)
- def set_template_dict(self, template_dict):
+ def set_template_dict(self, template_dict: TemplateDict) -> None:
template_dict['defining_class_name'] = self.name
assert isinstance(self.function, Function)
return required_type_for_self_for_parser(self.function) or self.type
- def render(self, parameter, data):
+ def render(self, parameter: Parameter, data: CRenderData) -> None:
"""
parameter is a clinic.Parameter instance.
data is a CRenderData instance.
# because we render parameters in order, and self is always first.
assert len(data.impl_arguments) == 1
assert data.impl_arguments[0] == self.name
+ assert self.type is not None
data.impl_arguments[0] = '(' + self.type + ")" + data.impl_arguments[0]
def set_template_dict(self, template_dict: TemplateDict) -> None: