diff --git a/graphene/utils/str_converters.py b/graphene/utils/str_converters.py index 216b0547..00e2196c 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() # noqa diff --git a/graphene/utils/tests/test_str_converters.py b/graphene/utils/tests/test_str_converters.py index 786149d9..b11cda91 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},