summaryrefslogtreecommitdiffstats
path: root/contrib/deprecated/python/enum34/patches
diff options
context:
space:
mode:
authormaxim-yurchuk <[email protected]>2024-10-09 12:29:46 +0300
committermaxim-yurchuk <[email protected]>2024-10-09 13:14:22 +0300
commit9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80 (patch)
treea8fb3181d5947c0d78cf402aa56e686130179049 /contrib/deprecated/python/enum34/patches
parenta44b779cd359f06c3ebbef4ec98c6b38609d9d85 (diff)
publishFullContrib: true for ydb
<HIDDEN_URL> commit_hash:c82a80ac4594723cebf2c7387dec9c60217f603e
Diffstat (limited to 'contrib/deprecated/python/enum34/patches')
-rw-r--r--contrib/deprecated/python/enum34/patches/01-unknown.patch82
-rw-r--r--contrib/deprecated/python/enum34/patches/02-fix-tests.patch216
2 files changed, 298 insertions, 0 deletions
diff --git a/contrib/deprecated/python/enum34/patches/01-unknown.patch b/contrib/deprecated/python/enum34/patches/01-unknown.patch
new file mode 100644
index 00000000000..4ed999b4e6e
--- /dev/null
+++ b/contrib/deprecated/python/enum34/patches/01-unknown.patch
@@ -0,0 +1,82 @@
+--- contrib/deprecated/python/enum34/enum/__init__.py (index)
++++ contrib/deprecated/python/enum34/enum/__init__.py (working tree)
+@@ -8,6 +8,8 @@ version = 1, 1, 10
+
+ pyver = float('%s.%s' % _sys.version_info[:2])
+
++ALLOW_SYNONYMS = '__allow_synonyms__'
++
+ try:
+ any
+ except NameError:
+@@ -161,6 +163,7 @@ class EnumMeta(type):
+ for k, v in original_dict.items():
+ classdict[k] = v
+
++ allow_synonyms = classdict.get(ALLOW_SYNONYMS, True)
+ member_type, first_enum = metacls._get_mixins_(bases)
+ __new__, save_new, use_args = metacls._find_new_(classdict, member_type,
+ first_enum)
+@@ -215,8 +218,18 @@ class EnumMeta(type):
+ # auto-numbering ;)
+ if __new__ is None:
+ __new__ = enum_class.__new__
++
++ val2name = {}
+ for member_name in _order_:
+ value = members[member_name]
++ if not allow_synonyms:
++ if value in val2name:
++ raise ValueError(
++ 'allow_synonyms=False forbids multiple names of the same value; '
++ 'Members {!r} and {!r} break this'.format(val2name[value], member_name)
++ )
++ val2name[value] = member_name
++
+ if not isinstance(value, tuple):
+ args = (value, )
+ else:
+@@ -237,7 +250,7 @@ class EnumMeta(type):
+ enum_member.__init__(*args)
+ # If another member with the same value was already defined, the
+ # new member becomes an alias to the existing one.
+- for name, canonical_member in enum_class._member_map_.items():
++ for name, canonical_member in (enum_class._member_map_.items() if allow_synonyms else ()):
+ if canonical_member.value == enum_member._value_:
+ enum_member = canonical_member
+ break
+@@ -328,7 +341,7 @@ class EnumMeta(type):
+ """
+ return True
+
+- def __call__(cls, value, names=None, module=None, type=None, start=1):
++ def __call__(cls, value, names=None, module=None, type=None, start=1, allow_synonyms=True):
+ """Either returns an existing member, or creates a new enum class.
+
+ This method is used both when an enum class is given a value to match
+@@ -347,7 +360,7 @@ class EnumMeta(type):
+ if names is None: # simple value lookup
+ return cls.__new__(cls, value)
+ # otherwise, functional API: we're creating a new Enum type
+- return cls._create_(value, names, module=module, type=type, start=start)
++ return cls._create_(value, names, module=module, type=type, start=start, allow_synonyms=allow_synonyms)
+
+ def __contains__(cls, member):
+ return isinstance(member, cls) and member.name in cls._member_map_
+@@ -420,7 +433,7 @@ class EnumMeta(type):
+ raise AttributeError('Cannot reassign members.')
+ super(EnumMeta, cls).__setattr__(name, value)
+
+- def _create_(cls, class_name, names=None, module=None, type=None, start=1):
++ def _create_(cls, class_name, names=None, module=None, type=None, start=1, allow_synonyms=True):
+ """Convenience method to create a new Enum class.
+
+ `names` can be:
+@@ -465,6 +478,7 @@ class EnumMeta(type):
+ # only set _order_ in classdict if name/value was not from a mapping
+ if not isinstance(item, basestring):
+ classdict['_order_'] = _order_
++ classdict[ALLOW_SYNONYMS] = getattr(cls, ALLOW_SYNONYMS, allow_synonyms)
+ enum_class = metacls.__new__(metacls, class_name, bases, classdict)
+
+ # TODO: replace the frame hack if a blessed way to know the calling
diff --git a/contrib/deprecated/python/enum34/patches/02-fix-tests.patch b/contrib/deprecated/python/enum34/patches/02-fix-tests.patch
new file mode 100644
index 00000000000..96e67e60b89
--- /dev/null
+++ b/contrib/deprecated/python/enum34/patches/02-fix-tests.patch
@@ -0,0 +1,216 @@
+--- contrib/deprecated/python/enum34/enum/test.py (index)
++++ contrib/deprecated/python/enum34/enum/test.py (working tree)
+@@ -94,7 +94,9 @@ try:
+ except Exception:
+ pass
+
+-def test_pickle_dump_load(assertion, source, target=None,
++import pytest
++
++def check_pickle_dump_load(assertion, source, target=None,
+ protocol=(0, HIGHEST_PROTOCOL)):
+ start, stop = protocol
+ failures = []
+@@ -110,7 +112,7 @@ def test_pickle_dump_load(assertion, source, target=None,
+ if failures:
+ raise ValueError('Failed with protocols: %s' % ', '.join(failures))
+
+-def test_pickle_exception(assertion, exception, obj,
++def check_pickle_exception(assertion, exception, obj,
+ protocol=(0, HIGHEST_PROTOCOL)):
+ start, stop = protocol
+ failures = []
+@@ -610,32 +612,32 @@ class TestEnum(unittest.TestCase):
+ def test_pickle_enum(self):
+ if isinstance(Stooges, Exception):
+ raise Stooges
+- test_pickle_dump_load(self.assertTrue, Stooges.CURLY)
+- test_pickle_dump_load(self.assertTrue, Stooges)
++ check_pickle_dump_load(self.assertTrue, Stooges.CURLY)
++ check_pickle_dump_load(self.assertTrue, Stooges)
+
+ def test_pickle_int(self):
+ if isinstance(IntStooges, Exception):
+ raise IntStooges
+- test_pickle_dump_load(self.assertTrue, IntStooges.CURLY)
+- test_pickle_dump_load(self.assertTrue, IntStooges)
++ check_pickle_dump_load(self.assertTrue, IntStooges.CURLY)
++ check_pickle_dump_load(self.assertTrue, IntStooges)
+
+ def test_pickle_float(self):
+ if isinstance(FloatStooges, Exception):
+ raise FloatStooges
+- test_pickle_dump_load(self.assertTrue, FloatStooges.CURLY)
+- test_pickle_dump_load(self.assertTrue, FloatStooges)
++ check_pickle_dump_load(self.assertTrue, FloatStooges.CURLY)
++ check_pickle_dump_load(self.assertTrue, FloatStooges)
+
+ def test_pickle_enum_function(self):
+ if isinstance(Answer, Exception):
+ raise Answer
+- test_pickle_dump_load(self.assertTrue, Answer.him)
+- test_pickle_dump_load(self.assertTrue, Answer)
++ check_pickle_dump_load(self.assertTrue, Answer.him)
++ check_pickle_dump_load(self.assertTrue, Answer)
+
+ def test_pickle_enum_function_with_module(self):
+ if isinstance(Question, Exception):
+ raise Question
+- test_pickle_dump_load(self.assertTrue, Question.who)
+- test_pickle_dump_load(self.assertTrue, Question)
++ check_pickle_dump_load(self.assertTrue, Question.who)
++ check_pickle_dump_load(self.assertTrue, Question)
+
+ if pyver == 3.4:
+ def test_class_nested_enum_and_pickle_protocol_four(self):
+@@ -646,10 +648,10 @@ class TestEnum(unittest.TestCase):
+
+ self.__class__.NestedEnum = NestedEnum
+ self.NestedEnum.__qualname__ = '%s.NestedEnum' % self.__class__.__name__
+- test_pickle_exception(
++ check_pickle_exception(
+ self.assertRaises, PicklingError, self.NestedEnum.twigs,
+ protocol=(0, 3))
+- test_pickle_dump_load(self.assertTrue, self.NestedEnum.twigs,
++ check_pickle_dump_load(self.assertTrue, self.NestedEnum.twigs,
+ protocol=(4, HIGHEST_PROTOCOL))
+
+ elif pyver == 3.5:
+@@ -661,15 +663,15 @@ class TestEnum(unittest.TestCase):
+
+ self.__class__.NestedEnum = NestedEnum
+ self.NestedEnum.__qualname__ = '%s.NestedEnum' % self.__class__.__name__
+- test_pickle_dump_load(self.assertTrue, self.NestedEnum.twigs,
++ check_pickle_dump_load(self.assertTrue, self.NestedEnum.twigs,
+ protocol=(0, HIGHEST_PROTOCOL))
+
+ def test_exploding_pickle(self):
+ BadPickle = Enum('BadPickle', 'dill sweet bread_n_butter')
+ enum._make_class_unpicklable(BadPickle)
+ globals()['BadPickle'] = BadPickle
+- test_pickle_exception(self.assertRaises, TypeError, BadPickle.dill)
+- test_pickle_exception(self.assertRaises, PicklingError, BadPickle)
++ check_pickle_exception(self.assertRaises, TypeError, BadPickle.dill)
++ check_pickle_exception(self.assertRaises, PicklingError, BadPickle)
+
+ def test_string_enum(self):
+ class SkillLevel(str, Enum):
+@@ -1066,7 +1068,7 @@ class TestEnum(unittest.TestCase):
+ self.assertEqual(Name.BDFL, 'Guido van Rossum')
+ self.assertTrue(Name.BDFL, Name('Guido van Rossum'))
+ self.assertTrue(Name.BDFL is getattr(Name, 'BDFL'))
+- test_pickle_dump_load(self.assertTrue, Name.BDFL)
++ check_pickle_dump_load(self.assertTrue, Name.BDFL)
+
+ def test_extending(self):
+ def bad_extension():
+@@ -1291,9 +1293,9 @@ class TestEnum(unittest.TestCase):
+ globals()['NEI'] = NEI
+ NI5 = NamedInt('test', 5)
+ self.assertEqual(NI5, 5)
+- test_pickle_dump_load(self.assertTrue, NI5, 5)
++ check_pickle_dump_load(self.assertTrue, NI5, 5)
+ self.assertEqual(NEI.y.value, 2)
+- test_pickle_dump_load(self.assertTrue, NEI.y)
++ check_pickle_dump_load(self.assertTrue, NEI.y)
+
+ if pyver >= 3.4:
+ def test_subclasses_with_getnewargs_ex(self):
+@@ -1348,9 +1350,9 @@ class TestEnum(unittest.TestCase):
+ globals()['NEI'] = NEI
+ NI5 = NamedInt('test', 5)
+ self.assertEqual(NI5, 5)
+- test_pickle_dump_load(self.assertEqual, NI5, 5, protocol=(4, HIGHEST_PROTOCOL))
++ check_pickle_dump_load(self.assertEqual, NI5, 5, protocol=(4, HIGHEST_PROTOCOL))
+ self.assertEqual(NEI.y.value, 2)
+- test_pickle_dump_load(self.assertTrue, NEI.y, protocol=(4, HIGHEST_PROTOCOL))
++ check_pickle_dump_load(self.assertTrue, NEI.y, protocol=(4, HIGHEST_PROTOCOL))
+
+ def test_subclasses_with_reduce(self):
+ class NamedInt(int):
+@@ -1404,9 +1406,9 @@ class TestEnum(unittest.TestCase):
+ globals()['NEI'] = NEI
+ NI5 = NamedInt('test', 5)
+ self.assertEqual(NI5, 5)
+- test_pickle_dump_load(self.assertEqual, NI5, 5)
++ check_pickle_dump_load(self.assertEqual, NI5, 5)
+ self.assertEqual(NEI.y.value, 2)
+- test_pickle_dump_load(self.assertTrue, NEI.y)
++ check_pickle_dump_load(self.assertTrue, NEI.y)
+
+ def test_subclasses_with_reduce_ex(self):
+ class NamedInt(int):
+@@ -1460,9 +1462,9 @@ class TestEnum(unittest.TestCase):
+ globals()['NEI'] = NEI
+ NI5 = NamedInt('test', 5)
+ self.assertEqual(NI5, 5)
+- test_pickle_dump_load(self.assertEqual, NI5, 5)
++ check_pickle_dump_load(self.assertEqual, NI5, 5)
+ self.assertEqual(NEI.y.value, 2)
+- test_pickle_dump_load(self.assertTrue, NEI.y)
++ check_pickle_dump_load(self.assertTrue, NEI.y)
+
+ def test_subclasses_without_direct_pickle_support(self):
+ class NamedInt(int):
+@@ -1514,8 +1516,8 @@ class TestEnum(unittest.TestCase):
+ NI5 = NamedInt('test', 5)
+ self.assertEqual(NI5, 5)
+ self.assertEqual(NEI.y.value, 2)
+- test_pickle_exception(self.assertRaises, TypeError, NEI.x)
+- test_pickle_exception(self.assertRaises, PicklingError, NEI)
++ check_pickle_exception(self.assertRaises, TypeError, NEI.x)
++ check_pickle_exception(self.assertRaises, PicklingError, NEI)
+
+ def test_subclasses_without_direct_pickle_support_using_name(self):
+ class NamedInt(int):
+@@ -1569,8 +1571,8 @@ class TestEnum(unittest.TestCase):
+ NI5 = NamedInt('test', 5)
+ self.assertEqual(NI5, 5)
+ self.assertEqual(NEI.y.value, 2)
+- test_pickle_dump_load(self.assertTrue, NEI.y)
+- test_pickle_dump_load(self.assertTrue, NEI)
++ check_pickle_dump_load(self.assertTrue, NEI.y)
++ check_pickle_dump_load(self.assertTrue, NEI)
+
+ def test_tuple_subclass(self):
+ class SomeTuple(tuple, Enum):
+@@ -1582,7 +1584,7 @@ class TestEnum(unittest.TestCase):
+ self.assertTrue(isinstance(SomeTuple.second, tuple))
+ self.assertEqual(SomeTuple.third, (3, 'for the music'))
+ globals()['SomeTuple'] = SomeTuple
+- test_pickle_dump_load(self.assertTrue, SomeTuple.first)
++ check_pickle_dump_load(self.assertTrue, SomeTuple.first)
+
+ def test_duplicate_values_give_unique_enum_items(self):
+ class AutoNumber(Enum):
+@@ -1832,6 +1834,30 @@ class TestUnique(unittest.TestCase):
+ self.assertTrue('double -> single' in message)
+ self.assertTrue('turkey -> triple' in message)
+
++ def test_unique_class(self):
++ values = [
++ ('switzerland', 1),
++ ('sweden', 2),
++ ('usa', 3),
++ ('iran', 4),
++ ('iraq', 4),
++ ]
++ with self.assertRaises(ValueError):
++ enum.Enum('Country', values, allow_synonyms=False)
++
++ with self.assertRaises(ValueError):
++ class Country(enum.Enum):
++ __allow_synonyms__ = False
++
++ austria = 1
++ australia = 1
++
++ with self.assertRaises(ValueError):
++ class NoDuplicatesAllowed(enum.Enum):
++ __allow_synonyms__ = False
++
++ t = NoDuplicatesAllowed('NewEnum', [('russia', 1), ('belorussia', 1)])
++
+
+ class TestMe(unittest.TestCase):
+