Implicit conversion from enum to int for Python 3.8 (fix by @sizmailov)
diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h
index 204aaa4..a0e6395 100644
--- a/include/pybind11/pybind11.h
+++ b/include/pybind11/pybind11.h
@@ -1566,6 +1566,10 @@
         #if PY_MAJOR_VERSION < 3
             def("__long__", [](Type value) { return (Scalar) value; });
         #endif
+        #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 8
+            def("__index__", [](Type value) { return (Scalar) value; });
+        #endif
+
         cpp_function setstate(
             [](Type &value, Scalar arg) { value = static_cast<Type>(arg); },
             is_method(*this));
diff --git a/tests/test_enum.py b/tests/test_enum.py
index cea834d..7fe9b61 100644
--- a/tests/test_enum.py
+++ b/tests/test_enum.py
@@ -192,15 +192,12 @@
 
 
 def test_enum_to_int():
-    import sys
-    # Implicit conversion to integers is deprecated in Python >= 3.8
-    if sys.version_info < (3, 8):
-        m.test_enum_to_int(m.Flags.Read)
-        m.test_enum_to_int(m.ClassWithUnscopedEnum.EMode.EFirstMode)
-        m.test_enum_to_uint(m.Flags.Read)
-        m.test_enum_to_uint(m.ClassWithUnscopedEnum.EMode.EFirstMode)
-        m.test_enum_to_long_long(m.Flags.Read)
-        m.test_enum_to_long_long(m.ClassWithUnscopedEnum.EMode.EFirstMode)
+    m.test_enum_to_int(m.Flags.Read)
+    m.test_enum_to_int(m.ClassWithUnscopedEnum.EMode.EFirstMode)
+    m.test_enum_to_uint(m.Flags.Read)
+    m.test_enum_to_uint(m.ClassWithUnscopedEnum.EMode.EFirstMode)
+    m.test_enum_to_long_long(m.Flags.Read)
+    m.test_enum_to_long_long(m.ClassWithUnscopedEnum.EMode.EFirstMode)
 
 
 def test_duplicate_enum_name():