Введите намек на перечисление, созданное с помощью API

#python #enums #type-hinting

Вопрос:

Подсказка типа отлично работает vscode , когда перечисление создается следующим образом:

 from enum import Enum  class Color(Enum):  RED = 1  YELLOW = 2  GREEN = 3  

Перечисление также может быть создано из словаря с помощью Enum API, и при создании такого типа намек не работает:

 from enum import Enum  color_values = dict(RED = 1, YELLOW = 2, GREEN = 3) Color = Enum('Color', color_values, type=int)  

Как заставить работать подсказки типа, когда an Enum создается с использованием его API?

Комментарии:

1. Вы не. Чтобы это работало в целом, потребуется запустить код Python, который помимо ужасной неэффективности также сталкивается с теоретическими ограничениями, такими как проблема остановки. Проверка типов предназначена для обработки простых случаев, а не для правильного ввода всех возможных программ на Python, которые когда-либо могут быть написаны.

Ответ №1:

Я сомневаюсь, что это возможно без какого-либо запуска python при проверке типов.

Рассмотрим этот пример:

 from enum import Enum  color_values = dict(RED = 1, YELLOW = 2, GREEN = 3) key = "BLUE" color_values[key] = 1 Color = Enum('Color', color_values, type=int)