(self, converter, *, takes_self=False, takes_field=False)
| 3115 | ) |
| 3116 | |
| 3117 | def __init__(self, converter, *, takes_self=False, takes_field=False): |
| 3118 | self.converter = converter |
| 3119 | self.takes_self = takes_self |
| 3120 | self.takes_field = takes_field |
| 3121 | |
| 3122 | ex = _AnnotationExtractor(converter) |
| 3123 | self._first_param_type = ex.get_first_param_type() |
| 3124 | |
| 3125 | if not (self.takes_self or self.takes_field): |
| 3126 | self.__call__ = lambda value, _, __: self.converter(value) |
| 3127 | elif self.takes_self and not self.takes_field: |
| 3128 | self.__call__ = lambda value, instance, __: self.converter( |
| 3129 | value, instance |
| 3130 | ) |
| 3131 | elif not self.takes_self and self.takes_field: |
| 3132 | self.__call__ = lambda value, __, field: self.converter( |
| 3133 | value, field |
| 3134 | ) |
| 3135 | else: |
| 3136 | self.__call__ = self.converter |
| 3137 | |
| 3138 | rt = ex.get_return_type() |
| 3139 | if rt is not None: |
| 3140 | self.__call__.__annotations__["return"] = rt |
| 3141 | |
| 3142 | @staticmethod |
| 3143 | def _get_global_name(attr_name: str) -> str: |
no test coverage detected