Перебор перечисления IntFlag с использованием iter отличается в Python 3.8 и 3.12.4Python

Программы на Python
Anonymous
Перебор перечисления IntFlag с использованием iter отличается в Python 3.8 и 3.12.4

Сообщение Anonymous »

У меня в Python 3.8.1 работает следующее

Код: Выделить всё

@unique
class Encoder(IntFlag):
# H1 sensor signal
H1 = 0x00
# H2 sensor signal
H2 = 0x01
# H3 sensor signal
H3 = 0x02
Затем я пытаюсь уловить с помощью утверждения, если значение не находится в перечислении, т. е.

Код: Выделить всё

from enum import unique, IntFlag
signal = Encoder.H1
assert signal in iter(Encoder), f"Valid Encoder line is integer 0 to 2 inclusive."
Я заметил, что в Python 3.8 сигнал в iter (Encoder) возвращает True, но False в Python 3.12.4
Изображение

Возможно, это зависание в какой-то версии с 3.8.1 по 3.12.4 но я не уверен, с чего начать, чтобы это работало в обоих случаях.

Подробнее здесь: https://stackoverflow.com/questions/786 ... and-3-12-4

Вернуться в «Python»