Насколько мне известно, не существует PEP 484-совместимого способа сделать это.
Однако, возможно, можно написать плагин для поддержки этого варианта использования, если вы используете именно mypy. Единственным недостатком является то, что система плагинов все еще очень нова и постоянно меняется, поэтому она намеренно плохо документирована - если вы хотите попробовать ее использовать, вы должны быть готовы немного покопаться.
Если, однако, вы хотите применить ограничения «Уникальный», «Индекс» и «Основной» только к фиксированному числу типов, вы можете использовать NewType , например, так:
from typing import NewType
UniqueInt = NewType('UniqueInt', int)
UniqueStr = NewType('UniqueStr', str)
# etc...
Это немного странно, но делает , позволяя создавать отдельные подклассы существующих конкретных типов, что позволяет получить эффект проксирования.