Must explicitly convert IntEnum to int to use equality comparison

Environment

  • Pythonnet version: 3.0.0-a2
  • Python version: 3.9.10
  • Operating System: Windows 10 Pro - 21H2 - 19044.1766
  • .NET Runtime: Unity/Mono

Details

  • When trying to compare the equality of Python IntEnum instances from C#, they must be explicitly converted to an int.
# in my_module.py file
class MyEnum(enum.IntEnum):
    OK = 1
    ERROR = 2

def get_status():
    return MyEnum.OK 

No crash.

PythonRunner.EnsureInitialized();
using (Py.GIL())
{  
    // Import our module
    dynamic my_module = Py.Import("my_module");
    dynamic MyEnum= my_module .MyEnum; 
    // Call the Python func on C# side
    dynamic status = my_module.get_status();
    if ((int)status == (int)MyEnum.OK) // <-- have to convert to int
    if (status == MyEnum.OK)            // when not converting to int, they are not evaluated as equal (no crash)
}