From 7f64dcf7b52bec5843ac4341b70d166e13c811bc Mon Sep 17 00:00:00 2001 From: wangpeibao Date: Tue, 26 May 2020 16:13:23 +0800 Subject: [PATCH 1/7] add frozenset to field_class_to_schema --- pydantic/schema.py | 1 + 1 file changed, 1 insertion(+) diff --git a/pydantic/schema.py b/pydantic/schema.py index 3ca516a906..0d0d351788 100644 --- a/pydantic/schema.py +++ b/pydantic/schema.py @@ -623,6 +623,7 @@ def field_singleton_sub_fields_schema( (list, {'type': 'array', 'items': {}}), (tuple, {'type': 'array', 'items': {}}), (set, {'type': 'array', 'items': {}, 'uniqueItems': True}), + (frozenset, {'type': 'array', 'item': {}, 'uniqueItems': True}), ) json_scheme = {'type': 'string', 'format': 'json-string'} From 21781584f02d1b0add813d79bc6a57b2d590dd30 Mon Sep 17 00:00:00 2001 From: wangpeibao Date: Tue, 26 May 2020 16:39:12 +0800 Subject: [PATCH 2/7] add change.md --- changes/1557-wangpeibao.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 changes/1557-wangpeibao.md diff --git a/changes/1557-wangpeibao.md b/changes/1557-wangpeibao.md new file mode 100644 index 0000000000..93eae4c0d1 --- /dev/null +++ b/changes/1557-wangpeibao.md @@ -0,0 +1,2 @@ +change schema.py/field_class_to_schema +add frozenset type to the tuple From c2116eb462d94483e47df8270b460d9ab842d3ca Mon Sep 17 00:00:00 2001 From: wangpeibao Date: Mon, 1 Jun 2020 17:25:34 +0800 Subject: [PATCH 3/7] add my test --- changes/index-1.html | 3 +++ pydantic/schema.py | 2 +- tests/test_schema.py | 7 ++++++- 3 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 changes/index-1.html diff --git a/changes/index-1.html b/changes/index-1.html new file mode 100644 index 0000000000..302384d261 --- /dev/null +++ b/changes/index-1.html @@ -0,0 +1,3 @@ +未知 +

Fix model validation to handle nested literals, e.g. Literal['foo', Literal['bar']].

+ \ No newline at end of file diff --git a/pydantic/schema.py b/pydantic/schema.py index 0d0d351788..9562e74b46 100644 --- a/pydantic/schema.py +++ b/pydantic/schema.py @@ -623,7 +623,7 @@ def field_singleton_sub_fields_schema( (list, {'type': 'array', 'items': {}}), (tuple, {'type': 'array', 'items': {}}), (set, {'type': 'array', 'items': {}, 'uniqueItems': True}), - (frozenset, {'type': 'array', 'item': {}, 'uniqueItems': True}), + (frozenset, {'type': 'array', 'items': {}, 'uniqueItems': True}), ) json_scheme = {'type': 'string', 'format': 'json-string'} diff --git a/tests/test_schema.py b/tests/test_schema.py index ce447d5ec7..a068fc8000 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -1837,7 +1837,10 @@ class Model(BaseModel): def test_frozen_set(): class Model(BaseModel): a: FrozenSet[int] = frozenset({1, 2, 3}) + b: FrozenSet = frozenset({1, 2, 3}) + c: frozenset = frozenset({1, 2, 3}) + print(Model.schema()) assert Model.schema() == { 'title': 'Model', 'type': 'object', @@ -1848,7 +1851,9 @@ class Model(BaseModel): 'type': 'array', 'items': {'type': 'integer'}, 'uniqueItems': True, - } + }, + 'b': {'title': 'B', 'default': frozenset({1, 2, 3}), 'type': 'array', 'items': {}, 'uniqueItems': True}, + 'c': {'title': 'C', 'default': frozenset({1, 2, 3}), 'type': 'array', 'items': {}, 'uniqueItems': True}, }, } From 2b16d69b74e6f5251d0fc171f1de921f6c136c82 Mon Sep 17 00:00:00 2001 From: wangpeibao Date: Tue, 2 Jun 2020 08:44:21 +0800 Subject: [PATCH 4/7] format my test --- changes/1557-wangpeibao.md | 3 +-- changes/index-1.html | 3 --- tests/test_schema.py | 3 +++ 3 files changed, 4 insertions(+), 5 deletions(-) delete mode 100644 changes/index-1.html diff --git a/changes/1557-wangpeibao.md b/changes/1557-wangpeibao.md index 93eae4c0d1..f4aa9355c1 100644 --- a/changes/1557-wangpeibao.md +++ b/changes/1557-wangpeibao.md @@ -1,2 +1 @@ -change schema.py/field_class_to_schema -add frozenset type to the tuple +change `schema.field_class_to_schema` to support `frozenset` in schema. diff --git a/changes/index-1.html b/changes/index-1.html deleted file mode 100644 index 302384d261..0000000000 --- a/changes/index-1.html +++ /dev/null @@ -1,3 +0,0 @@ -未知 -

Fix model validation to handle nested literals, e.g. Literal['foo', Literal['bar']].

- \ No newline at end of file diff --git a/tests/test_schema.py b/tests/test_schema.py index a068fc8000..42f3e779ab 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -1839,6 +1839,7 @@ class Model(BaseModel): a: FrozenSet[int] = frozenset({1, 2, 3}) b: FrozenSet = frozenset({1, 2, 3}) c: frozenset = frozenset({1, 2, 3}) + d: frozenset = ... print(Model.schema()) assert Model.schema() == { @@ -1854,7 +1855,9 @@ class Model(BaseModel): }, 'b': {'title': 'B', 'default': frozenset({1, 2, 3}), 'type': 'array', 'items': {}, 'uniqueItems': True}, 'c': {'title': 'C', 'default': frozenset({1, 2, 3}), 'type': 'array', 'items': {}, 'uniqueItems': True}, + 'd': {'title': 'D', 'type': 'array', 'items': {}, 'uniqueItems': True}, }, + 'required': ['d'], } From 19186d64ecb1cb2c534c620313bf8e33ce7a89a7 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Tue, 2 Jun 2020 09:57:13 +0100 Subject: [PATCH 5/7] remove print() --- tests/test_schema.py | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/test_schema.py b/tests/test_schema.py index 42f3e779ab..3175345332 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -1841,7 +1841,6 @@ class Model(BaseModel): c: frozenset = frozenset({1, 2, 3}) d: frozenset = ... - print(Model.schema()) assert Model.schema() == { 'title': 'Model', 'type': 'object', From 9e723edc7216ed959664f61c02817477a617271b Mon Sep 17 00:00:00 2001 From: wangpeibao Date: Tue, 2 Jun 2020 17:45:00 +0800 Subject: [PATCH 6/7] just test --- tests/test_schema.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_schema.py b/tests/test_schema.py index 3175345332..3ffcfe90df 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -1841,6 +1841,8 @@ class Model(BaseModel): c: frozenset = frozenset({1, 2, 3}) d: frozenset = ... + print('test') + assert Model.schema() == { 'title': 'Model', 'type': 'object', From 6e536486bb387dee8a51d314ff9cbd16b4141e2c Mon Sep 17 00:00:00 2001 From: wangpeibao Date: Tue, 2 Jun 2020 17:53:36 +0800 Subject: [PATCH 7/7] return to original code --- tests/test_schema.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/test_schema.py b/tests/test_schema.py index 3ffcfe90df..3175345332 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -1841,8 +1841,6 @@ class Model(BaseModel): c: frozenset = frozenset({1, 2, 3}) d: frozenset = ... - print('test') - assert Model.schema() == { 'title': 'Model', 'type': 'object',