New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(schema): add basic support of Pattern type in schema generation #1768
Conversation
Codecov Report
@@ Coverage Diff @@
## master #1768 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 21 21
Lines 3895 3895
Branches 783 783
=========================================
Hits 3895 3895
Continue to review full report at Codecov.
|
Hi PrettyWood, Thanks for the PR. I think it would be better if we provide a format, for exemple: This is because with a model like this: class Model(BaseModel):
filter: Pattern = '^regex$' the property It is not the same as What do you think ? Also we may need to add this new type in the doc: https://pydantic-docs.helpmanual.io/usage/schema/#json-schema-types [edit] typo |
03a1517
to
59fdcb8
Compare
Hi @Gatux Do not hesitate to tell me if you see anything else wrong / to be modified |
7ebb75c
to
9148cc7
Compare
Hi @PrettyWood |
9148cc7
to
d239b2b
Compare
d239b2b
to
3df1556
Compare
@@ -643,7 +645,8 @@ def add_field_type_to_schema(field_type: Any, schema: Dict[str, Any]) -> None: | |||
and then modifies the given `schema` with the information from that type. | |||
""" | |||
for type_, t_schema in field_class_to_schema: | |||
if issubclass(field_type, type_): | |||
# Fallback for `typing.Pattern` as it is not a valid class | |||
if lenient_issubclass(field_type, type_) or field_type is type_ is Pattern: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We may have a better check later to support for example Pattern[str]
but typing
API changed so much that we'll probably first need some utils to retrieve the right informations depending on python version.
I feel like this is a good enough solution for the time being
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 thanks so much. |
* commit '8ccc5708f120f65582cf9238592c6004efffc32d': (22 commits) remove data.json, fix pydantic#1992 (pydantic#1994) Include tests in source distributions (pydantic#1976) Fix const validator not running when class validators are present (pydantic#1957) Force fields.Undefined to be a singleton objectIn various places of the code, we compare directly to `fields.Undefined`since we assume it to be constant.When new models get created however, the object is deepcopied andis no longer identical with the original object.We therefore add `__copy__` and `__deepcopy__` methods to ensurethat the copied objects are actually the same original object. (pydantic#1981) test_config_file_settings_nornir: use less common env. var names (pydantic#1977) fix linting docs: fix typo (pydantic#1959) - fix typo in docs/index.md (pydantic#1921) Fix typo in docstring (pydantic#1866) add a __call__ stub to PyObject for mypy (pydantic#1849) remove strict_optional from sample mypy.ini in doc (pydantic#1830) docs: Fix incorrect description of copy method (pydantic#1821) feat(tools): add `parse_raw_as` util (pydantic#1813) Bump isort from 5.5.4 to 5.6.1 (pydantic#1980) feat(dotenv): support home directory relative paths (e.g. ~/.env) (pydantic#1804) combined uprev of dependencies (pydantic#1978) Bump pytest from 6.0.1 to 6.1.1 (pydantic#1965) clarify argument type to parse_file (pydantic#1795) Fix pydantic#1770 (pydantic#1771) fix(schema): add basic support of Pattern type in schema generation (pydantic#1768) ... # Conflicts: # docs/index.md # docs/mypy_plugin.md
Change Summary
Since
typing.Pattern
is not a valid type, an error is raised when generating the schema.This PR adds a basic support for it.
Related issue number
closes #1767
closes #1269
Checklist
changes/<pull request or issue id>-<github username>.md
file added describing change(see changes/README.md for details)