Есть ли подсказка типа Python, которая соответствует спискам, кортежам и, возможно, другим последовательным типам, но не соответствует строкам?
Проблема заключается в том, что строки представляют собой последовательности строк длиной 1 (например, отдельные символы), поэтому они технически соответствуют Sequence[str]
, но предоставление строки функции, ожидающей список строк, является ошибкой в возможно, 100% случаев.
Есть ли способ исключить строки из аннотации типа, чтобы сделать что-то подобное несуществующим And[Sequence[str], Not[str]]
?
Что касается этой цели, я хотел бы аннотировать эту функцию:
PathType = Union[str, os.PathLike]
def escape_cmdline(argv: Union[List[PathType], Tuple[PathType]]) -> str: ...
Но существующая подпись выглядит раздутой ко мне и не распространяется на какие-либо пользовательские типы, совместимые с списком и кортежем. Есть ли лучший способ?