diff --git a/gin/config.py b/gin/config.py index 7f06145..62bf3fc 100644 --- a/gin/config.py +++ b/gin/config.py @@ -2830,7 +2830,7 @@ def decorator(cls, module=module): if module is None: module = cls.__module__ for value in cls: - constant('{}.{}'.format(module, str(value)), value) + constant('{}.{}.{}'.format(module, cls.__name__, value.name), value) return cls if cls is None: diff --git a/tests/config_test.py b/tests/config_test.py index ba9364f..4622ddc 100644 --- a/tests/config_test.py +++ b/tests/config_test.py @@ -2378,19 +2378,26 @@ class SomeEnum(enum.Enum): A = 0, B = 1 + @config.constants_from_enum(module='enum_module') + class SomeIntEnum(enum.IntEnum): + A = 0 + B = 1 + @config.configurable - def f(a, b): - return a, b + def f(a, b, c): + return a, b, c config.parse_config(""" f.a = %enum_module.SomeEnum.A f.b = %SomeEnum.B + f.c = %SomeIntEnum.A """) # pylint: disable=no-value-for-parameter - a, b = f() + a, b, c = f() # pylint: enable=no-value-for-parameter self.assertEqual(SomeEnum.A, a) self.assertEqual(SomeEnum.B, b) + self.assertEqual(SomeIntEnum.A, c) def testConstantsFromEnumWithModule(self):