Наша система просит пользователей аннотировать параметры функции аннотациями определенного типа:
def some_func(data_path: InputPath('CSV') = None):
InputPath
- это нормальный класс.
class InputPath:
def __init__(self, type_name):
sefl.type_name = type_name
Все работает нормально, но наши пользователи жалуются что линтеры вроде mypy показывают ошибки, потому что InputPath('CSV')
- это объект, а не тип.
Каким будет самый простой и наименее опасный способ удовлетворить mypy? Было бы здорово, если бы он действовал как issubclass(InputPath('CSV'), str)
(в других случаях issubclass(InputTextFile('CSV'), TextIOWrapper)
).
Я мог бы попробовать что-то вроде следующего, но это выглядит хакерским:
def InputPath(type_name):
return type(
'InputPath_' + type_name,
(str,),
{'type_name': type_name},
)