From 9a19447213c53f7ba19f9dad5206a462ab31fcf0 Mon Sep 17 00:00:00 2001 From: Henry Baldursson Date: Sat, 8 Feb 2020 17:21:25 +0000 Subject: [PATCH] Use unidecode to handle unicode characters in constant names (#1080) --- graphene/utils/str_converters.py | 3 ++- graphene/utils/tests/test_str_converters.py | 4 ++++ setup.py | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/graphene/utils/str_converters.py b/graphene/utils/str_converters.py index 216b0547..9ac8461f 100644 --- a/graphene/utils/str_converters.py +++ b/graphene/utils/str_converters.py @@ -1,4 +1,5 @@ import re +from unidecode import unidecode # Adapted from this response in Stackoverflow @@ -18,4 +19,4 @@ def to_snake_case(name): def to_const(string): - return re.sub(r"[\W|^]+", "_", string).upper() # noqa + return re.sub(r"[\W|^]+", "_", unidecode(string)).upper() diff --git a/graphene/utils/tests/test_str_converters.py b/graphene/utils/tests/test_str_converters.py index 786149d9..d765906c 100644 --- a/graphene/utils/tests/test_str_converters.py +++ b/graphene/utils/tests/test_str_converters.py @@ -21,3 +21,7 @@ def test_camel_case(): def test_to_const(): assert to_const('snakes $1. on a "#plane') == "SNAKES_1_ON_A_PLANE" + + +def test_to_const_unicode(): + assert to_const("Skoða þetta unicode stöff") == "SKODA_THETTA_UNICODE_STOFF" diff --git a/setup.py b/setup.py index 58ec7345..d7077f0c 100644 --- a/setup.py +++ b/setup.py @@ -86,6 +86,7 @@ setup( "graphql-core>=3.0.0,<4", "graphql-relay>=3.0.0,<4", "aniso8601>=6,<9", + "unidecode>=1.1.1,<2", ], tests_require=tests_require, extras_require={"test": tests_require, "dev": dev_requires},