From f2775cb8cdcf1dd56add57133fcfb4e6769d0911 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 07:11:32 +0100 Subject: [PATCH 01/19] uuid: add --count to main Sometimes you need more than one UUID. Inspired by https://www.man7.org/linux/man-pages/man1/uuidgen.1.html --- Doc/library/uuid.rst | 6 ++++++ Lib/uuid.py | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Doc/library/uuid.rst b/Doc/library/uuid.rst index 0fb29460e2e68a..5ec0bbc8bae166 100644 --- a/Doc/library/uuid.rst +++ b/Doc/library/uuid.rst @@ -377,6 +377,10 @@ The following options are accepted: The name used as part of generating the uuid. Only required for :func:`uuid3` / :func:`uuid5` functions. +.. option:: --count + + Generate more uuids in loop. + .. _uuid-example: @@ -445,3 +449,5 @@ Here are some examples of typical usage of the :mod:`uuid` command line interfac # generate a uuid using uuid5 $ python -m uuid -u uuid5 -n @url -N example.com + # generate 42 random uuids + $ python -m uuid --count 42 diff --git a/Lib/uuid.py b/Lib/uuid.py index 6f7a7a3f42ac11..1f5b42fe2fb375 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -949,6 +949,8 @@ def main(): parser.add_argument("-N", "--name", help="The name used as part of generating the uuid. " "Only required for uuid3/uuid5 functions.") + parser.add_argument("--count", type=int, default=1, + help="Generate more uuids in loop. ") args = parser.parse_args() uuid_func = uuid_funcs[args.uuid] @@ -963,9 +965,11 @@ def main(): "Run 'python -m uuid -h' for more information." ) namespace = namespaces[namespace] if namespace in namespaces else UUID(namespace) - print(uuid_func(namespace, name)) + for _ in range(args.count): + print(uuid_func(namespace, name)) else: - print(uuid_func()) + for _ in range(args.count): + print(uuid_func()) # The following standard UUIDs are for use with uuid3() or uuid5(). From ff6dc1cf290947d0d65a39d8d4c73945817ef61a Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 12:22:25 +0100 Subject: [PATCH 02/19] Add news --- .../next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst diff --git a/Misc/NEWS.d/next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst b/Misc/NEWS.d/next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst new file mode 100644 index 00000000000000..0af31d19addf61 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst @@ -0,0 +1 @@ +Add ``--count`` to main of the :mod:`uuid` module. From 0f95b45cf7b27817ae7ed04e10d9304a71bd696d Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 12:23:05 +0100 Subject: [PATCH 03/19] "Generate NUM fresh UUIDs." --- Doc/library/uuid.rst | 5 +++-- Lib/uuid.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Doc/library/uuid.rst b/Doc/library/uuid.rst index 5ec0bbc8bae166..4145f46df41b31 100644 --- a/Doc/library/uuid.rst +++ b/Doc/library/uuid.rst @@ -377,9 +377,10 @@ The following options are accepted: The name used as part of generating the uuid. Only required for :func:`uuid3` / :func:`uuid5` functions. -.. option:: --count +.. option:: -c + --count - Generate more uuids in loop. + Generate NUM fresh UUIDs. .. _uuid-example: diff --git a/Lib/uuid.py b/Lib/uuid.py index 1f5b42fe2fb375..7ad95c2a16bca4 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -949,8 +949,8 @@ def main(): parser.add_argument("-N", "--name", help="The name used as part of generating the uuid. " "Only required for uuid3/uuid5 functions.") - parser.add_argument("--count", type=int, default=1, - help="Generate more uuids in loop. ") + parser.add_argument("-c", "--count", metavar="NUM", type=int, default=1, + help="Generate NUM fresh UUIDs.") args = parser.parse_args() uuid_func = uuid_funcs[args.uuid] From 8ec7c365fb7817422414694f926d66f3016945e1 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 13:06:47 +0100 Subject: [PATCH 04/19] Update Misc/NEWS.d/next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> --- .../next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Misc/NEWS.d/next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst b/Misc/NEWS.d/next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst index 0af31d19addf61..31c16767d922d0 100644 --- a/Misc/NEWS.d/next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst +++ b/Misc/NEWS.d/next/Library/2025-03-14-12-22-02.gh-issue-131236.HjqFq0.rst @@ -1 +1 @@ -Add ``--count`` to main of the :mod:`uuid` module. +Allow to generate multiple UUIDs at once via :option:`python -m uuid --count `. From 13c34287d78cb7dea7d41bb10f19bbaf70eca008 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 13:07:47 +0100 Subject: [PATCH 05/19] Update Doc/library/uuid.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> --- Doc/library/uuid.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Doc/library/uuid.rst b/Doc/library/uuid.rst index 4145f46df41b31..dcca0dc08e16be 100644 --- a/Doc/library/uuid.rst +++ b/Doc/library/uuid.rst @@ -377,10 +377,12 @@ The following options are accepted: The name used as part of generating the uuid. Only required for :func:`uuid3` / :func:`uuid5` functions. -.. option:: -c - --count +.. option:: -C + --count - Generate NUM fresh UUIDs. + Generate *num* fresh UUIDs. + + .. versionadded:: next .. _uuid-example: From 6535ead5c9c5d9e26ba7e2cebf27f0b24c13fd29 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 13:07:55 +0100 Subject: [PATCH 06/19] Update Lib/uuid.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> --- Lib/uuid.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/uuid.py b/Lib/uuid.py index 7ad95c2a16bca4..ae86ec65959d7e 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -949,7 +949,7 @@ def main(): parser.add_argument("-N", "--name", help="The name used as part of generating the uuid. " "Only required for uuid3/uuid5 functions.") - parser.add_argument("-c", "--count", metavar="NUM", type=int, default=1, + parser.add_argument("-C", "--count", metavar="NUM", type=int, default=1, help="Generate NUM fresh UUIDs.") args = parser.parse_args() From e34e8b4725d2779879a9679d7443bd6fe6ce83b6 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 13:00:12 +0100 Subject: [PATCH 07/19] "UUID" --- Doc/library/uuid.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Doc/library/uuid.rst b/Doc/library/uuid.rst index dcca0dc08e16be..aecd948e16723e 100644 --- a/Doc/library/uuid.rst +++ b/Doc/library/uuid.rst @@ -439,18 +439,18 @@ Here are some examples of typical usage of the :mod:`uuid` module:: Command-Line Example -------------------- -Here are some examples of typical usage of the :mod:`uuid` command line interface: +Here are some examples of typical usage of the :mod:`uuid` command-line interface: .. code-block:: shell - # generate a random uuid - by default uuid4() is used + # generate a random UUID - by default uuid4() is used $ python -m uuid - # generate a uuid using uuid1() + # generate a UUID using uuid1() $ python -m uuid -u uuid1 - # generate a uuid using uuid5 + # generate a UUID using uuid5 $ python -m uuid -u uuid5 -n @url -N example.com - # generate 42 random uuids + # generate 42 random UUIDs $ python -m uuid --count 42 From 3cab8b2c206452e9937f1003eee1aa583b87b2ff Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 13:01:05 +0100 Subject: [PATCH 08/19] uuid -C --- Doc/library/uuid.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Doc/library/uuid.rst b/Doc/library/uuid.rst index aecd948e16723e..cc24f84f4b82bb 100644 --- a/Doc/library/uuid.rst +++ b/Doc/library/uuid.rst @@ -453,4 +453,4 @@ Here are some examples of typical usage of the :mod:`uuid` command-line interfac $ python -m uuid -u uuid5 -n @url -N example.com # generate 42 random UUIDs - $ python -m uuid --count 42 + $ python -m uuid -C 42 From 5b5f34a1d43eacd3d716fc64e72d3257d7aa7833 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 13:05:17 +0100 Subject: [PATCH 09/19] test_cli_uuid4_outputted_with_count --- Lib/test/test_uuid.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Lib/test/test_uuid.py b/Lib/test/test_uuid.py index bcc673233f6588..91210923991f8e 100755 --- a/Lib/test/test_uuid.py +++ b/Lib/test/test_uuid.py @@ -1166,6 +1166,20 @@ def test_cli_uuid4_outputted_with_no_args(self): self.assertEqual(output, str(uuid_output)) self.assertEqual(uuid_output.version, 4) + @mock.patch.object(sys, "argv", ["", "-C", "3"]) + def test_cli_uuid4_outputted_with_count(self): + stdout = io.StringIO() + with contextlib.redirect_stdout(stdout): + self.uuid.main() + + output = stdout.getvalue().strip().splitlines() + + # Check that 3 UUIDs in the format of uuid4 have been generated + self.assertEqual(len(output), 3) + for o in output: + uuid_output = self.uuid.UUID(o) + self.assertEqual(uuid_output.version, 4) + @mock.patch.object(sys, "argv", ["", "-u", "uuid3", "-n", "@dns", "-N", "python.org"]) def test_cli_uuid3_ouputted_with_valid_namespace_and_name(self): From 4577a992c7a8cd39a19bf5a7e4de9330498c4775 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 13:09:56 +0100 Subject: [PATCH 10/19] Add 3.14 news --- Doc/whatsnew/3.14.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Doc/whatsnew/3.14.rst b/Doc/whatsnew/3.14.rst index 65ab57eb821c6c..54008f22d5aeb6 100644 --- a/Doc/whatsnew/3.14.rst +++ b/Doc/whatsnew/3.14.rst @@ -1390,6 +1390,12 @@ urllib :func:`~urllib.request.build_opener`. (Contributed by Barney Gale in :gh:`84850`.) +uuid +---- + +* Allow to generate multiple UUIDs at once via :option:`python -m uuid --count `. + (Contributed by Simon Legner in :gh:`131236`.) + Others ------ From 6ea8b3a51ce655e3500d77ea624ea794b84dcc33 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 13:24:20 +0100 Subject: [PATCH 11/19] Add 3.14 news --- Doc/whatsnew/3.14.rst | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Doc/whatsnew/3.14.rst b/Doc/whatsnew/3.14.rst index 54008f22d5aeb6..ae3e5ea4a39a8d 100644 --- a/Doc/whatsnew/3.14.rst +++ b/Doc/whatsnew/3.14.rst @@ -978,6 +978,9 @@ uuid Nil and Max UUID formats as defined by :rfc:`9562`. (Contributed by Nick Pope in :gh:`128427`.) +* Allow to generate multiple UUIDs at once via :option:`python -m uuid --count `. + (Contributed by Simon Legner in :gh:`131236`.) + zipinfo ------- @@ -1390,11 +1393,6 @@ urllib :func:`~urllib.request.build_opener`. (Contributed by Barney Gale in :gh:`84850`.) -uuid ----- - -* Allow to generate multiple UUIDs at once via :option:`python -m uuid --count `. - (Contributed by Simon Legner in :gh:`131236`.) Others ------ From 206caad1fb6fa7ebef9d09714e63c5006b9d2e42 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 13:25:32 +0100 Subject: [PATCH 12/19] Add 3.14 news --- Doc/whatsnew/3.14.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/Doc/whatsnew/3.14.rst b/Doc/whatsnew/3.14.rst index ae3e5ea4a39a8d..d0926a6fca637c 100644 --- a/Doc/whatsnew/3.14.rst +++ b/Doc/whatsnew/3.14.rst @@ -1393,7 +1393,6 @@ urllib :func:`~urllib.request.build_opener`. (Contributed by Barney Gale in :gh:`84850`.) - Others ------ From b3ef5e64ed4b0a068837cdba47a2ea8c2b589628 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 16:33:01 +0100 Subject: [PATCH 13/19] "UUID" --- Lib/uuid.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Lib/uuid.py b/Lib/uuid.py index ae86ec65959d7e..e9856da749da14 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -937,9 +937,9 @@ def main(): import argparse parser = argparse.ArgumentParser( - description="Generates a uuid using the selected uuid function.") + description="Generate a UUID using the selected UUID function.") parser.add_argument("-u", "--uuid", choices=uuid_funcs.keys(), default="uuid4", - help="The function to use to generate the uuid. " + help="The function to use to generate the UUID. " "By default uuid4 function is used.") parser.add_argument("-n", "--namespace", help="The namespace is a UUID, or '@ns' where 'ns' is a " @@ -947,7 +947,7 @@ def main(): "Such as @dns, @url, @oid, and @x500. " "Only required for uuid3/uuid5 functions.") parser.add_argument("-N", "--name", - help="The name used as part of generating the uuid. " + help="The name used as part of generating the UUID. " "Only required for uuid3/uuid5 functions.") parser.add_argument("-C", "--count", metavar="NUM", type=int, default=1, help="Generate NUM fresh UUIDs.") From 33f7cd1a8acf7384f145bb661d12868345e25fe3 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 16:40:49 +0100 Subject: [PATCH 14/19] ArgumentDefaultsHelpFormatter --- Lib/uuid.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Lib/uuid.py b/Lib/uuid.py index e9856da749da14..79f2801e90e64b 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -937,20 +937,20 @@ def main(): import argparse parser = argparse.ArgumentParser( + formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="Generate a UUID using the selected UUID function.") parser.add_argument("-u", "--uuid", choices=uuid_funcs.keys(), default="uuid4", - help="The function to use to generate the UUID. " - "By default uuid4 function is used.") - parser.add_argument("-n", "--namespace", - help="The namespace is a UUID, or '@ns' where 'ns' is a " - "well-known predefined UUID addressed by namespace name. " - "Such as @dns, @url, @oid, and @x500. " - "Only required for uuid3/uuid5 functions.") + help="function to generate the UUID") + parser.add_argument("-n", "--namespace", metavar="NS", + help="a UUID, or '@ns' where 'ns' is a " + "well-known predefined UUID addressed by namespace name, " + "such as @dns, @url, @oid, and @x500 " + "(only required for uuid3/uuid5)") parser.add_argument("-N", "--name", - help="The name used as part of generating the UUID. " - "Only required for uuid3/uuid5 functions.") + help="name used as part of generating the UUID " + "(only required for uuid3/uuid5)") parser.add_argument("-C", "--count", metavar="NUM", type=int, default=1, - help="Generate NUM fresh UUIDs.") + help="generate NUM fresh UUIDs") args = parser.parse_args() uuid_func = uuid_funcs[args.uuid] From 43ee1abc1aa08f65afbafe0d96a4723dc2c7867f Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 16:42:35 +0100 Subject: [PATCH 15/19] namespace --- Lib/uuid.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Lib/uuid.py b/Lib/uuid.py index 79f2801e90e64b..01117fe7f1e428 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -942,9 +942,8 @@ def main(): parser.add_argument("-u", "--uuid", choices=uuid_funcs.keys(), default="uuid4", help="function to generate the UUID") parser.add_argument("-n", "--namespace", metavar="NS", - help="a UUID, or '@ns' where 'ns' is a " - "well-known predefined UUID addressed by namespace name, " - "such as @dns, @url, @oid, and @x500 " + help="a UUID, or @dns, @url, @oid, @x500, or any '@ns' where 'ns' is a " + "well-known predefined UUID addressed by namespace name " "(only required for uuid3/uuid5)") parser.add_argument("-N", "--name", help="name used as part of generating the UUID " From e7c214fd6d3944be7a086fbd5614e9d0b1b5dde4 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 17:06:40 +0100 Subject: [PATCH 16/19] namespace --- Lib/uuid.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Lib/uuid.py b/Lib/uuid.py index 01117fe7f1e428..f31c34136c49b2 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -941,9 +941,8 @@ def main(): description="Generate a UUID using the selected UUID function.") parser.add_argument("-u", "--uuid", choices=uuid_funcs.keys(), default="uuid4", help="function to generate the UUID") - parser.add_argument("-n", "--namespace", metavar="NS", - help="a UUID, or @dns, @url, @oid, @x500, or any '@ns' where 'ns' is a " - "well-known predefined UUID addressed by namespace name " + parser.add_argument("-n", "--namespace", choices=["any UUID", *namespaces.keys()], + help="a UUID, or a well-known predefined UUID addressed by namespace name " "(only required for uuid3/uuid5)") parser.add_argument("-N", "--name", help="name used as part of generating the UUID " From 1a6ad787555e3f6b8f76886e0ee746afc0bef0f1 Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Fri, 14 Mar 2025 17:14:11 +0100 Subject: [PATCH 17/19] namespace --- Lib/uuid.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Lib/uuid.py b/Lib/uuid.py index f31c34136c49b2..105ecdf052f7a7 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -942,11 +942,9 @@ def main(): parser.add_argument("-u", "--uuid", choices=uuid_funcs.keys(), default="uuid4", help="function to generate the UUID") parser.add_argument("-n", "--namespace", choices=["any UUID", *namespaces.keys()], - help="a UUID, or a well-known predefined UUID addressed by namespace name " - "(only required for uuid3/uuid5)") + help="uuid3/uuid5 only: a UUID, or a well-known predefined UUID addressed by namespace name)") parser.add_argument("-N", "--name", - help="name used as part of generating the UUID " - "(only required for uuid3/uuid5)") + help="uuid3/uuid5 only: name used as part of generating the UUID") parser.add_argument("-C", "--count", metavar="NUM", type=int, default=1, help="generate NUM fresh UUIDs") From 1acb59403d41ff95c7de194e07b512ba914f0ece Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Sat, 15 Mar 2025 18:27:00 +0100 Subject: [PATCH 18/19] wrap lines --- Lib/uuid.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Lib/uuid.py b/Lib/uuid.py index 105ecdf052f7a7..fbefa08d107106 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -942,9 +942,12 @@ def main(): parser.add_argument("-u", "--uuid", choices=uuid_funcs.keys(), default="uuid4", help="function to generate the UUID") parser.add_argument("-n", "--namespace", choices=["any UUID", *namespaces.keys()], - help="uuid3/uuid5 only: a UUID, or a well-known predefined UUID addressed by namespace name)") + help="uuid3/uuid5 only: " + "a UUID, or a well-known predefined UUID addressed " + "by namespace name)") parser.add_argument("-N", "--name", - help="uuid3/uuid5 only: name used as part of generating the UUID") + help="uuid3/uuid5 only: " + "name used as part of generating the UUID") parser.add_argument("-C", "--count", metavar="NUM", type=int, default=1, help="generate NUM fresh UUIDs") From 03ec58b020fe04217fe0f06a61fdb1269db3242b Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Sat, 15 Mar 2025 20:59:12 +0100 Subject: [PATCH 19/19] wrap lines --- Lib/uuid.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Lib/uuid.py b/Lib/uuid.py index fbefa08d107106..984981512d64a6 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -939,12 +939,15 @@ def main(): parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter, description="Generate a UUID using the selected UUID function.") - parser.add_argument("-u", "--uuid", choices=uuid_funcs.keys(), default="uuid4", + parser.add_argument("-u", "--uuid", + choices=uuid_funcs.keys(), + default="uuid4", help="function to generate the UUID") - parser.add_argument("-n", "--namespace", choices=["any UUID", *namespaces.keys()], + parser.add_argument("-n", "--namespace", + choices=["any UUID", *namespaces.keys()], help="uuid3/uuid5 only: " "a UUID, or a well-known predefined UUID addressed " - "by namespace name)") + "by namespace name") parser.add_argument("-N", "--name", help="uuid3/uuid5 only: " "name used as part of generating the UUID")