From d125bd36a84c611b22e2a33e30fc99ebf4fa65e6 Mon Sep 17 00:00:00 2001 From: bogdan_dm Date: Sun, 3 May 2020 14:38:06 +0300 Subject: [PATCH] Add more reserved keywords --- json_to_models/models/base.py | 5 ++++- test/test_code_generation/test_attrs_generation.py | 6 +++--- test/test_code_generation/test_dataclasses_generation.py | 9 +++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/json_to_models/models/base.py b/json_to_models/models/base.py index 507f1be..c9bd596 100644 --- a/json_to_models/models/base.py +++ b/json_to_models/models/base.py @@ -21,6 +21,9 @@ "{% endfor %}" keywords_set = set(keyword.kwlist) +builtins_set = set(__builtins__.keys()) +other_common_names_set = {'datetime', 'time', 'date', 'defaultdict'} +blacklist_words = frozenset(keywords_set | builtins_set | other_common_names_set) ones = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'] @@ -243,7 +246,7 @@ def sort_kwargs(kwargs: dict, ordering: Iterable[Iterable[str]]) -> dict: def prepare_label(s: str, convert_unicode: bool) -> str: - if s in keywords_set: + if s in blacklist_words: s += "_" if convert_unicode: s = unidecode(s) diff --git a/test/test_code_generation/test_attrs_generation.py b/test/test_code_generation/test_attrs_generation.py index c807ab2..fe4eeb5 100644 --- a/test/test_code_generation/test_attrs_generation.py +++ b/test/test_code_generation/test_attrs_generation.py @@ -121,9 +121,9 @@ class Test: "body": "attr.ib(default=None)" }, "dict": { - "name": "dict", + "name": "dict_", "type": "Dict[str, int]", - "body": "attr.ib()" + "body": f"attr.ib({field_meta('dict')})" }, "not": { "name": "not_", @@ -154,7 +154,7 @@ class Test: class Test: foo: int = attr.ib() qwerty: FloatString = attr.ib() - dict: Dict[str, int] = attr.ib() + dict_: Dict[str, int] = attr.ib({field_meta('dict')}) not_: bool = attr.ib({field_meta('not')}) one_day: int = attr.ib({field_meta('1day')}) den_nedeli: str = attr.ib({field_meta('день_недели')}) diff --git a/test/test_code_generation/test_dataclasses_generation.py b/test/test_code_generation/test_dataclasses_generation.py index ddbdd59..4eecf32 100644 --- a/test/test_code_generation/test_dataclasses_generation.py +++ b/test/test_code_generation/test_dataclasses_generation.py @@ -94,11 +94,12 @@ class Test: "body": "None" }, "dict": { - "name": "dict", - "type": "Dict[str, int]" + "name": "dict_", + "type": "Dict[str, int]", + "body": f"field({field_meta('dict')})" } }, - "generated": trim(""" + "generated": trim(f""" from dataclasses import dataclass, field from json_to_models.dynamic_typing import FloatString, IntString from json_to_models.models import ClassType @@ -111,7 +112,7 @@ class Test: class Test: foo: int qwerty: FloatString - dict: Dict[str, int] + dict_: Dict[str, int] = field({field_meta('dict')}) baz: Optional[List[List[str]]] = field(default_factory=list) bar: Optional[IntString] = None asdfg: Optional[int] = None