From e5a6ee5c373cc0014e47b4437d9181fad5c20245 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Mar 2024 14:41:18 +0900 Subject: [PATCH 1/4] Bump packaging from 23.2 to 24.0 (#1881) Bumps [packaging](https://github.com/pypa/packaging) from 23.2 to 24.0. - [Release notes](https://github.com/pypa/packaging/releases) - [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pypa/packaging/compare/23.2...24.0) --- updated-dependencies: - dependency-name: packaging dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/poetry.lock b/poetry.lock index 72bfb9830..aeb83d856 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1067,13 +1067,13 @@ typing-extensions = {version = ">=4.5.0,<5.0.0", markers = "python_version < \"3 [[package]] name = "packaging" -version = "23.2" +version = "24.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] [[package]] From f89af5536b70005db826d5f27a838ff27b68fbaa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 16 Mar 2024 14:41:38 +0900 Subject: [PATCH 2/4] Bump ruff from 0.3.1 to 0.3.2 (#1882) Bumps [ruff](https://github.com/astral-sh/ruff) from 0.3.1 to 0.3.2. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/v0.3.1...v0.3.2) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- poetry.lock | 38 +++++++++++++++++++------------------- pyproject.toml | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/poetry.lock b/poetry.lock index aeb83d856..3b9bd5596 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1644,28 +1644,28 @@ files = [ [[package]] name = "ruff" -version = "0.3.1" +version = "0.3.2" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.3.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:6b82e3937d0d76554cd5796bc3342a7d40de44494d29ff490022d7a52c501744"}, - {file = "ruff-0.3.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ae7954c8f692b70e6a206087ae3988acc9295d84c550f8d90b66c62424c16771"}, - {file = "ruff-0.3.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b730f56ccf91225da0f06cfe421e83b8cc27b2a79393db9c3df02ed7e2bbc01"}, - {file = "ruff-0.3.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c78bfa85637668f47bd82aa2ae17de2b34221ac23fea30926f6409f9e37fc927"}, - {file = "ruff-0.3.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6abaad602d6e6daaec444cbf4d9364df0a783e49604c21499f75bb92237d4af"}, - {file = "ruff-0.3.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5f0c21b6914c3c9a25a59497cbb1e5b6c2d8d9beecc9b8e03ee986e24eee072e"}, - {file = "ruff-0.3.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:434c3fc72e6311c85cd143c4c448b0e60e025a9ac1781e63ba222579a8c29200"}, - {file = "ruff-0.3.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78a7025e6312cbba496341da5062e7cdd47d95f45c1b903e635cdeb1ba5ec2b9"}, - {file = "ruff-0.3.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52b02bb46f1a79b0c1fa93f6495bc7e77e4ef76e6c28995b4974a20ed09c0833"}, - {file = "ruff-0.3.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11b5699c42f7d0b771c633d620f2cb22e727fb226273aba775a91784a9ed856c"}, - {file = "ruff-0.3.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:54e5dca3e411772b51194b3102b5f23b36961e8ede463776b289b78180df71a0"}, - {file = "ruff-0.3.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:951efb610c5844e668bbec4f71cf704f8645cf3106e13f283413969527ebfded"}, - {file = "ruff-0.3.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:09c7333b25e983aabcf6e38445252cff0b4745420fc3bda45b8fce791cc7e9ce"}, - {file = "ruff-0.3.1-py3-none-win32.whl", hash = "sha256:d937f9b99ebf346e0606c3faf43c1e297a62ad221d87ef682b5bdebe199e01f6"}, - {file = "ruff-0.3.1-py3-none-win_amd64.whl", hash = "sha256:c0318a512edc9f4e010bbaab588b5294e78c5cdc9b02c3d8ab2d77c7ae1903e3"}, - {file = "ruff-0.3.1-py3-none-win_arm64.whl", hash = "sha256:d3b60e44240f7e903e6dbae3139a65032ea4c6f2ad99b6265534ff1b83c20afa"}, - {file = "ruff-0.3.1.tar.gz", hash = "sha256:d30db97141fc2134299e6e983a6727922c9e03c031ae4883a6d69461de722ae7"}, + {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:77f2612752e25f730da7421ca5e3147b213dca4f9a0f7e0b534e9562c5441f01"}, + {file = "ruff-0.3.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9966b964b2dd1107797be9ca7195002b874424d1d5472097701ae8f43eadef5d"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b83d17ff166aa0659d1e1deaf9f2f14cbe387293a906de09bc4860717eb2e2da"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb875c6cc87b3703aeda85f01c9aebdce3d217aeaca3c2e52e38077383f7268a"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be75e468a6a86426430373d81c041b7605137a28f7014a72d2fc749e47f572aa"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:967978ac2d4506255e2f52afe70dda023fc602b283e97685c8447d036863a302"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1231eacd4510f73222940727ac927bc5d07667a86b0cbe822024dd00343e77e9"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2c6d613b19e9a8021be2ee1d0e27710208d1603b56f47203d0abbde906929a9b"}, + {file = "ruff-0.3.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8439338a6303585d27b66b4626cbde89bb3e50fa3cae86ce52c1db7449330a7"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:de8b480d8379620cbb5ea466a9e53bb467d2fb07c7eca54a4aa8576483c35d36"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b74c3de9103bd35df2bb05d8b2899bf2dbe4efda6474ea9681280648ec4d237d"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f380be9fc15a99765c9cf316b40b9da1f6ad2ab9639e551703e581a5e6da6745"}, + {file = "ruff-0.3.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:0ac06a3759c3ab9ef86bbeca665d31ad3aa9a4b1c17684aadb7e61c10baa0df4"}, + {file = "ruff-0.3.2-py3-none-win32.whl", hash = "sha256:9bd640a8f7dd07a0b6901fcebccedadeb1a705a50350fb86b4003b805c81385a"}, + {file = "ruff-0.3.2-py3-none-win_amd64.whl", hash = "sha256:0c1bdd9920cab5707c26c8b3bf33a064a4ca7842d91a99ec0634fec68f9f4037"}, + {file = "ruff-0.3.2-py3-none-win_arm64.whl", hash = "sha256:5f65103b1d76e0d600cabd577b04179ff592064eaa451a70a81085930e907d0b"}, + {file = "ruff-0.3.2.tar.gz", hash = "sha256:fa78ec9418eb1ca3db392811df3376b46471ae93792a81af2d1cbb0e5dcb5142"}, ] [[package]] @@ -1956,4 +1956,4 @@ validation = ["openapi-spec-validator", "prance"] [metadata] lock-version = "2.0" python-versions = "^3.7" -content-hash = "33d7cf0f3e7e495b581e1a9abb9be0cccee60427b4d40f2699b87978516c43f5" +content-hash = "7fbdf086cb27d357eb64be9bd0f8016b729d6445773d6301efa838cf7b5ede0d" diff --git a/pyproject.toml b/pyproject.toml index 42822d6b4..c797b2f9f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,7 +78,7 @@ types-setuptools = ">=67.6.0.5,<70.0.0.0" pydantic = "*" httpx = ">=0.24.1" PySnooper = "*" -ruff = ">=0.0.290,<0.3.2" +ruff = ">=0.0.290,<0.3.3" ruff-lsp = ">=0.0.39,<0.0.41" pre-commit = "*" pytest-xdist = "^3.3.1" From 862a98cb7ea905f94a78949246e6d7278c8055ef Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 16 Mar 2024 14:42:22 +0900 Subject: [PATCH 3/4] [pre-commit.ci] pre-commit autoupdate (#1883) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [pre-commit.ci] pre-commit autoupdate updates: - [github.com/astral-sh/ruff-pre-commit: v0.2.2 → v0.3.2](https://github.com/astral-sh/ruff-pre-commit/compare/v0.2.2...v0.3.2) * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- datamodel_code_generator/__init__.py | 3 +- datamodel_code_generator/__main__.py | 3 +- datamodel_code_generator/format.py | 15 ++++------ datamodel_code_generator/model/base.py | 3 +- datamodel_code_generator/parser/base.py | 30 +++++++++---------- datamodel_code_generator/parser/jsonschema.py | 6 ++-- datamodel_code_generator/util.py | 3 +- 8 files changed, 29 insertions(+), 36 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f70276fd7..33702a7be 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: 'v0.2.2' + rev: 'v0.3.2' hooks: - id: ruff files: "^datamodel_code_generator|^tests" diff --git a/datamodel_code_generator/__init__.py b/datamodel_code_generator/__init__.py index aaa3e1772..4c18282e9 100644 --- a/datamodel_code_generator/__init__.py +++ b/datamodel_code_generator/__init__.py @@ -58,8 +58,7 @@ def load_yaml_from_path(path: Path, encoding: str) -> Any: if TYPE_CHECKING: - def get_version() -> str: - ... + def get_version() -> str: ... else: diff --git a/datamodel_code_generator/__main__.py b/datamodel_code_generator/__main__.py index 07c5472ef..f72946cee 100644 --- a/datamodel_code_generator/__main__.py +++ b/datamodel_code_generator/__main__.py @@ -94,8 +94,7 @@ def __getitem__(self, item: str) -> Any: if TYPE_CHECKING: @classmethod - def get_fields(cls) -> Dict[str, Any]: - ... + def get_fields(cls) -> Dict[str, Any]: ... else: diff --git a/datamodel_code_generator/format.py b/datamodel_code_generator/format.py index 7eb4a3459..88219057b 100644 --- a/datamodel_code_generator/format.py +++ b/datamodel_code_generator/format.py @@ -76,8 +76,7 @@ def has_typed_dict_non_required(self) -> bool: if TYPE_CHECKING: - class _TargetVersion(Enum): - ... + class _TargetVersion(Enum): ... BLACK_PYTHON_VERSION: Dict[PythonVersion, _TargetVersion] else: @@ -98,8 +97,7 @@ def black_find_project_root(sources: Sequence[Path]) -> Path: def _find_project_root( srcs: Union[Sequence[str], Iterable[str]], - ) -> Union[Tuple[Path, str], Path]: - ... + ) -> Union[Tuple[Path, str], Path]: ... else: from black import find_project_root as _find_project_root @@ -153,9 +151,9 @@ def __init__( f' for wrapping string literal in {black.__version__}' ) elif black.__version__ < '24.1.0': # type: ignore - black_kwargs[ - 'experimental_string_processing' - ] = experimental_string_processing + black_kwargs['experimental_string_processing'] = ( + experimental_string_processing + ) elif experimental_string_processing: black_kwargs['preview'] = True black_kwargs['unstable'] = config.get('unstable', False) @@ -240,8 +238,7 @@ def apply_black(self, code: str) -> str: if TYPE_CHECKING: - def apply_isort(self, code: str) -> str: - ... + def apply_isort(self, code: str) -> str: ... else: if isort.__version__.startswith('4.'): diff --git a/datamodel_code_generator/model/base.py b/datamodel_code_generator/model/base.py index 559dd144b..de62a9628 100644 --- a/datamodel_code_generator/model/base.py +++ b/datamodel_code_generator/model/base.py @@ -267,8 +267,7 @@ def __str__(self) -> str: return self.render() -class BaseClassDataType(DataType): - ... +class BaseClassDataType(DataType): ... UNDEFINED: Any = object() diff --git a/datamodel_code_generator/parser/base.py b/datamodel_code_generator/parser/base.py index a2f6dbbce..51953856e 100644 --- a/datamodel_code_generator/parser/base.py +++ b/datamodel_code_generator/parser/base.py @@ -408,19 +408,19 @@ def __init__( self.base_class: Optional[str] = base_class self.target_python_version: PythonVersion = target_python_version self.results: List[DataModel] = [] - self.dump_resolve_reference_action: Optional[ - Callable[[Iterable[str]], str] - ] = dump_resolve_reference_action + self.dump_resolve_reference_action: Optional[Callable[[Iterable[str]], str]] = ( + dump_resolve_reference_action + ) self.validation: bool = validation self.field_constraints: bool = field_constraints self.snake_case_field: bool = snake_case_field self.strip_default_none: bool = strip_default_none - self.apply_default_values_for_required_fields: ( - bool - ) = apply_default_values_for_required_fields - self.force_optional_for_required_fields: ( - bool - ) = force_optional_for_required_fields + self.apply_default_values_for_required_fields: bool = ( + apply_default_values_for_required_fields + ) + self.force_optional_for_required_fields: bool = ( + force_optional_for_required_fields + ) self.use_schema_description: bool = use_schema_description self.use_field_description: bool = use_field_description self.use_default_kwarg: bool = use_default_kwarg @@ -433,9 +433,9 @@ def __init__( self.use_generic_container_types: bool = use_generic_container_types self.use_union_operator: bool = use_union_operator self.enable_faux_immutability: bool = enable_faux_immutability - self.custom_class_name_generator: Optional[ - Callable[[str], str] - ] = custom_class_name_generator + self.custom_class_name_generator: Optional[Callable[[str], str]] = ( + custom_class_name_generator + ) self.field_extra_keys: Set[str] = field_extra_keys or set() self.field_extra_keys_without_x_prefix: Set[str] = ( field_extra_keys_without_x_prefix or set() @@ -568,9 +568,9 @@ def parse_raw(self) -> None: def __delete_duplicate_models(self, models: List[DataModel]) -> None: model_class_names: Dict[str, DataModel] = {} - model_to_duplicate_models: DefaultDict[ - DataModel, List[DataModel] - ] = defaultdict(list) + model_to_duplicate_models: DefaultDict[DataModel, List[DataModel]] = ( + defaultdict(list) + ) for model in models[:]: if isinstance(model, self.data_model_root_type): root_data_type = model.fields[0].data_type diff --git a/datamodel_code_generator/parser/jsonschema.py b/datamodel_code_generator/parser/jsonschema.py index 16b64a40a..2850751ad 100644 --- a/datamodel_code_generator/parser/jsonschema.py +++ b/datamodel_code_generator/parser/jsonschema.py @@ -632,9 +632,9 @@ def get_ref_data_type(self, ref: str) -> DataType: def set_additional_properties(self, name: str, obj: JsonSchemaObject) -> None: if isinstance(obj.additionalProperties, bool): - self.extra_template_data[name][ - 'additionalProperties' - ] = obj.additionalProperties + self.extra_template_data[name]['additionalProperties'] = ( + obj.additionalProperties + ) def set_title(self, name: str, obj: JsonSchemaObject) -> None: if obj.title: diff --git a/datamodel_code_generator/util.py b/datamodel_code_generator/util.py index 1a1585127..b00b2231e 100644 --- a/datamodel_code_generator/util.py +++ b/datamodel_code_generator/util.py @@ -23,8 +23,7 @@ from typing_extensions import Literal - def load_toml(path: Path) -> Dict[str, Any]: - ... + def load_toml(path: Path) -> Dict[str, Any]: ... else: try: From 33d666688238f98173a65751a3a25da37a46d0c4 Mon Sep 17 00:00:00 2001 From: Brandon Sorensen Date: Sat, 16 Mar 2024 11:57:14 +0100 Subject: [PATCH 4/4] Added support for passing pathlib.Path as a format to JSON schema (#1879) * Added support for passing pathlib.Path as a format to JSON schema * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Added unit test --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Koudai Aono --- datamodel_code_generator/imports.py | 1 + datamodel_code_generator/model/pydantic/types.py | 2 ++ datamodel_code_generator/parser/jsonschema.py | 1 + datamodel_code_generator/types.py | 1 + docs/supported-data-types.md | 1 + tests/parser/test_jsonschema.py | 1 + 6 files changed, 7 insertions(+) diff --git a/datamodel_code_generator/imports.py b/datamodel_code_generator/imports.py index 26c81fc7d..4bd5f266c 100644 --- a/datamodel_code_generator/imports.py +++ b/datamodel_code_generator/imports.py @@ -116,5 +116,6 @@ def remove_referenced_imports(self, reference_path: str) -> None: IMPORT_DECIMAL = Import.from_full_path('decimal.Decimal') IMPORT_DATE = Import.from_full_path('datetime.date') IMPORT_DATETIME = Import.from_full_path('datetime.datetime') +IMPORT_PATH = Import.from_full_path('pathlib.Path') IMPORT_TIME = Import.from_full_path('datetime.time') IMPORT_UUID = Import.from_full_path('uuid.UUID') diff --git a/datamodel_code_generator/model/pydantic/types.py b/datamodel_code_generator/model/pydantic/types.py index 4f2947c07..4256a9987 100644 --- a/datamodel_code_generator/model/pydantic/types.py +++ b/datamodel_code_generator/model/pydantic/types.py @@ -9,6 +9,7 @@ IMPORT_DATE, IMPORT_DATETIME, IMPORT_DECIMAL, + IMPORT_PATH, IMPORT_TIME, IMPORT_UUID, ) @@ -70,6 +71,7 @@ def type_map_factory( Types.binary: data_type(type='bytes'), Types.date: data_type.from_import(IMPORT_DATE), Types.date_time: data_type.from_import(IMPORT_DATETIME), + Types.path: data_type.from_import(IMPORT_PATH), Types.password: data_type.from_import(IMPORT_SECRET_STR), Types.email: data_type.from_import(IMPORT_EMAIL_STR), Types.uuid: data_type.from_import(IMPORT_UUID), diff --git a/datamodel_code_generator/parser/jsonschema.py b/datamodel_code_generator/parser/jsonschema.py index 2850751ad..683be4e67 100644 --- a/datamodel_code_generator/parser/jsonschema.py +++ b/datamodel_code_generator/parser/jsonschema.py @@ -118,6 +118,7 @@ def get_model_by_path( 'date-time': Types.date_time, 'time': Types.time, 'password': Types.password, + 'path': Types.path, 'email': Types.email, 'idn-email': Types.email, 'uuid': Types.uuid, diff --git a/datamodel_code_generator/types.py b/datamodel_code_generator/types.py index 16eaec3d6..9fdfadecc 100644 --- a/datamodel_code_generator/types.py +++ b/datamodel_code_generator/types.py @@ -548,6 +548,7 @@ class Types(Enum): date = auto() date_time = auto() password = auto() + path = auto() email = auto() uuid = auto() uuid1 = auto() diff --git a/docs/supported-data-types.md b/docs/supported-data-types.md index b67fe3b60..cd5b340b3 100644 --- a/docs/supported-data-types.md +++ b/docs/supported-data-types.md @@ -27,6 +27,7 @@ Below are the data types and features recognized by datamodel-code-generator for - password - email - idn-email +- path - uuid (uuid1/uuid2/uuid3/uuid4/uuid5) - ipv4 - ipv6 diff --git a/tests/parser/test_jsonschema.py b/tests/parser/test_jsonschema.py index 1edb6d2a2..4fd71941f 100644 --- a/tests/parser/test_jsonschema.py +++ b/tests/parser/test_jsonschema.py @@ -402,6 +402,7 @@ def test_parse_nested_array(): ('boolean', None, 'bool', None, None), ('string', 'date', 'date', 'datetime', 'date'), ('string', 'date-time', 'datetime', 'datetime', 'datetime'), + ('string', 'path', 'Path', 'pathlib', 'Path'), ('string', 'password', 'SecretStr', 'pydantic', 'SecretStr'), ('string', 'email', 'EmailStr', 'pydantic', 'EmailStr'), ('string', 'uri', 'AnyUrl', 'pydantic', 'AnyUrl'),