aboutsummaryrefslogtreecommitdiff
path: root/absl
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2021-02-26 12:56:28 -0800
committerCopybara-Service <copybara-worker@google.com>2021-02-26 12:56:46 -0800
commit8ae8e19e5da94af8ac44ab73b6132795f69e4a82 (patch)
tree3dbc091f5b21545b3d9ea68785f59bf744f1a32b /absl
parent1f6b231eef83712c495971be9c1c5586887bc73e (diff)
downloadabsl-py-8ae8e19e5da94af8ac44ab73b6132795f69e4a82.tar.gz
Add EnumClassListSerializer to the public namespace
This is to (formally) allow using it in extension libraries. Also add a test to cover non-comma separators. PiperOrigin-RevId: 359820150 Change-Id: I3a384083a1634d1429b6a01b10571ebfb7ee9ac1
Diffstat (limited to 'absl')
-rw-r--r--absl/CHANGELOG.md2
-rw-r--r--absl/flags/__init__.py1
-rw-r--r--absl/flags/tests/_argument_parser_test.py13
3 files changed, 14 insertions, 2 deletions
diff --git a/absl/CHANGELOG.md b/absl/CHANGELOG.md
index 9ff1924..ad16c4d 100644
--- a/absl/CHANGELOG.md
+++ b/absl/CHANGELOG.md
@@ -8,7 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com).
### Added
-* (flags) Made `EnumClassSerializer` public.
+* (flags) Made `EnumClassSerializer` and `EnumClassListSerializer` public.
* (flags) Added a `required: Optional[bool] = False` parameter to `DEFINE_*`
functions.
* (testing) flagsaver overrides can now be specified in terms of FlagHolder.
diff --git a/absl/flags/__init__.py b/absl/flags/__init__.py
index 3de08bc..99501bb 100644
--- a/absl/flags/__init__.py
+++ b/absl/flags/__init__.py
@@ -119,6 +119,7 @@ IntegerParser = _argument_parser.IntegerParser
BaseListParser = _argument_parser.BaseListParser
ListParser = _argument_parser.ListParser
ListSerializer = _argument_parser.ListSerializer
+EnumClassListSerializer = _argument_parser.EnumClassListSerializer
CsvListSerializer = _argument_parser.CsvListSerializer
WhitespaceSeparatedListParser = _argument_parser.WhitespaceSeparatedListParser
EnumClassSerializer = _argument_parser.EnumClassSerializer
diff --git a/absl/flags/tests/_argument_parser_test.py b/absl/flags/tests/_argument_parser_test.py
index 4074669..247249c 100644
--- a/absl/flags/tests/_argument_parser_test.py
+++ b/absl/flags/tests/_argument_parser_test.py
@@ -190,12 +190,23 @@ class EnumClassParserTest(parameterized.TestCase):
self.assertEqual(value, parser.parse(expected))
-class SerializerTest(absltest.TestCase):
+class SerializerTest(parameterized.TestCase):
def test_csv_serializer(self):
serializer = _argument_parser.CsvListSerializer('+')
self.assertEqual(serializer.serialize(['foo', 'bar']), 'foo+bar')
+ @parameterized.parameters([
+ dict(lowercase=False, expected='APPLE+BANANA'),
+ dict(lowercase=True, expected='apple+banana'),
+ ])
+ def test_enum_class_list_serializer(self, lowercase, expected):
+ values = [Fruit.APPLE, Fruit.BANANA]
+ serializer = _argument_parser.EnumClassListSerializer(
+ list_sep='+', lowercase=lowercase)
+ serialized = serializer.serialize(values)
+ self.assertEqual(expected, serialized)
+
class HelperFunctionsTest(absltest.TestCase):