From 4e553477f8bb0d7f66c823c0993b8ef13609ba55 Mon Sep 17 00:00:00 2001 From: Koudai Aono Date: Fri, 19 Dec 2025 17:07:08 +0000 Subject: [PATCH 1/4] feat: Update type hints to use standard collections (list, dict) for Python 3.10+ --- src/datamodel_code_generator/__init__.py | 2 +- src/datamodel_code_generator/__main__.py | 3 +- src/datamodel_code_generator/arguments.py | 4 +- src/datamodel_code_generator/cli_options.py | 4 +- tests/data/expected/main/graphql/annotated.py | 12 ++-- .../graphql/annotated_use_default_kwarg.py | 12 ++-- .../graphql/annotated_use_union_operator.py | 12 ++-- .../main/graphql/different_types_of_fields.py | 24 +++---- .../expected/main/graphql/simple_star_wars.py | 70 +++++++++---------- .../graphql/simple_star_wars_dataclass.py | 70 +++++++++---------- .../simple_star_wars_dataclass_arguments.py | 70 +++++++++---------- ...mple_star_wars_dataclass_frozen_kw_only.py | 70 +++++++++---------- .../simple_star_wars_extra_fields_allow.py | 70 +++++++++---------- .../main/graphql/use_union_operator.py | 22 +++--- .../main/json/json_array_include_null.py | 6 +- .../main/jsonschema/all_of_use_default.py | 4 +- .../allof_root_model_constraints.py | 6 +- .../allof_root_model_constraints_merge.py | 6 +- .../jsonschema/anyof_const_enum_nested.py | 4 +- .../anyof_const_enum_nested_literal.py | 4 +- .../jsonschema/array_field_constraints.py | 4 +- .../array_in_additional_properties.py | 4 +- .../expected/main/jsonschema/autodetect.py | 4 +- .../main/jsonschema/complex_any_of.py | 4 +- .../main/jsonschema/complex_one_of.py | 4 +- .../main/jsonschema/custom_base_path.py | 6 +- .../main/jsonschema/custom_formatters.py | 4 +- .../main/jsonschema/dataclass_field.py | 4 +- .../jsonschema/dataclass_field_default.py | 4 +- .../main/jsonschema/dataclass_field_py312.py | 4 +- .../jsonschema/external_files_in_directory.py | 12 ++-- .../field_name_shadows_class_name.py | 4 +- .../forwarding_reference/forwarding.py | 4 +- .../data/expected/main/jsonschema/general.py | 4 +- .../general_dataclass_frozen_kw_only.py | 4 +- .../main/jsonschema/has_default_value.py | 6 +- .../jsonschema/inheritance_forward_ref.py | 10 +-- ...nheritance_forward_ref_keep_model_order.py | 10 +-- .../array_commons_schema.py | 6 +- .../main/jsonschema/invalid_model_name.py | 4 +- .../expected/main/jsonschema/items_boolean.py | 4 +- .../main/jsonschema/json_pointer_array.py | 6 +- .../main/jsonschema/json_reuse_enum.py | 6 +- .../json_reuse_enum_default_member.py | 6 +- ...a_collapse_root_models_nested_reference.py | 4 +- .../jsonschema_empty_items_array.py | 6 +- .../jsonschema_root_model_ordering.py | 10 +-- ...ma_root_model_ordering_keep_model_order.py | 10 +-- .../keep_model_order_field_references.py | 4 +- .../modular_default_enum_member/foo.py | 4 +- .../jsonschema/nested_directory/_internal.py | 8 +-- .../nested_directory/definitions/friends.py | 6 +- .../main/jsonschema/null_and_array.py | 6 +- .../main/jsonschema/null_and_array_v2.py | 6 +- .../main/jsonschema/nullable_object.py | 4 +- .../one_of_with_sub_schema_array_item.py | 4 +- .../jsonschema/oneof_const_enum_nested.py | 4 +- .../oneof_const_enum_nested_literal.py | 4 +- .../main/jsonschema/pattern_properties.py | 4 +- .../pattern_properties_by_reference.py | 6 +- .../pattern_properties_field_constraints.py | 4 +- .../commons_schema.py | 6 +- .../products_schema.py | 6 +- .../data/expected/main/jsonschema/root_id.py | 4 +- .../main/jsonschema/root_id_absolute_url.py | 4 +- .../root_model_default_value_branches.py | 4 +- .../root_model_with_additional_properties.py | 20 +++--- ...additional_properties_custom_class_name.py | 20 +++--- ...odel_with_additional_properties_literal.py | 20 +++--- ..._properties_use_generic_container_types.py | 3 +- .../main/jsonschema/root_one_of/foo.py | 4 +- .../main/jsonschema/same_name_objects.py | 4 +- .../main/jsonschema/self_reference.py | 4 +- .../main/jsonschema/similar_nested_array.py | 8 +-- .../expected/main/jsonschema/string_dict.py | 4 +- tests/data/expected/main/jsonschema/titles.py | 6 +- .../jsonschema/titles_use_title_as_name.py | 6 +- .../expected/main/jsonschema/type_alias.py | 4 +- .../main/jsonschema/type_alias_py312.py | 4 +- ...lias_with_circular_ref_to_class_msgspec.py | 8 +-- .../type_alias_with_field_description.py | 4 +- ...type_alias_with_field_description_py312.py | 4 +- ...ed_dict_with_only_additional_properties.py | 4 +- .../use_frozen_field_no_readonly.py | 4 +- .../use_union_operator/_internal.py | 8 +-- .../use_union_operator/definitions/friends.py | 6 +- .../without_titles_use_title_as_name.py | 6 +- .../main/openapi/additional_properties.py | 16 ++--- .../allof_partial_override_array_items.py | 6 +- ..._partial_override_array_items_no_parent.py | 4 +- ...of_partial_override_deeply_nested_array.py | 6 +- ...lof_partial_override_nested_array_items.py | 6 +- .../allof_partial_override_simple_list_any.py | 6 +- .../allof_partial_override_unique_items.py | 6 +- ...rtial_override_unique_items_pydantic_v2.py | 6 +- ...f_with_required_inherited_complex_allof.py | 4 +- ...f_with_required_inherited_comprehensive.py | 20 +++--- .../allof_with_required_inherited_coverage.py | 14 ++-- ...llof_with_required_inherited_edge_cases.py | 14 ++-- .../allof_with_required_inherited_fields.py | 4 +- ...equired_inherited_fields_force_optional.py | 4 +- ...f_with_required_inherited_nested_object.py | 12 ++-- .../main/openapi/allow_extra_fields.py | 10 +-- .../openapi/allow_extra_fields_pydantic_v2.py | 18 ++--- .../openapi/allow_population_by_field_name.py | 10 +-- ...ow_population_by_field_name_pydantic_v2.py | 18 ++--- .../data/expected/main/openapi/base_class.py | 10 +-- .../openapi/body_and_parameters/general.py | 10 +-- .../openapi/body_and_parameters/only_paths.py | 10 +-- .../openapi/body_and_parameters/remote_ref.py | 6 +- .../circular_imports_stripe_like/_internal.py | 4 +- .../main/openapi/collapse_root_models.py | 6 +- .../collapse_root_models_field_constraints.py | 6 +- .../main/openapi/custom_file_header.py | 10 +-- .../custom_file_header_comments_only.py | 10 +-- .../main/openapi/custom_file_header_empty.py | 10 +-- .../custom_file_header_invalid_syntax.py | 10 +-- .../openapi/custom_file_header_no_future.py | 10 +-- .../custom_file_header_with_docstring.py | 10 +-- ...m_file_header_with_docstring_and_import.py | 10 +-- .../openapi/custom_file_header_with_import.py | 10 +-- .../main/openapi/custom_template_dir.py | 10 +-- tests/data/expected/main/openapi/dataclass.py | 10 +-- .../main/openapi/dataclass_base_class.py | 10 +-- .../main/openapi/default_object/Another.py | 4 +- .../main/openapi/default_object/Nested.py | 4 +- .../main/openapi/default_object/__init__.py | 4 +- .../openapi/disable_appending_item_suffix.py | 14 ++-- .../main/openapi/disable_timestamp.py | 10 +-- .../main/openapi/discriminator/in_array.py | 4 +- .../in_array_collapse_root_models.py | 4 +- .../main/openapi/enable_command_header.py | 10 +-- .../main/openapi/enable_faux_immutability.py | 10 +-- .../enable_faux_immutability_pydantic_v2.py | 18 ++--- .../main/openapi/enable_version_header.py | 10 +-- .../expected/main/openapi/enum_models/one.py | 6 +- .../enum_models/one_literal_as_default.py | 6 +- .../openapi/extra_template_data_config.py | 10 +-- .../extra_template_data_config_pydantic_v2.py | 18 ++--- .../expected/main/openapi/force_optional.py | 10 +-- tests/data/expected/main/openapi/general.py | 10 +-- .../expected/main/openapi/max_items_enum.py | 4 +- .../main/openapi/modular/_internal.py | 10 +-- .../main/openapi/modular/collections.py | 10 +-- .../expected/main/openapi/modular/foo/bar.py | 6 +- .../expected/main/openapi/modular/models.py | 4 +- .../main/openapi/modular/nested/foo.py | 4 +- .../modular_all_exports_children/_internal.py | 10 +-- .../collections.py | 10 +-- .../modular_all_exports_children/foo/bar.py | 6 +- .../modular_all_exports_children/models.py | 4 +- .../nested/foo.py | 4 +- .../_internal.py | 10 +-- .../collections.py | 10 +-- .../foo/bar.py | 6 +- .../models.py | 4 +- .../nested/foo.py | 4 +- .../_internal.py | 10 +-- .../collections.py | 10 +-- .../modular_all_exports_recursive/foo/bar.py | 6 +- .../modular_all_exports_recursive/models.py | 4 +- .../nested/foo.py | 4 +- .../_internal.py | 10 +-- .../collections.py | 10 +-- .../foo/bar.py | 6 +- .../models.py | 4 +- .../nested/foo.py | 4 +- .../modular_custom_class_name/_internal.py | 8 +-- .../modular_custom_class_name/collections.py | 10 +-- .../modular_custom_class_name/foo/bar.py | 6 +- .../modular_custom_class_name/models.py | 4 +- .../openapi/modular_reuse_model/_internal.py | 8 +-- .../modular_reuse_model/collections.py | 10 +-- .../openapi/modular_reuse_model/foo/bar.py | 6 +- .../openapi/modular_reuse_model/models.py | 4 +- .../openapi/modular_reuse_model/nested/foo.py | 4 +- .../openapi/modular_typed_dict/_internal.py | 8 +-- .../openapi/modular_typed_dict/collections.py | 10 +-- .../openapi/modular_typed_dict/foo/bar.py | 6 +- .../main/openapi/modular_typed_dict/models.py | 4 +- .../openapi/modular_typed_dict/nested/foo.py | 4 +- .../module_class_name_collision/__init__.py | 6 +- .../__init__.py | 6 +- .../expected/main/openapi/msgspec_anyof.py | 6 +- .../openapi/msgspec_default_object/Another.py | 4 +- .../openapi/msgspec_default_object/Nested.py | 4 +- .../msgspec_default_object/__init__.py | 4 +- .../expected/main/openapi/msgspec_nullable.py | 12 ++-- .../expected/main/openapi/msgspec_struct.py | 10 +-- .../main/openapi/msgspec_struct_snake_case.py | 10 +-- ...ec_use_annotated_with_field_constraints.py | 14 ++-- .../openapi/msgspec_use_union_operator.py | 12 ++-- tests/data/expected/main/openapi/no_file.py | 10 +-- tests/data/expected/main/openapi/nullable.py | 12 ++-- .../data/expected/main/openapi/nullable_31.py | 4 +- .../main/openapi/nullable_strict_nullable.py | 12 ++-- ...able_strict_nullable_use_union_operator.py | 12 ++-- .../main/openapi/oas_response_reference.py | 4 +- .../openapi_non_operations_and_security.py | 4 +- .../openapi/paths_ref_with_external_schema.py | 4 +- .../data/expected/main/openapi/pydantic_v2.py | 18 ++--- .../pydantic_v2_default_object/Another.py | 4 +- .../pydantic_v2_default_object/Nested.py | 4 +- .../pydantic_v2_default_object/__init__.py | 4 +- .../main/openapi/pyproject_not_found.py | 10 +-- .../main/openapi/same_name_objects.py | 6 +- .../openapi/serialize_as_any_pydantic_v2.py | 4 +- .../main/openapi/target_python_version.py | 10 +-- ...thon_version_313_has_future_annotations.py | 10 +-- ...ython_version_314_no_future_annotations.py | 10 +-- .../data/expected/main/openapi/type_alias.py | 4 +- .../type_alias_cross_module_collision_b.py | 4 +- .../expected/main/openapi/type_alias_py312.py | 4 +- .../main/openapi/type_alias_recursive.py | 8 +-- .../openapi/type_alias_recursive_py311.py | 8 +-- .../data/expected/main/openapi/typed_dict.py | 10 +-- .../main/openapi/typed_dict_nullable.py | 12 ++-- .../typed_dict_nullable_strict_nullable.py | 12 ++-- .../expected/main/openapi/typed_dict_py.py | 10 +-- .../unique_items_default_set_dataclass.py | 8 +-- .../unique_items_default_set_msgspec.py | 8 +-- .../unique_items_default_set_pydantic.py | 8 +-- .../unique_items_default_set_pydantic_v2.py | 8 +-- .../use_annotated_with_field_constraints.py | 14 ++-- ...ated_with_field_constraints_pydantic_v2.py | 22 +++--- .../data/expected/main/openapi/use_default.py | 10 +-- .../main/openapi/use_default_kwarg.py | 12 ++-- .../main/openapi/use_operation_id_as_name.py | 10 +-- .../expected/main/openapi/with_aliases.py | 10 +-- .../main/openapi/with_aliases_msgspec.py | 10 +-- .../main/openapi/with_field_constraints.py | 14 ++-- .../with_field_constraints_pydantic_v2.py | 22 +++--- ...pydantic_v2_use_generic_container_types.py | 3 +- ...ntic_v2_use_generic_container_types_set.py | 3 +- ...eld_constraints_use_unique_items_as_set.py | 14 ++-- .../main/openapi/with_snake_case_field.py | 10 +-- .../main/openapi/with_strip_default_none.py | 10 +-- .../main/openapi/without_field_constraints.py | 14 ++-- .../without_field_constraints_pydantic_v2.py | 22 +++--- tests/data/expected/main_kr/main/output.py | 10 +-- .../main_kr/main_base_class/output.py | 10 +-- .../main_custom_template_dir/output.py | 10 +-- .../main_kr/main_modular/_internal.py | 10 +-- .../main_kr/main_modular/collections.py | 10 +-- .../expected/main_kr/main_modular/foo/bar.py | 6 +- .../expected/main_kr/main_modular/models.py | 4 +- .../main_kr/main_modular/nested/foo.py | 4 +- .../expected/main_kr/main_no_file/output.py | 10 +-- .../main_use_field_description/output.py | 10 +-- .../output.py | 10 +-- .../main_use_schema_description/output.py | 10 +-- .../main_kr/pyproject/output.strictstr.py | 10 +-- .../main_kr/target_python_version/output.py | 10 +-- .../parser/graphql/field-default-enum.py | 4 +- 254 files changed, 1140 insertions(+), 1158 deletions(-) diff --git a/src/datamodel_code_generator/__init__.py b/src/datamodel_code_generator/__init__.py index e0624b616..e5cb32b47 100644 --- a/src/datamodel_code_generator/__init__.py +++ b/src/datamodel_code_generator/__init__.py @@ -405,7 +405,7 @@ def generate( # noqa: PLR0912, PLR0913, PLR0914, PLR0915 apply_default_values_for_required_fields: bool = False, force_optional_for_required_fields: bool = False, class_name: str | None = None, - use_standard_collections: bool = False, + use_standard_collections: bool = True, use_schema_description: bool = False, use_field_description: bool = False, use_attribute_docstrings: bool = False, diff --git a/src/datamodel_code_generator/__main__.py b/src/datamodel_code_generator/__main__.py index 1acca4c1f..8fb76e497 100644 --- a/src/datamodel_code_generator/__main__.py +++ b/src/datamodel_code_generator/__main__.py @@ -82,6 +82,7 @@ BOOLEAN_OPTIONAL_OPTIONS: frozenset[str] = frozenset({ "use_specialized_enum", + "use_standard_collections", }) @@ -393,7 +394,7 @@ def validate_all_exports_collision_strategy(cls, values: dict[str, Any]) -> dict use_default: bool = False force_optional: bool = False class_name: Optional[str] = None # noqa: UP045 - use_standard_collections: bool = False + use_standard_collections: bool = True use_schema_description: bool = False use_field_description: bool = False use_attribute_docstrings: bool = False diff --git a/src/datamodel_code_generator/arguments.py b/src/datamodel_code_generator/arguments.py index e8e5f8ea6..f41610ad1 100644 --- a/src/datamodel_code_generator/arguments.py +++ b/src/datamodel_code_generator/arguments.py @@ -418,8 +418,8 @@ def start_section(self, heading: str | None) -> None: ) typing_options.add_argument( "--use-standard-collections", - help="Use standard collections for type hinting (list, dict)", - action="store_true", + help="Use standard collections for type hinting (list, dict). Default: enabled", + action=BooleanOptionalAction, default=None, ) typing_options.add_argument( diff --git a/src/datamodel_code_generator/cli_options.py b/src/datamodel_code_generator/cli_options.py index 597ff5822..408c24cb7 100644 --- a/src/datamodel_code_generator/cli_options.py +++ b/src/datamodel_code_generator/cli_options.py @@ -134,7 +134,9 @@ class CLIOptionMeta: # Typing Customization # ========================================================================== "--use-union-operator": CLIOptionMeta(name="--use-union-operator", category=OptionCategory.TYPING), - "--use-standard-collections": CLIOptionMeta(name="--use-standard-collections", category=OptionCategory.TYPING), + "--no-use-standard-collections": CLIOptionMeta( + name="--no-use-standard-collections", category=OptionCategory.TYPING + ), "--use-generic-container-types": CLIOptionMeta( name="--use-generic-container-types", category=OptionCategory.TYPING ), diff --git a/tests/data/expected/main/graphql/annotated.py b/tests/data/expected/main/graphql/annotated.py index 212095f31..ba875e678 100644 --- a/tests/data/expected/main/graphql/annotated.py +++ b/tests/data/expected/main/graphql/annotated.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, Literal, Optional +from typing import Annotated, Literal, Optional from pydantic import BaseModel, Field from typing_extensions import TypeAliasType @@ -23,10 +23,10 @@ class A(BaseModel): field: String - listField: List[String] - listListField: List[List[String]] - listOptionalField: List[Optional[String]] + listField: list[String] + listListField: list[list[String]] + listOptionalField: list[Optional[String]] optionalField: Optional[String] = None - optionalListField: Optional[List[String]] = None - optionalListOptionalField: Optional[List[Optional[String]]] = None + optionalListField: Optional[list[String]] = None + optionalListOptionalField: Optional[list[Optional[String]]] = None typename__: Annotated[Optional[Literal['A']], Field(alias='__typename')] = 'A' diff --git a/tests/data/expected/main/graphql/annotated_use_default_kwarg.py b/tests/data/expected/main/graphql/annotated_use_default_kwarg.py index 84df1a380..0771b5a28 100644 --- a/tests/data/expected/main/graphql/annotated_use_default_kwarg.py +++ b/tests/data/expected/main/graphql/annotated_use_default_kwarg.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Literal, Optional, TypeAlias +from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Field @@ -22,10 +22,10 @@ class A(BaseModel): field: String - listField: List[String] - listListField: List[List[String]] - listOptionalField: List[Optional[String]] + listField: list[String] + listListField: list[list[String]] + listOptionalField: list[Optional[String]] optionalField: Optional[String] = None - optionalListField: Optional[List[String]] = None - optionalListOptionalField: Optional[List[Optional[String]]] = None + optionalListField: Optional[list[String]] = None + optionalListOptionalField: Optional[list[Optional[String]]] = None typename__: Optional[Literal['A']] = Field(default='A', alias='__typename') diff --git a/tests/data/expected/main/graphql/annotated_use_union_operator.py b/tests/data/expected/main/graphql/annotated_use_union_operator.py index 0ab5aa78f..f86ff97ab 100644 --- a/tests/data/expected/main/graphql/annotated_use_union_operator.py +++ b/tests/data/expected/main/graphql/annotated_use_union_operator.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, Literal +from typing import Annotated, Literal from pydantic import BaseModel, Field from typing_extensions import TypeAliasType @@ -23,10 +23,10 @@ class A(BaseModel): field: String - listField: List[String] - listListField: List[List[String]] - listOptionalField: List[String | None] + listField: list[String] + listListField: list[list[String]] + listOptionalField: list[String | None] optionalField: String | None = None - optionalListField: List[String] | None = None - optionalListOptionalField: List[String | None] | None = None + optionalListField: list[String] | None = None + optionalListOptionalField: list[String | None] | None = None typename__: Annotated[Literal['A'] | None, Field(alias='__typename')] = 'A' diff --git a/tests/data/expected/main/graphql/different_types_of_fields.py b/tests/data/expected/main/graphql/different_types_of_fields.py index c19311034..380c0e87c 100644 --- a/tests/data/expected/main/graphql/different_types_of_fields.py +++ b/tests/data/expected/main/graphql/different_types_of_fields.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Literal, Optional, TypeAlias +from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Field @@ -22,18 +22,18 @@ class A(BaseModel): field: String - listField: List[String] - listListField: List[List[String]] - listListOptionalField: List[List[Optional[String]]] - listOptionalField: List[Optional[String]] - listOptionalListField: List[Optional[List[String]]] - listOptionalListOptionalField: List[Optional[List[Optional[String]]]] + listField: list[String] + listListField: list[list[String]] + listListOptionalField: list[list[Optional[String]]] + listOptionalField: list[Optional[String]] + listOptionalListField: list[Optional[list[String]]] + listOptionalListOptionalField: list[Optional[list[Optional[String]]]] optionalField: Optional[String] = None - optionalListListField: Optional[List[List[String]]] = None - optionalListListOptionalField: Optional[List[List[Optional[String]]]] = None - optionalListOptionalField: Optional[List[Optional[String]]] = None - optionalListOptionalListField: Optional[List[Optional[List[String]]]] = None + optionalListListField: Optional[list[list[String]]] = None + optionalListListOptionalField: Optional[list[list[Optional[String]]]] = None + optionalListOptionalField: Optional[list[Optional[String]]] = None + optionalListOptionalListField: Optional[list[Optional[list[String]]]] = None optionalListOptionalListOptionalField: Optional[ - List[Optional[List[Optional[String]]]] + list[Optional[list[Optional[String]]]] ] = None typename__: Optional[Literal['A']] = Field('A', alias='__typename') diff --git a/tests/data/expected/main/graphql/simple_star_wars.py b/tests/data/expected/main/graphql/simple_star_wars.py index 5b943e2e0..0654b0321 100644 --- a/tests/data/expected/main/graphql/simple_star_wars.py +++ b/tests/data/expected/main/graphql/simple_star_wars.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Literal, Optional, TypeAlias +from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Field @@ -33,31 +33,31 @@ class Film(BaseModel): - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] producer: Optional[String] = None release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Film']] = Field('Film', alias='__typename') class Person(BaseModel): birth_year: Optional[String] = None eye_color: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gender: Optional[String] = None hair_color: Optional[String] = None height: Optional[Int] = None @@ -67,27 +67,27 @@ class Person(BaseModel): mass: Optional[Int] = None name: String skin_color: Optional[String] = None - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Person']] = Field('Person', alias='__typename') class Planet(BaseModel): climate: Optional[String] = None diameter: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gravity: Optional[String] = None id: ID name: String orbital_period: Optional[String] = None population: Optional[String] = None - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] rotation_period: Optional[String] = None surface_water: Optional[String] = None terrain: Optional[String] = None @@ -100,14 +100,14 @@ class Species(BaseModel): classification: Optional[String] = None designation: Optional[String] = None eye_colors: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hair_colors: Optional[String] = None id: ID language: Optional[String] = None name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] skin_colors: Optional[String] = None typename__: Optional[Literal['Species']] = Field('Species', alias='__typename') @@ -118,8 +118,8 @@ class Starship(BaseModel): consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hyperdrive_rating: Optional[String] = None id: ID length: Optional[String] = None @@ -128,8 +128,8 @@ class Starship(BaseModel): model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] starship_class: Optional[String] = None typename__: Optional[Literal['Starship']] = Field('Starship', alias='__typename') @@ -139,8 +139,8 @@ class Vehicle(BaseModel): consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID length: Optional[String] = None manufacturer: Optional[String] = None @@ -148,8 +148,8 @@ class Vehicle(BaseModel): model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] vehicle_class: Optional[String] = None typename__: Optional[Literal['Vehicle']] = Field('Vehicle', alias='__typename') diff --git a/tests/data/expected/main/graphql/simple_star_wars_dataclass.py b/tests/data/expected/main/graphql/simple_star_wars_dataclass.py index 25c1a167a..73f90affd 100644 --- a/tests/data/expected/main/graphql/simple_star_wars_dataclass.py +++ b/tests/data/expected/main/graphql/simple_star_wars_dataclass.py @@ -5,7 +5,7 @@ from __future__ import annotations from dataclasses import dataclass -from typing import List, Literal, Optional, TypeAlias +from typing import Literal, Optional, TypeAlias Boolean: TypeAlias = bool """ @@ -33,38 +33,38 @@ @dataclass class Film: - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] producer: Optional[String] = None typename__: Optional[Literal['Film']] = 'Film' @dataclass class Person: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] birth_year: Optional[String] = None eye_color: Optional[String] = None gender: Optional[String] = None @@ -79,12 +79,12 @@ class Person: @dataclass class Planet: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] climate: Optional[String] = None diameter: Optional[String] = None gravity: Optional[String] = None @@ -98,12 +98,12 @@ class Planet: @dataclass class Species: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] average_height: Optional[String] = None average_lifespan: Optional[String] = None classification: Optional[String] = None @@ -117,12 +117,12 @@ class Species: @dataclass class Starship: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] MGLT: Optional[String] = None cargo_capacity: Optional[String] = None consumables: Optional[String] = None @@ -140,12 +140,12 @@ class Starship: @dataclass class Vehicle: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] cargo_capacity: Optional[String] = None consumables: Optional[String] = None cost_in_credits: Optional[String] = None diff --git a/tests/data/expected/main/graphql/simple_star_wars_dataclass_arguments.py b/tests/data/expected/main/graphql/simple_star_wars_dataclass_arguments.py index cf018593e..717ce2966 100644 --- a/tests/data/expected/main/graphql/simple_star_wars_dataclass_arguments.py +++ b/tests/data/expected/main/graphql/simple_star_wars_dataclass_arguments.py @@ -5,7 +5,7 @@ from __future__ import annotations from dataclasses import dataclass -from typing import List, Literal, Optional, TypeAlias +from typing import Literal, Optional, TypeAlias Boolean: TypeAlias = bool """ @@ -33,38 +33,38 @@ @dataclass(order=True, slots=True) class Film: - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] producer: Optional[String] = None typename__: Optional[Literal['Film']] = 'Film' @dataclass(order=True, slots=True) class Person: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] birth_year: Optional[String] = None eye_color: Optional[String] = None gender: Optional[String] = None @@ -79,12 +79,12 @@ class Person: @dataclass(order=True, slots=True) class Planet: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] climate: Optional[String] = None diameter: Optional[String] = None gravity: Optional[String] = None @@ -98,12 +98,12 @@ class Planet: @dataclass(order=True, slots=True) class Species: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] average_height: Optional[String] = None average_lifespan: Optional[String] = None classification: Optional[String] = None @@ -117,12 +117,12 @@ class Species: @dataclass(order=True, slots=True) class Starship: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] MGLT: Optional[String] = None cargo_capacity: Optional[String] = None consumables: Optional[String] = None @@ -140,12 +140,12 @@ class Starship: @dataclass(order=True, slots=True) class Vehicle: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] cargo_capacity: Optional[String] = None consumables: Optional[String] = None cost_in_credits: Optional[String] = None diff --git a/tests/data/expected/main/graphql/simple_star_wars_dataclass_frozen_kw_only.py b/tests/data/expected/main/graphql/simple_star_wars_dataclass_frozen_kw_only.py index 2f5b67151..4f304026d 100644 --- a/tests/data/expected/main/graphql/simple_star_wars_dataclass_frozen_kw_only.py +++ b/tests/data/expected/main/graphql/simple_star_wars_dataclass_frozen_kw_only.py @@ -5,7 +5,7 @@ from __future__ import annotations from dataclasses import dataclass -from typing import List, Literal, Optional, TypeAlias +from typing import Literal, Optional, TypeAlias Boolean: TypeAlias = bool """ @@ -33,38 +33,38 @@ @dataclass(frozen=True, kw_only=True) class Film: - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] producer: Optional[String] = None typename__: Optional[Literal['Film']] = 'Film' @dataclass(frozen=True, kw_only=True) class Person: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] birth_year: Optional[String] = None eye_color: Optional[String] = None gender: Optional[String] = None @@ -79,12 +79,12 @@ class Person: @dataclass(frozen=True, kw_only=True) class Planet: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] climate: Optional[String] = None diameter: Optional[String] = None gravity: Optional[String] = None @@ -98,12 +98,12 @@ class Planet: @dataclass(frozen=True, kw_only=True) class Species: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] average_height: Optional[String] = None average_lifespan: Optional[String] = None classification: Optional[String] = None @@ -117,12 +117,12 @@ class Species: @dataclass(frozen=True, kw_only=True) class Starship: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] MGLT: Optional[String] = None cargo_capacity: Optional[String] = None consumables: Optional[String] = None @@ -140,12 +140,12 @@ class Starship: @dataclass(frozen=True, kw_only=True) class Vehicle: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] cargo_capacity: Optional[String] = None consumables: Optional[String] = None cost_in_credits: Optional[String] = None diff --git a/tests/data/expected/main/graphql/simple_star_wars_extra_fields_allow.py b/tests/data/expected/main/graphql/simple_star_wars_extra_fields_allow.py index b49bf807b..45903d199 100644 --- a/tests/data/expected/main/graphql/simple_star_wars_extra_fields_allow.py +++ b/tests/data/expected/main/graphql/simple_star_wars_extra_fields_allow.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Literal, Optional, TypeAlias +from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Extra, Field @@ -36,23 +36,23 @@ class Film(BaseModel): class Config: extra = Extra.allow - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] producer: Optional[String] = None release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Film']] = Field('Film', alias='__typename') @@ -62,8 +62,8 @@ class Config: birth_year: Optional[String] = None eye_color: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gender: Optional[String] = None hair_color: Optional[String] = None height: Optional[Int] = None @@ -73,12 +73,12 @@ class Config: mass: Optional[Int] = None name: String skin_color: Optional[String] = None - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Person']] = Field('Person', alias='__typename') @@ -88,15 +88,15 @@ class Config: climate: Optional[String] = None diameter: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gravity: Optional[String] = None id: ID name: String orbital_period: Optional[String] = None population: Optional[String] = None - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] rotation_period: Optional[String] = None surface_water: Optional[String] = None terrain: Optional[String] = None @@ -112,14 +112,14 @@ class Config: classification: Optional[String] = None designation: Optional[String] = None eye_colors: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hair_colors: Optional[String] = None id: ID language: Optional[String] = None name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] skin_colors: Optional[String] = None typename__: Optional[Literal['Species']] = Field('Species', alias='__typename') @@ -133,8 +133,8 @@ class Config: consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hyperdrive_rating: Optional[String] = None id: ID length: Optional[String] = None @@ -143,8 +143,8 @@ class Config: model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] starship_class: Optional[String] = None typename__: Optional[Literal['Starship']] = Field('Starship', alias='__typename') @@ -157,8 +157,8 @@ class Config: consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID length: Optional[String] = None manufacturer: Optional[String] = None @@ -166,8 +166,8 @@ class Config: model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] vehicle_class: Optional[String] = None typename__: Optional[Literal['Vehicle']] = Field('Vehicle', alias='__typename') diff --git a/tests/data/expected/main/graphql/use_union_operator.py b/tests/data/expected/main/graphql/use_union_operator.py index a7ac71f12..ed3cb1fe5 100644 --- a/tests/data/expected/main/graphql/use_union_operator.py +++ b/tests/data/expected/main/graphql/use_union_operator.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Literal, TypeAlias +from typing import Literal, TypeAlias from pydantic import BaseModel, Field @@ -22,15 +22,15 @@ class A(BaseModel): field: String - listField: List[String] - listListField: List[List[String]] - listListOptionalField: List[List[String | None]] - listOptionalField: List[String | None] - listOptionalListField: List[List[String] | None] - listOptionalListOptionalField: List[List[String | None] | None] + listField: list[String] + listListField: list[list[String]] + listListOptionalField: list[list[String | None]] + listOptionalField: list[String | None] + listOptionalListField: list[list[String] | None] + listOptionalListOptionalField: list[list[String | None] | None] optionalField: String | None = None - optionalListListField: List[List[String]] | None = None - optionalListListOptionalField: List[List[String | None]] | None = None - optionalListOptionalField: List[String | None] | None = None - optionalListOptionalListField: List[List[String] | None] | None = None + optionalListListField: list[list[String]] | None = None + optionalListListOptionalField: list[list[String | None]] | None = None + optionalListOptionalField: list[String | None] | None = None + optionalListOptionalListField: list[list[String] | None] | None = None typename__: Literal['A'] | None = Field('A', alias='__typename') diff --git a/tests/data/expected/main/json/json_array_include_null.py b/tests/data/expected/main/json/json_array_include_null.py index 8ae16c871..e55c0163f 100644 --- a/tests/data/expected/main/json/json_array_include_null.py +++ b/tests/data/expected/main/json/json_array_include_null.py @@ -4,14 +4,14 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel class Item(BaseModel): - oofield: Optional[List[int]] + oofield: Optional[list[int]] class Model(BaseModel): - items: List[Item] + items: list[Item] diff --git a/tests/data/expected/main/jsonschema/all_of_use_default.py b/tests/data/expected/main/jsonschema/all_of_use_default.py index 48fc7829a..86988f6ec 100644 --- a/tests/data/expected/main/jsonschema/all_of_use_default.py +++ b/tests/data/expected/main/jsonschema/all_of_use_default.py @@ -4,11 +4,11 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field class Item(BaseModel): test: Optional[str] = 'test123' - testarray: Optional[List[str]] = Field(['test123'], min_items=1, title='test array') + testarray: Optional[list[str]] = Field(['test123'], min_items=1, title='test array') diff --git a/tests/data/expected/main/jsonschema/allof_root_model_constraints.py b/tests/data/expected/main/jsonschema/allof_root_model_constraints.py index cf367b5de..e7e2356d2 100644 --- a/tests/data/expected/main/jsonschema/allof_root_model_constraints.py +++ b/tests/data/expected/main/jsonschema/allof_root_model_constraints.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel, EmailStr, Field, conint, constr @@ -84,7 +84,7 @@ class RefWithSchemaKeywords(BaseModel): class ArrayDatatype(BaseModel): - __root__: List[str] + __root__: list[str] class RefToArrayAllOf(BaseModel): @@ -100,7 +100,7 @@ class RefToObjectNoPropsAllOf(ObjectNoPropsDatatype): class PatternPropsDatatype(BaseModel): - __root__: Dict[constr(regex=r'^S_'), str] + __root__: dict[constr(regex=r'^S_'), str] class RefToPatternPropsAllOf(BaseModel): diff --git a/tests/data/expected/main/jsonschema/allof_root_model_constraints_merge.py b/tests/data/expected/main/jsonschema/allof_root_model_constraints_merge.py index 9ae92943a..d4b1702be 100644 --- a/tests/data/expected/main/jsonschema/allof_root_model_constraints_merge.py +++ b/tests/data/expected/main/jsonschema/allof_root_model_constraints_merge.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel, EmailStr, Field, conint, constr @@ -84,7 +84,7 @@ class RefWithSchemaKeywords(BaseModel): class ArrayDatatype(BaseModel): - __root__: List[str] + __root__: list[str] class RefToArrayAllOf(BaseModel): @@ -100,7 +100,7 @@ class RefToObjectNoPropsAllOf(ObjectNoPropsDatatype): class PatternPropsDatatype(BaseModel): - __root__: Dict[constr(regex=r'^S_'), str] + __root__: dict[constr(regex=r'^S_'), str] class RefToPatternPropsAllOf(BaseModel): diff --git a/tests/data/expected/main/jsonschema/anyof_const_enum_nested.py b/tests/data/expected/main/jsonschema/anyof_const_enum_nested.py index bd62b68d2..e97568a56 100644 --- a/tests/data/expected/main/jsonschema/anyof_const_enum_nested.py +++ b/tests/data/expected/main/jsonschema/anyof_const_enum_nested.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -22,4 +22,4 @@ class Mode1(Enum): class Config(BaseModel): mode: Optional[Mode] = Field(None, title='Mode') - modes: Optional[List[Mode1]] = None + modes: Optional[list[Mode1]] = None diff --git a/tests/data/expected/main/jsonschema/anyof_const_enum_nested_literal.py b/tests/data/expected/main/jsonschema/anyof_const_enum_nested_literal.py index 2aff2e5b4..43439c965 100644 --- a/tests/data/expected/main/jsonschema/anyof_const_enum_nested_literal.py +++ b/tests/data/expected/main/jsonschema/anyof_const_enum_nested_literal.py @@ -4,11 +4,11 @@ from __future__ import annotations -from typing import List, Literal, Optional +from typing import Literal, Optional from pydantic import BaseModel, Field class Config(BaseModel): mode: Optional[Literal['fast', 'slow']] = Field(None, title='Mode') - modes: Optional[List[Literal['a', 'b']]] = None + modes: Optional[list[Literal['a', 'b']]] = None diff --git a/tests/data/expected/main/jsonschema/array_field_constraints.py b/tests/data/expected/main/jsonschema/array_field_constraints.py index 714fa9705..97a290014 100644 --- a/tests/data/expected/main/jsonschema/array_field_constraints.py +++ b/tests/data/expected/main/jsonschema/array_field_constraints.py @@ -4,8 +4,6 @@ from __future__ import annotations -from typing import List - from pydantic import BaseModel, Field @@ -19,4 +17,4 @@ class Number(BaseModel): class TestSchema(BaseModel): - numbers: List[Number] = Field(..., description='A list of numbers') + numbers: list[Number] = Field(..., description='A list of numbers') diff --git a/tests/data/expected/main/jsonschema/array_in_additional_properties.py b/tests/data/expected/main/jsonschema/array_in_additional_properties.py index 624d631ff..f51a263b3 100644 --- a/tests/data/expected/main/jsonschema/array_in_additional_properties.py +++ b/tests/data/expected/main/jsonschema/array_in_additional_properties.py @@ -4,10 +4,8 @@ from __future__ import annotations -from typing import Dict, List - from pydantic import BaseModel class MyJsonOfListOfString(BaseModel): - __root__: Dict[str, List[str]] + __root__: dict[str, list[str]] diff --git a/tests/data/expected/main/jsonschema/autodetect.py b/tests/data/expected/main/jsonschema/autodetect.py index 42fdb52dd..f126ebc73 100644 --- a/tests/data/expected/main/jsonschema/autodetect.py +++ b/tests/data/expected/main/jsonschema/autodetect.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -15,5 +15,5 @@ class Person(BaseModel): age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None diff --git a/tests/data/expected/main/jsonschema/complex_any_of.py b/tests/data/expected/main/jsonschema/complex_any_of.py index 740f82b42..a76038ce2 100644 --- a/tests/data/expected/main/jsonschema/complex_any_of.py +++ b/tests/data/expected/main/jsonschema/complex_any_of.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Union +from typing import Union from pydantic import BaseModel, Extra @@ -26,4 +26,4 @@ class Config: class Model(BaseModel): - __root__: Union[int, List[ModelItem]] + __root__: Union[int, list[ModelItem]] diff --git a/tests/data/expected/main/jsonschema/complex_one_of.py b/tests/data/expected/main/jsonschema/complex_one_of.py index a74893dff..95db6f841 100644 --- a/tests/data/expected/main/jsonschema/complex_one_of.py +++ b/tests/data/expected/main/jsonschema/complex_one_of.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Union +from typing import Union from pydantic import BaseModel, Extra @@ -26,4 +26,4 @@ class Config: class Model(BaseModel): - __root__: Union[int, List[ModelItem]] + __root__: Union[int, list[ModelItem]] diff --git a/tests/data/expected/main/jsonschema/custom_base_path.py b/tests/data/expected/main/jsonschema/custom_base_path.py index fadb0c27a..f64cd4efe 100644 --- a/tests/data/expected/main/jsonschema/custom_base_path.py +++ b/tests/data/expected/main/jsonschema/custom_base_path.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from custom.models import Animal, Person, Property @@ -20,13 +20,13 @@ class Pet(Animal): class Child(Person): school: Optional[str] = None grade: Optional[float] = None - pets: Optional[List[Pet]] = None + pets: Optional[list[Pet]] = None class Owner(Person): job: Optional[str] = None spouse: Optional[Spouse] = None - children: Optional[List[Child]] = None + children: Optional[list[Child]] = None class House(Property): diff --git a/tests/data/expected/main/jsonschema/custom_formatters.py b/tests/data/expected/main/jsonschema/custom_formatters.py index 896e79569..3951f87c1 100644 --- a/tests/data/expected/main/jsonschema/custom_formatters.py +++ b/tests/data/expected/main/jsonschema/custom_formatters.py @@ -8,7 +8,7 @@ # from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -19,5 +19,5 @@ class Person(BaseModel): age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None diff --git a/tests/data/expected/main/jsonschema/dataclass_field.py b/tests/data/expected/main/jsonschema/dataclass_field.py index 454fe2e96..c7e364eb5 100644 --- a/tests/data/expected/main/jsonschema/dataclass_field.py +++ b/tests/data/expected/main/jsonschema/dataclass_field.py @@ -5,7 +5,7 @@ from __future__ import annotations from dataclasses import dataclass, field -from typing import Any, List, Optional, TypeAlias +from typing import Any, Optional, TypeAlias Model: TypeAlias = Any @@ -13,7 +13,7 @@ @dataclass class User: name: Optional[str] = None - pets: List[User] = field(default_factory=list) + pets: list[User] = field(default_factory=list) @dataclass diff --git a/tests/data/expected/main/jsonschema/dataclass_field_default.py b/tests/data/expected/main/jsonschema/dataclass_field_default.py index 1f906be3b..98c94024f 100644 --- a/tests/data/expected/main/jsonschema/dataclass_field_default.py +++ b/tests/data/expected/main/jsonschema/dataclass_field_default.py @@ -5,7 +5,7 @@ from __future__ import annotations from dataclasses import dataclass, field -from typing import Any, List, Optional, TypeAlias +from typing import Any, Optional, TypeAlias Model: TypeAlias = Any @@ -13,7 +13,7 @@ @dataclass class User: name: Optional[str] = None - pets: Optional[List[User]] = field(default_factory=lambda: ['dog', 'cat']) + pets: Optional[list[User]] = field(default_factory=lambda: ['dog', 'cat']) @dataclass diff --git a/tests/data/expected/main/jsonschema/dataclass_field_py312.py b/tests/data/expected/main/jsonschema/dataclass_field_py312.py index d44bc2b60..226bae19b 100644 --- a/tests/data/expected/main/jsonschema/dataclass_field_py312.py +++ b/tests/data/expected/main/jsonschema/dataclass_field_py312.py @@ -5,7 +5,7 @@ from __future__ import annotations from dataclasses import dataclass, field -from typing import Any, List, Optional +from typing import Any, Optional type Model = Any @@ -13,7 +13,7 @@ @dataclass class User: name: Optional[str] = None - pets: List[User] = field(default_factory=list) + pets: list[User] = field(default_factory=list) @dataclass diff --git a/tests/data/expected/main/jsonschema/external_files_in_directory.py b/tests/data/expected/main/jsonschema/external_files_in_directory.py index cf8417804..66dc0c0cd 100644 --- a/tests/data/expected/main/jsonschema/external_files_in_directory.py +++ b/tests/data/expected/main/jsonschema/external_files_in_directory.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import BaseModel, Extra, Field, conint @@ -48,23 +48,23 @@ class Config: name: str = Field(..., example='John Doe') phone_number: Optional[str] = Field(None, example='(555) 555-1234') - food: Optional[List[Union[Noodle, Soup]]] = None + food: Optional[list[Union[Noodle, Soup]]] = None class Friends(BaseModel): - __root__: List[Friend] = Field(..., title='Friends') + __root__: list[Friend] = Field(..., title='Friends') class Person(BaseModel): first_name: str = Field(..., description="The person's first name.") last_name: str = Field(..., description="The person's last name.") age: Optional[conint(ge=0)] = Field(None, description='Age in years.') - pets: Optional[List[Pet]] = None + pets: Optional[list[Pet]] = None friends: Optional[Friends] = None robot: Optional[Robot] = None comment: None = None - drink: Optional[List[Union[Coffee, Tea]]] = None - food: Optional[List[Union[Noodle, Soup]]] = None + drink: Optional[list[Union[Coffee, Tea]]] = None + food: Optional[list[Union[Noodle, Soup]]] = None class Robot(Pet): diff --git a/tests/data/expected/main/jsonschema/field_name_shadows_class_name.py b/tests/data/expected/main/jsonschema/field_name_shadows_class_name.py index 75502c451..375e4d7ee 100644 --- a/tests/data/expected/main/jsonschema/field_name_shadows_class_name.py +++ b/tests/data/expected/main/jsonschema/field_name_shadows_class_name.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -14,4 +14,4 @@ class Elem(BaseModel): class Model(BaseModel): - Elem_1: Optional[List[Elem]] = Field(None, alias='Elem') + Elem_1: Optional[list[Elem]] = Field(None, alias='Elem') diff --git a/tests/data/expected/main/jsonschema/forwarding_reference/forwarding.py b/tests/data/expected/main/jsonschema/forwarding_reference/forwarding.py index d8a01edcb..18948a78f 100644 --- a/tests/data/expected/main/jsonschema/forwarding_reference/forwarding.py +++ b/tests/data/expected/main/jsonschema/forwarding_reference/forwarding.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List +from typing import Any from pydantic import BaseModel @@ -14,4 +14,4 @@ class Model(BaseModel): class ForwardingArray(BaseModel): - __root__: List[Any] + __root__: list[Any] diff --git a/tests/data/expected/main/jsonschema/general.py b/tests/data/expected/main/jsonschema/general.py index 42fdb52dd..f126ebc73 100644 --- a/tests/data/expected/main/jsonschema/general.py +++ b/tests/data/expected/main/jsonschema/general.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -15,5 +15,5 @@ class Person(BaseModel): age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None diff --git a/tests/data/expected/main/jsonschema/general_dataclass_frozen_kw_only.py b/tests/data/expected/main/jsonschema/general_dataclass_frozen_kw_only.py index 6a4a6b254..1693ef998 100644 --- a/tests/data/expected/main/jsonschema/general_dataclass_frozen_kw_only.py +++ b/tests/data/expected/main/jsonschema/general_dataclass_frozen_kw_only.py @@ -5,7 +5,7 @@ from __future__ import annotations from dataclasses import dataclass -from typing import Any, List, Optional +from typing import Any, Optional @dataclass(frozen=True, kw_only=True) @@ -13,5 +13,5 @@ class Person: firstName: Optional[str] = None lastName: Optional[str] = None age: Optional[int] = None - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None diff --git a/tests/data/expected/main/jsonschema/has_default_value.py b/tests/data/expected/main/jsonschema/has_default_value.py index 7b297acc9..4cb8a0aed 100644 --- a/tests/data/expected/main/jsonschema/has_default_value.py +++ b/tests/data/expected/main/jsonschema/has_default_value.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -26,11 +26,11 @@ class Pet(BaseModel): class Family(BaseModel): - __root__: List[ID] + __root__: list[ID] class FamilyPets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Person(BaseModel): diff --git a/tests/data/expected/main/jsonschema/inheritance_forward_ref.py b/tests/data/expected/main/jsonschema/inheritance_forward_ref.py index 4fa84a107..a8fbcae96 100644 --- a/tests/data/expected/main/jsonschema/inheritance_forward_ref.py +++ b/tests/data/expected/main/jsonschema/inheritance_forward_ref.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -19,8 +19,8 @@ class PersonBase(BaseModel): class PersonsBestFriend(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') - dogs: Optional[List[Dog]] = Field(None, title='Dogs') + people: Optional[list[Person]] = Field(None, title='People') + dogs: Optional[list[Dog]] = Field(None, title='Dogs') dog_base: Optional[DogBase] = None dog_relationships: Optional[DogRelationships] = None person_base: Optional[PersonBase] = None @@ -28,11 +28,11 @@ class PersonsBestFriend(BaseModel): class DogRelationships(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') + people: Optional[list[Person]] = Field(None, title='People') class PersonRelationships(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') + people: Optional[list[Person]] = Field(None, title='People') class Dog(DogBase, DogRelationships): diff --git a/tests/data/expected/main/jsonschema/inheritance_forward_ref_keep_model_order.py b/tests/data/expected/main/jsonschema/inheritance_forward_ref_keep_model_order.py index 2b8912ba9..8c3cd7074 100644 --- a/tests/data/expected/main/jsonschema/inheritance_forward_ref_keep_model_order.py +++ b/tests/data/expected/main/jsonschema/inheritance_forward_ref_keep_model_order.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -15,7 +15,7 @@ class DogBase(BaseModel): class DogRelationships(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') + people: Optional[list[Person]] = Field(None, title='People') class Dog(DogBase, DogRelationships): @@ -27,7 +27,7 @@ class PersonBase(BaseModel): class PersonRelationships(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') + people: Optional[list[Person]] = Field(None, title='People') class Person(PersonBase, PersonRelationships): @@ -35,8 +35,8 @@ class Person(PersonBase, PersonRelationships): class PersonsBestFriend(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') - dogs: Optional[List[Dog]] = Field(None, title='Dogs') + people: Optional[list[Person]] = Field(None, title='People') + dogs: Optional[list[Dog]] = Field(None, title='Dogs') dog_base: Optional[DogBase] = None dog_relationships: Optional[DogRelationships] = None person_base: Optional[PersonBase] = None diff --git a/tests/data/expected/main/jsonschema/invalid_import_name/array_commons_schema.py b/tests/data/expected/main/jsonschema/invalid_import_name/array_commons_schema.py index 349538f73..01c8aa2d6 100644 --- a/tests/data/expected/main/jsonschema/invalid_import_name/array_commons_schema.py +++ b/tests/data/expected/main/jsonschema/invalid_import_name/array_commons_schema.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List +from typing import Any from pydantic import Field, RootModel @@ -13,5 +13,5 @@ class Commons(RootModel[Any]): root: Any = Field(..., description='Commons objects', title='Commons') -class DefaultArray(RootModel[List[Any]]): - root: List[Any] = Field(..., max_length=100, min_length=1) +class DefaultArray(RootModel[list[Any]]): + root: list[Any] = Field(..., max_length=100, min_length=1) diff --git a/tests/data/expected/main/jsonschema/invalid_model_name.py b/tests/data/expected/main/jsonschema/invalid_model_name.py index f40e4bdb1..cb9f2ae67 100644 --- a/tests/data/expected/main/jsonschema/invalid_model_name.py +++ b/tests/data/expected/main/jsonschema/invalid_model_name.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -15,5 +15,5 @@ class ValidModelName(BaseModel): age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None diff --git a/tests/data/expected/main/jsonschema/items_boolean.py b/tests/data/expected/main/jsonschema/items_boolean.py index 10b00ba25..04f0cdfb0 100644 --- a/tests/data/expected/main/jsonschema/items_boolean.py +++ b/tests/data/expected/main/jsonschema/items_boolean.py @@ -4,10 +4,10 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel class Model(BaseModel): - example: Optional[List[Any]] = None + example: Optional[list[Any]] = None diff --git a/tests/data/expected/main/jsonschema/json_pointer_array.py b/tests/data/expected/main/jsonschema/json_pointer_array.py index eb19911eb..1c482df4a 100644 --- a/tests/data/expected/main/jsonschema/json_pointer_array.py +++ b/tests/data/expected/main/jsonschema/json_pointer_array.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Union +from typing import Union from pydantic import BaseModel, EmailStr @@ -18,11 +18,11 @@ class Error(BaseModel): class Model1(BaseModel): - emails: List[Email] + emails: list[Email] class Model2(BaseModel): - errors: List[Error] + errors: list[Error] class Model(BaseModel): diff --git a/tests/data/expected/main/jsonschema/json_reuse_enum.py b/tests/data/expected/main/jsonschema/json_reuse_enum.py index 80a1eddeb..8981565cb 100644 --- a/tests/data/expected/main/jsonschema/json_reuse_enum.py +++ b/tests/data/expected/main/jsonschema/json_reuse_enum.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -25,10 +25,10 @@ class User(BaseModel): name: Optional[str] = None animal: Optional[Animal] = 'dog' pet: Optional[Animal] = 'cat' - redistribute: Optional[List[RedistributeEnum]] = None + redistribute: Optional[list[RedistributeEnum]] = None class Redistribute(BaseModel): - __root__: List[RedistributeEnum] = Field( + __root__: list[RedistributeEnum] = Field( ..., description='Redistribute type for routes.' ) diff --git a/tests/data/expected/main/jsonschema/json_reuse_enum_default_member.py b/tests/data/expected/main/jsonschema/json_reuse_enum_default_member.py index 99b774829..5cbaf4cd2 100644 --- a/tests/data/expected/main/jsonschema/json_reuse_enum_default_member.py +++ b/tests/data/expected/main/jsonschema/json_reuse_enum_default_member.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -25,10 +25,10 @@ class User(BaseModel): name: Optional[str] = None animal: Optional[Animal] = Animal.dog pet: Optional[Animal] = Animal.cat - redistribute: Optional[List[RedistributeEnum]] = None + redistribute: Optional[list[RedistributeEnum]] = None class Redistribute(BaseModel): - __root__: List[RedistributeEnum] = Field( + __root__: list[RedistributeEnum] = Field( ..., description='Redistribute type for routes.' ) diff --git a/tests/data/expected/main/jsonschema/jsonschema_collapse_root_models_nested_reference.py b/tests/data/expected/main/jsonschema/jsonschema_collapse_root_models_nested_reference.py index 1b3f767e7..86c9abf42 100644 --- a/tests/data/expected/main/jsonschema/jsonschema_collapse_root_models_nested_reference.py +++ b/tests/data/expected/main/jsonschema/jsonschema_collapse_root_models_nested_reference.py @@ -4,8 +4,6 @@ from __future__ import annotations -from typing import List - from pydantic import BaseModel @@ -14,4 +12,4 @@ class SomeRef(BaseModel): class Model(BaseModel): - refs: List[SomeRef] + refs: list[SomeRef] diff --git a/tests/data/expected/main/jsonschema/jsonschema_empty_items_array.py b/tests/data/expected/main/jsonschema/jsonschema_empty_items_array.py index 748847895..9f383410e 100644 --- a/tests/data/expected/main/jsonschema/jsonschema_empty_items_array.py +++ b/tests/data/expected/main/jsonschema/jsonschema_empty_items_array.py @@ -4,11 +4,11 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel class Model(BaseModel): - datum_kwargs: Optional[Dict[str, List[Any]]] = None - simple_list: Optional[List[Any]] = None + datum_kwargs: Optional[dict[str, list[Any]]] = None + simple_list: Optional[list[Any]] = None diff --git a/tests/data/expected/main/jsonschema/jsonschema_root_model_ordering.py b/tests/data/expected/main/jsonschema/jsonschema_root_model_ordering.py index a50501b9c..5ba351a5d 100644 --- a/tests/data/expected/main/jsonschema/jsonschema_root_model_ordering.py +++ b/tests/data/expected/main/jsonschema/jsonschema_root_model_ordering.py @@ -4,28 +4,28 @@ from __future__ import annotations -from typing import List, Literal, Optional, Union +from typing import Literal, Optional, Union from pydantic import BaseModel, Field, RootModel class Zoo(BaseModel): - animals: Optional[List[Animals]] = Field(default_factory=list, title='Animals') + animals: Optional[list[Animals]] = Field(default_factory=list, title='Animals') class Dog(BaseModel): name: Literal['dog'] = Field('dog', title='woof') - friends: Optional[List[Friends]] = Field(default_factory=list, title='Friends') + friends: Optional[list[Friends]] = Field(default_factory=list, title='Friends') class Cat(BaseModel): name: Literal['cat'] = Field('cat', title='meow') - friends: Optional[List[Friends]] = Field(default_factory=list, title='Friends') + friends: Optional[list[Friends]] = Field(default_factory=list, title='Friends') class Bird(BaseModel): name: Literal['bird'] = Field('bird', title='chirp') - friends: Optional[List[Friends]] = Field(default_factory=list, title='Friends') + friends: Optional[list[Friends]] = Field(default_factory=list, title='Friends') class Animals(RootModel[Union[Dog, Cat, Bird]]): diff --git a/tests/data/expected/main/jsonschema/jsonschema_root_model_ordering_keep_model_order.py b/tests/data/expected/main/jsonschema/jsonschema_root_model_ordering_keep_model_order.py index cddef42f7..ae60860cb 100644 --- a/tests/data/expected/main/jsonschema/jsonschema_root_model_ordering_keep_model_order.py +++ b/tests/data/expected/main/jsonschema/jsonschema_root_model_ordering_keep_model_order.py @@ -4,24 +4,24 @@ from __future__ import annotations -from typing import List, Literal, Optional, Union +from typing import Literal, Optional, Union from pydantic import BaseModel, Field, RootModel class Bird(BaseModel): name: Literal['bird'] = Field('bird', title='chirp') - friends: Optional[List[Friends]] = Field(default_factory=list, title='Friends') + friends: Optional[list[Friends]] = Field(default_factory=list, title='Friends') class Cat(BaseModel): name: Literal['cat'] = Field('cat', title='meow') - friends: Optional[List[Friends]] = Field(default_factory=list, title='Friends') + friends: Optional[list[Friends]] = Field(default_factory=list, title='Friends') class Dog(BaseModel): name: Literal['dog'] = Field('dog', title='woof') - friends: Optional[List[Friends]] = Field(default_factory=list, title='Friends') + friends: Optional[list[Friends]] = Field(default_factory=list, title='Friends') class Animals(RootModel[Union[Dog, Cat, Bird]]): @@ -33,7 +33,7 @@ class Friends(RootModel[Union[Dog, Cat, Bird]]): class Zoo(BaseModel): - animals: Optional[List[Animals]] = Field(default_factory=list, title='Animals') + animals: Optional[list[Animals]] = Field(default_factory=list, title='Animals') Bird.model_rebuild() diff --git a/tests/data/expected/main/jsonschema/keep_model_order_field_references.py b/tests/data/expected/main/jsonschema/keep_model_order_field_references.py index 8f9edd17d..8e28dc8ec 100644 --- a/tests/data/expected/main/jsonschema/keep_model_order_field_references.py +++ b/tests/data/expected/main/jsonschema/keep_model_order_field_references.py @@ -2,7 +2,7 @@ # filename: keep_model_order_field_references.json # timestamp: 2019-07-26T00:00:00+00:00 -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -12,4 +12,4 @@ class Metadata(BaseModel): class DescriptionType(BaseModel): - metadata: Optional[List[Metadata]] = None + metadata: Optional[list[Metadata]] = None diff --git a/tests/data/expected/main/jsonschema/modular_default_enum_member/foo.py b/tests/data/expected/main/jsonschema/modular_default_enum_member/foo.py index 09921e7a5..ba28ce241 100644 --- a/tests/data/expected/main/jsonschema/modular_default_enum_member/foo.py +++ b/tests/data/expected/main/jsonschema/modular_default_enum_member/foo.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -15,7 +15,7 @@ class Foo(BaseModel): loggerLevel: Optional[bar.LogLevels] = bar.LogLevels.INFO AnotherLoggerLevel: Optional[bar_1.LogLevels] = bar_1.LogLevels.ERROR - OtherLoggerLevels: Optional[List[bar_1.LogLevels]] = [ + OtherLoggerLevels: Optional[list[bar_1.LogLevels]] = [ bar_1.LogLevels.INFO, bar_1.LogLevels.ERROR, ] diff --git a/tests/data/expected/main/jsonschema/nested_directory/_internal.py b/tests/data/expected/main/jsonschema/nested_directory/_internal.py index 9a04b4924..226d6ffee 100644 --- a/tests/data/expected/main/jsonschema/nested_directory/_internal.py +++ b/tests/data/expected/main/jsonschema/nested_directory/_internal.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import BaseModel, Field, conint @@ -26,12 +26,12 @@ class Person(BaseModel): first_name: str = Field(..., description="The person's first name.") last_name: str = Field(..., description="The person's last name.") age: Optional[conint(ge=0)] = Field(None, description='Age in years.') - pets: Optional[List[pet_1.Pet]] = None + pets: Optional[list[pet_1.Pet]] = None friends: Optional[friends_1.Friends] = None robot: Optional[Robot] = None comment: None = None - drink: Optional[List[Union[coffee.Coffee, tea.Tea]]] = None - food: Optional[List[Union[food_1.Noodle, food_1.Soup]]] = None + drink: Optional[list[Union[coffee.Coffee, tea.Tea]]] = None + food: Optional[list[Union[food_1.Noodle, food_1.Soup]]] = None Person.update_forward_refs() diff --git a/tests/data/expected/main/jsonschema/nested_directory/definitions/friends.py b/tests/data/expected/main/jsonschema/nested_directory/definitions/friends.py index a0ce1296c..33664d6bb 100644 --- a/tests/data/expected/main/jsonschema/nested_directory/definitions/friends.py +++ b/tests/data/expected/main/jsonschema/nested_directory/definitions/friends.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import BaseModel, Extra, Field @@ -17,8 +17,8 @@ class Config: name: str = Field(..., example='John Doe') phone_number: Optional[str] = Field(None, example='(555) 555-1234') - food: Optional[List[Union[food_1.Noodle, food_1.Soup]]] = None + food: Optional[list[Union[food_1.Noodle, food_1.Soup]]] = None class Friends(BaseModel): - __root__: List[Friend] = Field(..., title='Friends') + __root__: list[Friend] = Field(..., title='Friends') diff --git a/tests/data/expected/main/jsonschema/null_and_array.py b/tests/data/expected/main/jsonschema/null_and_array.py index 47abf9240..d8b01714b 100644 --- a/tests/data/expected/main/jsonschema/null_and_array.py +++ b/tests/data/expected/main/jsonschema/null_and_array.py @@ -4,14 +4,14 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel class MyObjItem(BaseModel): - items: Optional[List[Any]] + items: Optional[list[Any]] class Model(BaseModel): - my_obj: List[MyObjItem] + my_obj: list[MyObjItem] diff --git a/tests/data/expected/main/jsonschema/null_and_array_v2.py b/tests/data/expected/main/jsonschema/null_and_array_v2.py index 4e482e6ef..784cf1c02 100644 --- a/tests/data/expected/main/jsonschema/null_and_array_v2.py +++ b/tests/data/expected/main/jsonschema/null_and_array_v2.py @@ -4,14 +4,14 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel class MyObjItem(BaseModel): - items: Optional[List[Any]] = None + items: Optional[list[Any]] = None class Model(BaseModel): - my_obj: List[MyObjItem] + my_obj: list[MyObjItem] diff --git a/tests/data/expected/main/jsonschema/nullable_object.py b/tests/data/expected/main/jsonschema/nullable_object.py index e6833e1a2..7573aadaf 100644 --- a/tests/data/expected/main/jsonschema/nullable_object.py +++ b/tests/data/expected/main/jsonschema/nullable_object.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Dict, Optional +from typing import Optional from pydantic import BaseModel, Extra, constr @@ -20,4 +20,4 @@ class Model(BaseModel): class Config: extra = Extra.forbid - networks: Dict[constr(regex=r'^[a-zA-Z0-9._-]+$'), Optional[Network]] + networks: dict[constr(regex=r'^[a-zA-Z0-9._-]+$'), Optional[Network]] diff --git a/tests/data/expected/main/jsonschema/one_of_with_sub_schema_array_item.py b/tests/data/expected/main/jsonschema/one_of_with_sub_schema_array_item.py index 6255005a2..6bcd04cc7 100644 --- a/tests/data/expected/main/jsonschema/one_of_with_sub_schema_array_item.py +++ b/tests/data/expected/main/jsonschema/one_of_with_sub_schema_array_item.py @@ -4,13 +4,13 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field class SpatialPlan(BaseModel): - officialDocument: Optional[Union[str, List[AnyUrl]]] = Field( + officialDocument: Optional[Union[str, list[AnyUrl]]] = Field( None, description='Link to the official documents that relate to the spatial plan.', title='officialDocument', diff --git a/tests/data/expected/main/jsonschema/oneof_const_enum_nested.py b/tests/data/expected/main/jsonschema/oneof_const_enum_nested.py index 0efeef1fb..78cd7e533 100644 --- a/tests/data/expected/main/jsonschema/oneof_const_enum_nested.py +++ b/tests/data/expected/main/jsonschema/oneof_const_enum_nested.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -22,4 +22,4 @@ class Mode1(Enum): class Config(BaseModel): mode: Optional[Mode] = Field(None, title='Mode') - modes: Optional[List[Mode1]] = None + modes: Optional[list[Mode1]] = None diff --git a/tests/data/expected/main/jsonschema/oneof_const_enum_nested_literal.py b/tests/data/expected/main/jsonschema/oneof_const_enum_nested_literal.py index 15f43cb21..ac8523384 100644 --- a/tests/data/expected/main/jsonschema/oneof_const_enum_nested_literal.py +++ b/tests/data/expected/main/jsonschema/oneof_const_enum_nested_literal.py @@ -4,11 +4,11 @@ from __future__ import annotations -from typing import List, Literal, Optional +from typing import Literal, Optional from pydantic import BaseModel, Field class Config(BaseModel): mode: Optional[Literal['fast', 'slow']] = Field(None, title='Mode') - modes: Optional[List[Literal['a', 'b']]] = None + modes: Optional[list[Literal['a', 'b']]] = None diff --git a/tests/data/expected/main/jsonschema/pattern_properties.py b/tests/data/expected/main/jsonschema/pattern_properties.py index 9278cb590..218bc4778 100644 --- a/tests/data/expected/main/jsonschema/pattern_properties.py +++ b/tests/data/expected/main/jsonschema/pattern_properties.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Dict, Optional +from typing import Optional from pydantic import BaseModel, constr @@ -14,4 +14,4 @@ class Bar(BaseModel): class Foo(BaseModel): - bar: Dict[constr(regex=r'^([a-zA-Z_][a-zA-Z0-9_]*)$'), Bar] + bar: dict[constr(regex=r'^([a-zA-Z_][a-zA-Z0-9_]*)$'), Bar] diff --git a/tests/data/expected/main/jsonschema/pattern_properties_by_reference.py b/tests/data/expected/main/jsonschema/pattern_properties_by_reference.py index 28002d5e9..cb2968f34 100644 --- a/tests/data/expected/main/jsonschema/pattern_properties_by_reference.py +++ b/tests/data/expected/main/jsonschema/pattern_properties_by_reference.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, Dict, Optional +from typing import Any, Optional from pydantic import BaseModel, Extra, Field, constr @@ -20,7 +20,7 @@ class TextResponse(BaseModel): class Config: extra = Extra.forbid - __root__: Dict[constr(regex=r'^[a-z]{1}[0-9]{1}$'), Any] + __root__: dict[constr(regex=r'^[a-z]{1}[0-9]{1}$'), Any] class SomeschemaSchema(BaseModel): @@ -28,7 +28,7 @@ class Config: extra = Extra.forbid KeyWithExplicitPatternProperties: Optional[ - Dict[constr(regex=r'^[a-z]{1}[0-9]{1}$'), Any] + dict[constr(regex=r'^[a-z]{1}[0-9]{1}$'), Any] ] = None KeyWithPatternPropertiesByReference: Optional[TextResponse] = None SomeOtherBoringReference: Optional[Stt] = None diff --git a/tests/data/expected/main/jsonschema/pattern_properties_field_constraints.py b/tests/data/expected/main/jsonschema/pattern_properties_field_constraints.py index 446ff3a2c..b5f54eb64 100644 --- a/tests/data/expected/main/jsonschema/pattern_properties_field_constraints.py +++ b/tests/data/expected/main/jsonschema/pattern_properties_field_constraints.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Dict, Optional +from typing import Optional from pydantic import BaseModel @@ -14,4 +14,4 @@ class Bar(BaseModel): class Foo(BaseModel): - bar: Dict[str, Bar] + bar: dict[str, Bar] diff --git a/tests/data/expected/main/jsonschema/ref_with_additional_keywords/commons_schema.py b/tests/data/expected/main/jsonschema/ref_with_additional_keywords/commons_schema.py index 7b3a067c0..13ffca689 100644 --- a/tests/data/expected/main/jsonschema/ref_with_additional_keywords/commons_schema.py +++ b/tests/data/expected/main/jsonschema/ref_with_additional_keywords/commons_schema.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List +from typing import Any from pydantic import Field, RootModel @@ -13,5 +13,5 @@ class Commons(RootModel[Any]): root: Any = Field(..., description='Commons objects', title='Commons') -class DefaultArray(RootModel[List[Any]]): - root: List[Any] = Field(..., max_length=100, min_length=1) +class DefaultArray(RootModel[list[Any]]): + root: list[Any] = Field(..., max_length=100, min_length=1) diff --git a/tests/data/expected/main/jsonschema/ref_with_additional_keywords/products_schema.py b/tests/data/expected/main/jsonschema/ref_with_additional_keywords/products_schema.py index a9b2e8689..4be1f4170 100644 --- a/tests/data/expected/main/jsonschema/ref_with_additional_keywords/products_schema.py +++ b/tests/data/expected/main/jsonschema/ref_with_additional_keywords/products_schema.py @@ -4,13 +4,11 @@ from __future__ import annotations -from typing import List - from pydantic import Field, RootModel -class Products(RootModel[List[str]]): - root: List[str] = Field( +class Products(RootModel[list[str]]): + root: list[str] = Field( ..., description='The products in the catalog', max_length=100, diff --git a/tests/data/expected/main/jsonschema/root_id.py b/tests/data/expected/main/jsonschema/root_id.py index c1652b802..3586d1fcc 100644 --- a/tests/data/expected/main/jsonschema/root_id.py +++ b/tests/data/expected/main/jsonschema/root_id.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -19,7 +19,7 @@ class Person(BaseModel): age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None diff --git a/tests/data/expected/main/jsonschema/root_id_absolute_url.py b/tests/data/expected/main/jsonschema/root_id_absolute_url.py index da3b251f0..fea4e017a 100644 --- a/tests/data/expected/main/jsonschema/root_id_absolute_url.py +++ b/tests/data/expected/main/jsonschema/root_id_absolute_url.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -19,7 +19,7 @@ class Person(BaseModel): age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None diff --git a/tests/data/expected/main/jsonschema/root_model_default_value_branches.py b/tests/data/expected/main/jsonschema/root_model_default_value_branches.py index e4aad8a7c..7698381bd 100644 --- a/tests/data/expected/main/jsonschema/root_model_default_value_branches.py +++ b/tests/data/expected/main/jsonschema/root_model_default_value_branches.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, Optional +from typing import Annotated, Optional from pydantic import BaseModel, Field, RootModel @@ -20,6 +20,6 @@ class Model(BaseModel): ] count_no_default: Optional[CountType] = None count_list_default: Annotated[ - Optional[List[CountType]], + Optional[list[CountType]], Field(default_factory=lambda: [CountType.model_validate(v) for v in [1, 2, 3]]), ] diff --git a/tests/data/expected/main/jsonschema/root_model_with_additional_properties.py b/tests/data/expected/main/jsonschema/root_model_with_additional_properties.py index 3f6f650b3..f0610d87d 100644 --- a/tests/data/expected/main/jsonschema/root_model_with_additional_properties.py +++ b/tests/data/expected/main/jsonschema/root_model_with_additional_properties.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import Dict, Optional, Union +from typing import Optional, Union from pydantic import BaseModel, Field @@ -38,12 +38,12 @@ class AllOfResult(User): class Model(BaseModel): test_id: str = Field(..., description='test ID') test_ip: str = Field(..., description='test IP') - result: Dict[str, int] - nested_object_result: Dict[str, NestedObjectResult] - nested_enum_result: Dict[str, NestedEnumResult] - all_of_result: Optional[Dict[str, AllOfResult]] = None - one_of_result: Optional[Dict[str, Union[User, OneOfResult]]] = None - any_of_result: Optional[Dict[str, Union[User, AnyOfResult]]] = None - all_of_with_unknown_object: Optional[Dict[str, User]] = None - objectRef: Optional[Dict[str, User]] = None - deepNestedObjectRef: Optional[Dict[str, Dict[str, Dict[str, User]]]] = None + result: dict[str, int] + nested_object_result: dict[str, NestedObjectResult] + nested_enum_result: dict[str, NestedEnumResult] + all_of_result: Optional[dict[str, AllOfResult]] = None + one_of_result: Optional[dict[str, Union[User, OneOfResult]]] = None + any_of_result: Optional[dict[str, Union[User, AnyOfResult]]] = None + all_of_with_unknown_object: Optional[dict[str, User]] = None + objectRef: Optional[dict[str, User]] = None + deepNestedObjectRef: Optional[dict[str, dict[str, dict[str, User]]]] = None diff --git a/tests/data/expected/main/jsonschema/root_model_with_additional_properties_custom_class_name.py b/tests/data/expected/main/jsonschema/root_model_with_additional_properties_custom_class_name.py index b4c86a55d..1d944d253 100644 --- a/tests/data/expected/main/jsonschema/root_model_with_additional_properties_custom_class_name.py +++ b/tests/data/expected/main/jsonschema/root_model_with_additional_properties_custom_class_name.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import Dict, Optional, Union +from typing import Optional, Union from pydantic import BaseModel, Field @@ -38,12 +38,12 @@ class CustomAllOfResult(CustomUser): class CustomModel(BaseModel): test_id: str = Field(..., description='test ID') test_ip: str = Field(..., description='test IP') - result: Dict[str, int] - nested_object_result: Dict[str, CustomNestedObjectResult] - nested_enum_result: Dict[str, CustomNestedEnumResult] - all_of_result: Optional[Dict[str, CustomAllOfResult]] = None - one_of_result: Optional[Dict[str, Union[CustomUser, CustomOneOfResult]]] = None - any_of_result: Optional[Dict[str, Union[CustomUser, CustomAnyOfResult]]] = None - all_of_with_unknown_object: Optional[Dict[str, CustomUser]] = None - objectRef: Optional[Dict[str, CustomUser]] = None - deepNestedObjectRef: Optional[Dict[str, Dict[str, Dict[str, CustomUser]]]] = None + result: dict[str, int] + nested_object_result: dict[str, CustomNestedObjectResult] + nested_enum_result: dict[str, CustomNestedEnumResult] + all_of_result: Optional[dict[str, CustomAllOfResult]] = None + one_of_result: Optional[dict[str, Union[CustomUser, CustomOneOfResult]]] = None + any_of_result: Optional[dict[str, Union[CustomUser, CustomAnyOfResult]]] = None + all_of_with_unknown_object: Optional[dict[str, CustomUser]] = None + objectRef: Optional[dict[str, CustomUser]] = None + deepNestedObjectRef: Optional[dict[str, dict[str, dict[str, CustomUser]]]] = None diff --git a/tests/data/expected/main/jsonschema/root_model_with_additional_properties_literal.py b/tests/data/expected/main/jsonschema/root_model_with_additional_properties_literal.py index 66c2ad0e2..9046422c5 100644 --- a/tests/data/expected/main/jsonschema/root_model_with_additional_properties_literal.py +++ b/tests/data/expected/main/jsonschema/root_model_with_additional_properties_literal.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Dict, Literal, Optional, Union +from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -32,12 +32,12 @@ class AllOfResult(User): class Model(BaseModel): test_id: str = Field(..., description='test ID') test_ip: str = Field(..., description='test IP') - result: Dict[str, int] - nested_object_result: Dict[str, NestedObjectResult] - nested_enum_result: Dict[str, Literal['red', 'green']] - all_of_result: Optional[Dict[str, AllOfResult]] = None - one_of_result: Optional[Dict[str, Union[User, OneOfResult]]] = None - any_of_result: Optional[Dict[str, Union[User, AnyOfResult]]] = None - all_of_with_unknown_object: Optional[Dict[str, User]] = None - objectRef: Optional[Dict[str, User]] = None - deepNestedObjectRef: Optional[Dict[str, Dict[str, Dict[str, User]]]] = None + result: dict[str, int] + nested_object_result: dict[str, NestedObjectResult] + nested_enum_result: dict[str, Literal['red', 'green']] + all_of_result: Optional[dict[str, AllOfResult]] = None + one_of_result: Optional[dict[str, Union[User, OneOfResult]]] = None + any_of_result: Optional[dict[str, Union[User, AnyOfResult]]] = None + all_of_with_unknown_object: Optional[dict[str, User]] = None + objectRef: Optional[dict[str, User]] = None + deepNestedObjectRef: Optional[dict[str, dict[str, dict[str, User]]]] = None diff --git a/tests/data/expected/main/jsonschema/root_model_with_additional_properties_use_generic_container_types.py b/tests/data/expected/main/jsonschema/root_model_with_additional_properties_use_generic_container_types.py index 3ea38a9ff..161552637 100644 --- a/tests/data/expected/main/jsonschema/root_model_with_additional_properties_use_generic_container_types.py +++ b/tests/data/expected/main/jsonschema/root_model_with_additional_properties_use_generic_container_types.py @@ -4,8 +4,9 @@ from __future__ import annotations +from collections.abc import Mapping from enum import Enum -from typing import Mapping, Optional, Union +from typing import Optional, Union from pydantic import BaseModel, Field diff --git a/tests/data/expected/main/jsonschema/root_one_of/foo.py b/tests/data/expected/main/jsonschema/root_one_of/foo.py index 3a64f2afa..03c3f6776 100644 --- a/tests/data/expected/main/jsonschema/root_one_of/foo.py +++ b/tests/data/expected/main/jsonschema/root_one_of/foo.py @@ -4,13 +4,13 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field class JobRun(BaseModel): enabled: Optional[bool] = Field(False, description='If Live Execution is enabled') - resources: Optional[List[str]] = Field( + resources: Optional[list[str]] = Field( None, description='Resource full classname to register to extend any endpoints.' ) diff --git a/tests/data/expected/main/jsonschema/same_name_objects.py b/tests/data/expected/main/jsonschema/same_name_objects.py index 6d19d9d94..2462fe5ae 100644 --- a/tests/data/expected/main/jsonschema/same_name_objects.py +++ b/tests/data/expected/main/jsonschema/same_name_objects.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List +from typing import Any from pydantic import BaseModel, Extra @@ -21,7 +21,7 @@ class Config: class FriendsModel(BaseModel): - __root__: List[Any] + __root__: list[Any] class Tst2(BaseModel): diff --git a/tests/data/expected/main/jsonschema/self_reference.py b/tests/data/expected/main/jsonschema/self_reference.py index 360433e39..3447c741d 100644 --- a/tests/data/expected/main/jsonschema/self_reference.py +++ b/tests/data/expected/main/jsonschema/self_reference.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel, Field @@ -15,7 +15,7 @@ class Model(BaseModel): class Pet(BaseModel): name: Optional[str] = Field(None, examples=['dog', 'cat']) - friends: Optional[List[Pet]] = None + friends: Optional[list[Pet]] = None Pet.update_forward_refs() diff --git a/tests/data/expected/main/jsonschema/similar_nested_array.py b/tests/data/expected/main/jsonschema/similar_nested_array.py index 3fe14d941..aa1fb262b 100644 --- a/tests/data/expected/main/jsonschema/similar_nested_array.py +++ b/tests/data/expected/main/jsonschema/similar_nested_array.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -19,7 +19,7 @@ class Datum(BaseModel): class ObjectA(BaseModel): - data: Optional[List[Datum]] = None + data: Optional[list[Datum]] = None class Datum1(BaseModel): @@ -27,7 +27,7 @@ class Datum1(BaseModel): class ObjectB(BaseModel): - data: Optional[List[Datum1]] = None + data: Optional[list[Datum1]] = None class KeyC(BaseModel): @@ -63,4 +63,4 @@ class KeyCEnum1(Enum): class ObjectD(BaseModel): - keyC: Optional[List[Union[KeyCItem, KeyCItem1, KeyCEnum, KeyCEnum1]]] = None + keyC: Optional[list[Union[KeyCItem, KeyCItem1, KeyCEnum, KeyCEnum1]]] = None diff --git a/tests/data/expected/main/jsonschema/string_dict.py b/tests/data/expected/main/jsonschema/string_dict.py index 419cd6ef7..bf09d26a2 100644 --- a/tests/data/expected/main/jsonschema/string_dict.py +++ b/tests/data/expected/main/jsonschema/string_dict.py @@ -4,10 +4,8 @@ from __future__ import annotations -from typing import Dict - from pydantic import BaseModel class MyStringDict(BaseModel): - __root__: Dict[str, str] + __root__: dict[str, str] diff --git a/tests/data/expected/main/jsonschema/titles.py b/tests/data/expected/main/jsonschema/titles.py index 327adb46d..9eae10e38 100644 --- a/tests/data/expected/main/jsonschema/titles.py +++ b/tests/data/expected/main/jsonschema/titles.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import BaseModel, Field @@ -30,7 +30,7 @@ class ProcessingStatusUnion(BaseModel): class ProcessingTasksTitle(BaseModel): - __root__: List[ProcessingTask] = Field(..., title='Processing Tasks Title') + __root__: list[ProcessingTask] = Field(..., title='Processing Tasks Title') class ExtendedProcessingTask(BaseModel): @@ -40,7 +40,7 @@ class ExtendedProcessingTask(BaseModel): class ExtendedProcessingTasks(BaseModel): - __root__: List[ExtendedProcessingTask] = Field( + __root__: list[ExtendedProcessingTask] = Field( ..., title='Extended Processing Tasks Title' ) diff --git a/tests/data/expected/main/jsonschema/titles_use_title_as_name.py b/tests/data/expected/main/jsonschema/titles_use_title_as_name.py index 0d4e322aa..8305b5456 100644 --- a/tests/data/expected/main/jsonschema/titles_use_title_as_name.py +++ b/tests/data/expected/main/jsonschema/titles_use_title_as_name.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import BaseModel, Field @@ -30,7 +30,7 @@ class ProcessingStatusDetail(BaseModel): class ProcessingTasksTitle(BaseModel): - __root__: List[ProcessingTaskTitle] = Field(..., title='Processing Tasks Title') + __root__: list[ProcessingTaskTitle] = Field(..., title='Processing Tasks Title') class ExtendedProcessingTask(BaseModel): @@ -40,7 +40,7 @@ class ExtendedProcessingTask(BaseModel): class ExtendedProcessingTasksTitle(BaseModel): - __root__: List[ExtendedProcessingTask] = Field( + __root__: list[ExtendedProcessingTask] = Field( ..., title='Extended Processing Tasks Title' ) diff --git a/tests/data/expected/main/jsonschema/type_alias.py b/tests/data/expected/main/jsonschema/type_alias.py index 18662f26e..dbc19ee54 100644 --- a/tests/data/expected/main/jsonschema/type_alias.py +++ b/tests/data/expected/main/jsonschema/type_alias.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, Any, List, Optional, TypeAlias, Union +from typing import Annotated, Any, Optional, TypeAlias, Union from pydantic import BaseModel, Field @@ -17,7 +17,7 @@ UnionType: TypeAlias = Union[str, int] -ArrayType: TypeAlias = List[str] +ArrayType: TypeAlias = list[str] AnnotatedType: TypeAlias = Annotated[ diff --git a/tests/data/expected/main/jsonschema/type_alias_py312.py b/tests/data/expected/main/jsonschema/type_alias_py312.py index c1232ba1f..49f45f75a 100644 --- a/tests/data/expected/main/jsonschema/type_alias_py312.py +++ b/tests/data/expected/main/jsonschema/type_alias_py312.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, Any, List, Optional, Union +from typing import Annotated, Any, Optional, Union from pydantic import BaseModel, Field @@ -17,7 +17,7 @@ type UnionType = Union[str, int] -type ArrayType = List[str] +type ArrayType = list[str] type AnnotatedType = Annotated[ diff --git a/tests/data/expected/main/jsonschema/type_alias_with_circular_ref_to_class_msgspec.py b/tests/data/expected/main/jsonschema/type_alias_with_circular_ref_to_class_msgspec.py index c6283a04c..2fbd2ebad 100644 --- a/tests/data/expected/main/jsonschema/type_alias_with_circular_ref_to_class_msgspec.py +++ b/tests/data/expected/main/jsonschema/type_alias_with_circular_ref_to_class_msgspec.py @@ -4,21 +4,21 @@ from __future__ import annotations -from typing import List, TypeAlias, Union +from typing import TypeAlias, Union from msgspec import Struct class Defaults(Struct): - a: List[Span] + a: list[Span] class SpanB(Struct): - recur: List[Span] + recur: list[Span] Either: TypeAlias = Union[SpanB, "Span"] class Span(Struct): - recur: List[Either] + recur: list[Either] diff --git a/tests/data/expected/main/jsonschema/type_alias_with_field_description.py b/tests/data/expected/main/jsonschema/type_alias_with_field_description.py index a483bda36..82129cb06 100644 --- a/tests/data/expected/main/jsonschema/type_alias_with_field_description.py +++ b/tests/data/expected/main/jsonschema/type_alias_with_field_description.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, Any, List, Optional, TypeAlias, Union +from typing import Annotated, Any, Optional, TypeAlias, Union from pydantic import BaseModel, Field @@ -17,7 +17,7 @@ UnionType: TypeAlias = Union[str, int] -ArrayType: TypeAlias = List[str] +ArrayType: TypeAlias = list[str] AnnotatedType: TypeAlias = Annotated[ diff --git a/tests/data/expected/main/jsonschema/type_alias_with_field_description_py312.py b/tests/data/expected/main/jsonschema/type_alias_with_field_description_py312.py index 4281841fc..1068e4a01 100644 --- a/tests/data/expected/main/jsonschema/type_alias_with_field_description_py312.py +++ b/tests/data/expected/main/jsonschema/type_alias_with_field_description_py312.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, Any, List, Optional, Union +from typing import Annotated, Any, Optional, Union from pydantic import BaseModel, Field @@ -17,7 +17,7 @@ type UnionType = Union[str, int] -type ArrayType = List[str] +type ArrayType = list[str] type AnnotatedType = Annotated[Union[str, bool], Field(..., title='MyAnnotatedType')] diff --git a/tests/data/expected/main/jsonschema/typed_dict_with_only_additional_properties.py b/tests/data/expected/main/jsonschema/typed_dict_with_only_additional_properties.py index f930b3330..3839e9049 100644 --- a/tests/data/expected/main/jsonschema/typed_dict_with_only_additional_properties.py +++ b/tests/data/expected/main/jsonschema/typed_dict_with_only_additional_properties.py @@ -4,6 +4,6 @@ from __future__ import annotations -from typing import Dict, TypeAlias +from typing import TypeAlias -MyStringDict: TypeAlias = Dict[str, str] +MyStringDict: TypeAlias = dict[str, str] diff --git a/tests/data/expected/main/jsonschema/use_frozen_field_no_readonly.py b/tests/data/expected/main/jsonschema/use_frozen_field_no_readonly.py index 49eb04756..21e460322 100644 --- a/tests/data/expected/main/jsonschema/use_frozen_field_no_readonly.py +++ b/tests/data/expected/main/jsonschema/use_frozen_field_no_readonly.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel, Field, RootModel @@ -15,7 +15,7 @@ class Model(RootModel[Any]): class User(BaseModel): name: Optional[str] = Field(None, examples=['ken']) - pets: List[User] = Field(default_factory=list) + pets: list[User] = Field(default_factory=list) class Pet(BaseModel): diff --git a/tests/data/expected/main/jsonschema/use_union_operator/_internal.py b/tests/data/expected/main/jsonschema/use_union_operator/_internal.py index 8f7272fc1..39412ce70 100644 --- a/tests/data/expected/main/jsonschema/use_union_operator/_internal.py +++ b/tests/data/expected/main/jsonschema/use_union_operator/_internal.py @@ -4,8 +4,6 @@ from __future__ import annotations -from typing import List - from pydantic import BaseModel, Field, conint from .definitions import food as food_1 @@ -26,12 +24,12 @@ class Person(BaseModel): first_name: str = Field(..., description="The person's first name.") last_name: str = Field(..., description="The person's last name.") age: conint(ge=0) | None = Field(None, description='Age in years.') - pets: List[pet_1.Pet] | None = None + pets: list[pet_1.Pet] | None = None friends: friends_1.Friends | None = None robot: Robot | None = None comment: None = None - drink: List[coffee.Coffee | tea.Tea] | None = None - food: List[food_1.Noodle | food_1.Soup] | None = None + drink: list[coffee.Coffee | tea.Tea] | None = None + food: list[food_1.Noodle | food_1.Soup] | None = None Person.update_forward_refs() diff --git a/tests/data/expected/main/jsonschema/use_union_operator/definitions/friends.py b/tests/data/expected/main/jsonschema/use_union_operator/definitions/friends.py index 1fdd7ae0e..7d482eed5 100644 --- a/tests/data/expected/main/jsonschema/use_union_operator/definitions/friends.py +++ b/tests/data/expected/main/jsonschema/use_union_operator/definitions/friends.py @@ -4,8 +4,6 @@ from __future__ import annotations -from typing import List - from pydantic import BaseModel, Extra, Field from . import food as food_1 @@ -17,8 +15,8 @@ class Config: name: str = Field(..., example='John Doe') phone_number: str | None = Field(None, example='(555) 555-1234') - food: List[food_1.Noodle | food_1.Soup] | None = None + food: list[food_1.Noodle | food_1.Soup] | None = None class Friends(BaseModel): - __root__: List[Friend] = Field(..., title='Friends') + __root__: list[Friend] = Field(..., title='Friends') diff --git a/tests/data/expected/main/jsonschema/without_titles_use_title_as_name.py b/tests/data/expected/main/jsonschema/without_titles_use_title_as_name.py index 26bdc57e0..978072cab 100644 --- a/tests/data/expected/main/jsonschema/without_titles_use_title_as_name.py +++ b/tests/data/expected/main/jsonschema/without_titles_use_title_as_name.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import BaseModel @@ -30,7 +30,7 @@ class ProcessingStatusUnion(BaseModel): class Model(BaseModel): - __root__: List[ProcessingTask] + __root__: list[ProcessingTask] class ExtendedProcessingTask(BaseModel): @@ -38,7 +38,7 @@ class ExtendedProcessingTask(BaseModel): class ExtendedProcessingTasks(BaseModel): - __root__: List[ExtendedProcessingTask] + __root__: list[ExtendedProcessingTask] class ProcessingTask(BaseModel): diff --git a/tests/data/expected/main/openapi/additional_properties.py b/tests/data/expected/main/openapi/additional_properties.py index d006626e9..e71f87edd 100644 --- a/tests/data/expected/main/openapi/additional_properties.py +++ b/tests/data/expected/main/openapi/additional_properties.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Dict, List, Optional +from typing import Optional from pydantic import BaseModel, Extra, Field @@ -22,7 +22,7 @@ class Pets(BaseModel): class Config: extra = Extra.forbid - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -38,7 +38,7 @@ class Users(BaseModel): class Config: extra = Extra.forbid - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -52,7 +52,7 @@ class Rules(BaseModel): class Config: extra = Extra.forbid - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -89,7 +89,7 @@ class BrokenArray(BaseModel): class Config: extra = Extra.forbid - broken: Optional[Dict[str, List[Broken]]] = None + broken: Optional[dict[str, list[Broken]]] = None class FileSetUpload(BaseModel): @@ -97,7 +97,7 @@ class Config: extra = Extra.forbid task_id: Optional[str] = Field(None, title='task id') - tags: Dict[str, List[str]] = Field( + tags: dict[str, list[str]] = Field( ..., title='Dict of tags, each containing a list of file names' ) @@ -106,5 +106,5 @@ class Test(BaseModel): class Config: extra = Extra.forbid - broken: Optional[Dict[str, Broken]] = None - failing: Optional[Dict[str, str]] = {} + broken: Optional[dict[str, Broken]] = None + failing: Optional[dict[str, str]] = {} diff --git a/tests/data/expected/main/openapi/allof_partial_override_array_items.py b/tests/data/expected/main/openapi/allof_partial_override_array_items.py index 1616cd689..9d2134dce 100644 --- a/tests/data/expected/main/openapi/allof_partial_override_array_items.py +++ b/tests/data/expected/main/openapi/allof_partial_override_array_items.py @@ -4,16 +4,16 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel class Thing(BaseModel): type: Optional[str] = 'playground:Thing' - type_list: Optional[List[str]] = ['playground:Thing'] + type_list: Optional[list[str]] = ['playground:Thing'] class Person(Thing): type: Optional[str] = 'playground:Person' - type_list: Optional[List[str]] = ['playground:Person'] + type_list: Optional[list[str]] = ['playground:Person'] diff --git a/tests/data/expected/main/openapi/allof_partial_override_array_items_no_parent.py b/tests/data/expected/main/openapi/allof_partial_override_array_items_no_parent.py index 1f46f85b6..cd07d55c4 100644 --- a/tests/data/expected/main/openapi/allof_partial_override_array_items_no_parent.py +++ b/tests/data/expected/main/openapi/allof_partial_override_array_items_no_parent.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, List, Optional +from typing import Any, Optional from pydantic import BaseModel @@ -14,4 +14,4 @@ class Thing(BaseModel): class Person(Thing): - tags: Optional[List[Any]] = ['tag1'] + tags: Optional[list[Any]] = ['tag1'] diff --git a/tests/data/expected/main/openapi/allof_partial_override_deeply_nested_array.py b/tests/data/expected/main/openapi/allof_partial_override_deeply_nested_array.py index 2b29999f2..ca5d8da8c 100644 --- a/tests/data/expected/main/openapi/allof_partial_override_deeply_nested_array.py +++ b/tests/data/expected/main/openapi/allof_partial_override_deeply_nested_array.py @@ -4,14 +4,14 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel class Thing(BaseModel): - cube: Optional[List[List[List[str]]]] = [[['a']]] + cube: Optional[list[list[list[str]]]] = [[['a']]] class Person(Thing): - cube: Optional[List[List[List[str]]]] = [[['b']]] + cube: Optional[list[list[list[str]]]] = [[['b']]] diff --git a/tests/data/expected/main/openapi/allof_partial_override_nested_array_items.py b/tests/data/expected/main/openapi/allof_partial_override_nested_array_items.py index 0dfd03b18..5a8eb5766 100644 --- a/tests/data/expected/main/openapi/allof_partial_override_nested_array_items.py +++ b/tests/data/expected/main/openapi/allof_partial_override_nested_array_items.py @@ -4,14 +4,14 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel class Thing(BaseModel): - matrix: Optional[List[List[str]]] = [['a', 'b']] + matrix: Optional[list[list[str]]] = [['a', 'b']] class Person(Thing): - matrix: Optional[List[List[str]]] = [['c', 'd']] + matrix: Optional[list[list[str]]] = [['c', 'd']] diff --git a/tests/data/expected/main/openapi/allof_partial_override_simple_list_any.py b/tests/data/expected/main/openapi/allof_partial_override_simple_list_any.py index 30f5a75f5..8fbeb2e37 100644 --- a/tests/data/expected/main/openapi/allof_partial_override_simple_list_any.py +++ b/tests/data/expected/main/openapi/allof_partial_override_simple_list_any.py @@ -4,14 +4,14 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel class Parent(BaseModel): - items: Optional[List[str]] = None + items: Optional[list[str]] = None class Child(Parent): - items: Optional[List[str]] = None + items: Optional[list[str]] = None diff --git a/tests/data/expected/main/openapi/allof_partial_override_unique_items.py b/tests/data/expected/main/openapi/allof_partial_override_unique_items.py index e2c9252fe..e3696b160 100644 --- a/tests/data/expected/main/openapi/allof_partial_override_unique_items.py +++ b/tests/data/expected/main/openapi/allof_partial_override_unique_items.py @@ -4,14 +4,14 @@ from __future__ import annotations -from typing import Optional, Set +from typing import Optional from pydantic import BaseModel, Field class Thing(BaseModel): - tags: Optional[Set[str]] = Field(None, unique_items=True) + tags: Optional[set[str]] = Field(None, unique_items=True) class Person(Thing): - tags: Optional[Set[str]] = Field({'tag2'}, unique_items=True) + tags: Optional[set[str]] = Field({'tag2'}, unique_items=True) diff --git a/tests/data/expected/main/openapi/allof_partial_override_unique_items_pydantic_v2.py b/tests/data/expected/main/openapi/allof_partial_override_unique_items_pydantic_v2.py index d8378f3eb..ec48f1f5e 100644 --- a/tests/data/expected/main/openapi/allof_partial_override_unique_items_pydantic_v2.py +++ b/tests/data/expected/main/openapi/allof_partial_override_unique_items_pydantic_v2.py @@ -4,14 +4,14 @@ from __future__ import annotations -from typing import Optional, Set +from typing import Optional from pydantic import BaseModel class Thing(BaseModel): - tags: Optional[Set[str]] = None + tags: Optional[set[str]] = None class Person(Thing): - tags: Optional[Set[str]] = {'tag2'} + tags: Optional[set[str]] = {'tag2'} diff --git a/tests/data/expected/main/openapi/allof_with_required_inherited_complex_allof.py b/tests/data/expected/main/openapi/allof_with_required_inherited_complex_allof.py index 8ab067a5c..f3e1c7a23 100644 --- a/tests/data/expected/main/openapi/allof_with_required_inherited_complex_allof.py +++ b/tests/data/expected/main/openapi/allof_with_required_inherited_complex_allof.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Dict, Optional +from typing import Optional from pydantic import BaseModel, confloat, constr @@ -52,4 +52,4 @@ class Item(ProjectedItem): code: StringConstraint score: confloat(ge=0.0, le=100.0) config: BaseConfig - metadata: Dict[str, str] + metadata: dict[str, str] diff --git a/tests/data/expected/main/openapi/allof_with_required_inherited_comprehensive.py b/tests/data/expected/main/openapi/allof_with_required_inherited_comprehensive.py index 5c5807677..6154d4e35 100644 --- a/tests/data/expected/main/openapi/allof_with_required_inherited_comprehensive.py +++ b/tests/data/expected/main/openapi/allof_with_required_inherited_comprehensive.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel, constr @@ -54,10 +54,10 @@ class ProjectedEntity(BaseModel): primitive_bool: Optional[bool] = None ref_field: Optional[BaseType] = None enum_field: Optional[Status] = None - array_with_ref: Optional[List[BaseType]] = None - array_with_primitive: Optional[List[str]] = None + array_with_ref: Optional[list[BaseType]] = None + array_with_primitive: Optional[list[str]] = None object_with_props: Optional[ObjectWithProps] = None - object_with_additional: Optional[Dict[str, int]] = None + object_with_additional: Optional[dict[str, int]] = None anyof_field: Optional[Union[str, int]] = None oneof_field: Optional[Union[bool, float]] = None allof_single_ref: Optional[BaseType] = None @@ -77,16 +77,16 @@ class Entity(ProjectedEntity): primitive_bool: bool ref_field: BaseType enum_field: Status - array_with_ref: List[BaseType] - array_with_primitive: List[str] - object_with_props: Dict[str, Any] - object_with_additional: Dict[str, int] + array_with_ref: list[BaseType] + array_with_primitive: list[str] + object_with_props: dict[str, Any] + object_with_additional: dict[str, int] anyof_field: Union[str, int] oneof_field: Union[bool, float] allof_single_ref: BaseType allof_multiple_refs: BaseType allof_primitives_with_constraints: constr(min_length=5, max_length=100) allof_with_pattern: constr(regex=r'(?=^[a-z]+)(?=[0-9]$)') - allof_with_unique: List[str] + allof_with_unique: list[str] type_list: Optional[str] - deep_nested: Dict[str, Any] + deep_nested: dict[str, Any] diff --git a/tests/data/expected/main/openapi/allof_with_required_inherited_coverage.py b/tests/data/expected/main/openapi/allof_with_required_inherited_coverage.py index e9bf2f7e4..512fe1cdc 100644 --- a/tests/data/expected/main/openapi/allof_with_required_inherited_coverage.py +++ b/tests/data/expected/main/openapi/allof_with_required_inherited_coverage.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel, conint @@ -50,7 +50,7 @@ class DeepArrayItem(BaseModel): class DeepNestedArray(BaseModel): - deep_array: Optional[List[DeepArrayItem]] = None + deep_array: Optional[list[DeepArrayItem]] = None class OneOfBase(BaseModel): @@ -78,7 +78,7 @@ class DeepDict(BaseModel): class AdditionalPropsDeep(BaseModel): - deep_dict: Optional[Dict[str, DeepDict]] = None + deep_dict: Optional[dict[str, DeepDict]] = None class ObjectAllof(BaseModel): @@ -91,7 +91,7 @@ class ObjectOnlyAllOf(BaseModel): class LargeUnion(BaseModel): - large_union: Optional[Union[str, int, bool, float, List[str], Dict[str, Any]]] = ( + large_union: Optional[Union[str, int, bool, float, list[str], dict[str, Any]]] = ( None ) @@ -161,11 +161,11 @@ class EdgeCasesCoverage( multiple_field: conint(multiple_of=5) ref_and_primitive: SimpleString nested_anyof: Union[SimpleString, int] - deep_array: List[Dict[str, Any]] + deep_array: list[dict[str, Any]] oneof_field: Union[str, int] single_oneof: str - deep_dict: Dict[str, Dict[str, Any]] - object_allof: Dict[str, Any] + deep_dict: dict[str, dict[str, Any]] + object_allof: dict[str, Any] large_union: Any nested_allof_ref: SimpleString nested_indirect: Any diff --git a/tests/data/expected/main/openapi/allof_with_required_inherited_edge_cases.py b/tests/data/expected/main/openapi/allof_with_required_inherited_edge_cases.py index ee5537715..38ba2b371 100644 --- a/tests/data/expected/main/openapi/allof_with_required_inherited_edge_cases.py +++ b/tests/data/expected/main/openapi/allof_with_required_inherited_edge_cases.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel, conint @@ -72,7 +72,7 @@ class ProjectedEdgeCases(BaseModel): allof_max_constraints: Optional[AllofMaxConstraints] = None allof_unique_items: Optional[AllofUniqueItems] = None object_without_additional: Optional[ObjectWithoutAdditional] = None - object_only_type: Optional[Dict[str, Any]] = None + object_only_type: Optional[dict[str, Any]] = None multiple_additional_props: Optional[MultipleAdditionalProps] = None depth_limit_test: Optional[DepthLimitTest] = None cycle_detection: Optional[BaseRef] = None @@ -88,11 +88,11 @@ class EdgeCases(ProjectedEdgeCases): allof_nested_anyof: Union[str, int] allof_constraint_only: Any allof_max_constraints: conint(le=50) - allof_unique_items: List[str] - object_without_additional: Dict[str, Any] - object_only_type: Dict[str, Any] - multiple_additional_props: Dict[str, BaseRef] - depth_limit_test: Dict[str, Any] + allof_unique_items: list[str] + object_without_additional: dict[str, Any] + object_only_type: dict[str, Any] + multiple_additional_props: dict[str, BaseRef] + depth_limit_test: dict[str, Any] cycle_detection: BaseRef type_list_field: Union[str, int] allof_multiple_refs_only: BaseRef diff --git a/tests/data/expected/main/openapi/allof_with_required_inherited_fields.py b/tests/data/expected/main/openapi/allof_with_required_inherited_fields.py index d62b51408..84372ca73 100644 --- a/tests/data/expected/main/openapi/allof_with_required_inherited_fields.py +++ b/tests/data/expected/main/openapi/allof_with_required_inherited_fields.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -16,6 +16,6 @@ class ProjectedPet(BaseModel): class Pet(ProjectedPet): tag: Optional[str] = None - opts: List[str] + opts: list[str] id: int name: str diff --git a/tests/data/expected/main/openapi/allof_with_required_inherited_fields_force_optional.py b/tests/data/expected/main/openapi/allof_with_required_inherited_fields_force_optional.py index f1608481a..fae32dcc1 100644 --- a/tests/data/expected/main/openapi/allof_with_required_inherited_fields_force_optional.py +++ b/tests/data/expected/main/openapi/allof_with_required_inherited_fields_force_optional.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -16,4 +16,4 @@ class ProjectedPet(BaseModel): class Pet(ProjectedPet): tag: Optional[str] = None - opts: Optional[List[str]] = None + opts: Optional[list[str]] = None diff --git a/tests/data/expected/main/openapi/allof_with_required_inherited_nested_object.py b/tests/data/expected/main/openapi/allof_with_required_inherited_nested_object.py index 932624c28..e665529f9 100644 --- a/tests/data/expected/main/openapi/allof_with_required_inherited_nested_object.py +++ b/tests/data/expected/main/openapi/allof_with_required_inherited_nested_object.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -23,9 +23,9 @@ class ProjectedPerson(BaseModel): id: Optional[int] = None name: Optional[str] = None address: Optional[Address] = None - metadata: Optional[Dict[str, str]] = None + metadata: Optional[dict[str, str]] = None contact: Optional[ContactInfo] = None - tags: Optional[List[str]] = None + tags: Optional[list[str]] = None priority: Optional[Union[int, str]] = None @@ -33,8 +33,8 @@ class Person(ProjectedPerson): nickname: Optional[str] = None id: int name: str - address: Dict[str, Any] - metadata: Dict[str, str] + address: dict[str, Any] + metadata: dict[str, str] contact: ContactInfo - tags: List[str] + tags: list[str] priority: Union[int, str] diff --git a/tests/data/expected/main/openapi/allow_extra_fields.py b/tests/data/expected/main/openapi/allow_extra_fields.py index aa149b90b..7b1bf4ce0 100644 --- a/tests/data/expected/main/openapi/allow_extra_fields.py +++ b/tests/data/expected/main/openapi/allow_extra_fields.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Extra, Field @@ -22,7 +22,7 @@ class Pets(BaseModel): class Config: extra = Extra.allow - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -38,7 +38,7 @@ class Users(BaseModel): class Config: extra = Extra.allow - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -52,7 +52,7 @@ class Rules(BaseModel): class Config: extra = Extra.allow - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -85,7 +85,7 @@ class Apis(BaseModel): class Config: extra = Extra.allow - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/allow_extra_fields_pydantic_v2.py b/tests/data/expected/main/openapi/allow_extra_fields_pydantic_v2.py index 4028fb04a..cbdd66bee 100644 --- a/tests/data/expected/main/openapi/allow_extra_fields_pydantic_v2.py +++ b/tests/data/expected/main/openapi/allow_extra_fields_pydantic_v2.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -18,8 +18,8 @@ class Pet(BaseModel): tag: Optional[str] = None -class Pets(RootModel[List[Pet]]): - root: List[Pet] +class Pets(RootModel[list[Pet]]): + root: list[Pet] class User(BaseModel): @@ -31,16 +31,16 @@ class User(BaseModel): tag: Optional[str] = None -class Users(RootModel[List[User]]): - root: List[User] +class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str -class Rules(RootModel[List[str]]): - root: List[str] +class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -69,8 +69,8 @@ class Api(BaseModel): ) -class Apis(RootModel[List[Api]]): - root: List[Api] +class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/allow_population_by_field_name.py b/tests/data/expected/main/openapi/allow_population_by_field_name.py index be224c3c9..c275c1aca 100644 --- a/tests/data/expected/main/openapi/allow_population_by_field_name.py +++ b/tests/data/expected/main/openapi/allow_population_by_field_name.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -22,7 +22,7 @@ class Pets(BaseModel): class Config: allow_population_by_field_name = True - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -38,7 +38,7 @@ class Users(BaseModel): class Config: allow_population_by_field_name = True - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -52,7 +52,7 @@ class Rules(BaseModel): class Config: allow_population_by_field_name = True - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -85,7 +85,7 @@ class Apis(BaseModel): class Config: allow_population_by_field_name = True - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/allow_population_by_field_name_pydantic_v2.py b/tests/data/expected/main/openapi/allow_population_by_field_name_pydantic_v2.py index bff609ddf..a569e6c54 100644 --- a/tests/data/expected/main/openapi/allow_population_by_field_name_pydantic_v2.py +++ b/tests/data/expected/main/openapi/allow_population_by_field_name_pydantic_v2.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -18,11 +18,11 @@ class Pet(BaseModel): tag: Optional[str] = None -class Pets(RootModel[List[Pet]]): +class Pets(RootModel[list[Pet]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[Pet] + root: list[Pet] class User(BaseModel): @@ -34,11 +34,11 @@ class User(BaseModel): tag: Optional[str] = None -class Users(RootModel[List[User]]): +class Users(RootModel[list[User]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[User] + root: list[User] class Id(RootModel[str]): @@ -48,11 +48,11 @@ class Id(RootModel[str]): root: str -class Rules(RootModel[List[str]]): +class Rules(RootModel[list[str]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[str] + root: list[str] class Error(BaseModel): @@ -81,11 +81,11 @@ class Api(BaseModel): ) -class Apis(RootModel[List[Api]]): +class Apis(RootModel[list[Api]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[Api] + root: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/base_class.py b/tests/data/expected/main/openapi/base_class.py index 485d838d9..675a11aa8 100644 --- a/tests/data/expected/main/openapi/base_class.py +++ b/tests/data/expected/main/openapi/base_class.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, Field @@ -18,7 +18,7 @@ class Pet(Base): class Pets(Base): - __root__: List[Pet] + __root__: list[Pet] class User(Base): @@ -28,7 +28,7 @@ class User(Base): class Users(Base): - __root__: List[User] + __root__: list[User] class Id(Base): @@ -36,7 +36,7 @@ class Id(Base): class Rules(Base): - __root__: List[str] + __root__: list[str] class Error(Base): @@ -60,7 +60,7 @@ class Api(Base): class Apis(Base): - __root__: List[Api] + __root__: list[Api] class Event(Base): diff --git a/tests/data/expected/main/openapi/body_and_parameters/general.py b/tests/data/expected/main/openapi/body_and_parameters/general.py index 2af7cd5f9..21feccda0 100644 --- a/tests/data/expected/main/openapi/body_and_parameters/general.py +++ b/tests/data/expected/main/openapi/body_and_parameters/general.py @@ -5,7 +5,7 @@ from __future__ import annotations from datetime import datetime -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -27,11 +27,11 @@ class PetForm(BaseModel): class PetsGetResponse(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class FoodFoodIdGetResponse(BaseModel): - __root__: List[int] + __root__: list[int] class UserGetResponse(BaseModel): @@ -53,7 +53,7 @@ class UsersGetResponseItem(BaseModel): class UsersGetResponse(BaseModel): - __root__: List[UsersGetResponseItem] + __root__: list[UsersGetResponseItem] class UsersPostRequestItem(BaseModel): @@ -63,4 +63,4 @@ class UsersPostRequestItem(BaseModel): class UsersPostRequest(BaseModel): - __root__: List[UsersPostRequestItem] + __root__: list[UsersPostRequestItem] diff --git a/tests/data/expected/main/openapi/body_and_parameters/only_paths.py b/tests/data/expected/main/openapi/body_and_parameters/only_paths.py index f46d3de21..2948ab139 100644 --- a/tests/data/expected/main/openapi/body_and_parameters/only_paths.py +++ b/tests/data/expected/main/openapi/body_and_parameters/only_paths.py @@ -5,13 +5,13 @@ from __future__ import annotations from datetime import datetime -from typing import List, Optional +from typing import Optional from pydantic import BaseModel class FoodFoodIdGetResponse(BaseModel): - __root__: List[int] + __root__: list[int] class UserGetResponse(BaseModel): @@ -33,7 +33,7 @@ class UsersGetResponseItem(BaseModel): class UsersGetResponse(BaseModel): - __root__: List[UsersGetResponseItem] + __root__: list[UsersGetResponseItem] class UsersPostRequestItem(BaseModel): @@ -43,7 +43,7 @@ class UsersPostRequestItem(BaseModel): class UsersPostRequest(BaseModel): - __root__: List[UsersPostRequestItem] + __root__: list[UsersPostRequestItem] class Error(BaseModel): @@ -63,4 +63,4 @@ class PetForm(BaseModel): class PetsGetResponse(BaseModel): - __root__: List[Pet] + __root__: list[Pet] diff --git a/tests/data/expected/main/openapi/body_and_parameters/remote_ref.py b/tests/data/expected/main/openapi/body_and_parameters/remote_ref.py index d2a1492f9..d205e636e 100644 --- a/tests/data/expected/main/openapi/body_and_parameters/remote_ref.py +++ b/tests/data/expected/main/openapi/body_and_parameters/remote_ref.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -26,8 +26,8 @@ class PetForm(BaseModel): class PetsGetResponse(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class FoodFoodIdGetResponse(BaseModel): - __root__: List[int] + __root__: list[int] diff --git a/tests/data/expected/main/openapi/circular_imports_stripe_like/_internal.py b/tests/data/expected/main/openapi/circular_imports_stripe_like/_internal.py index 085df8eeb..37754d4e0 100644 --- a/tests/data/expected/main/openapi/circular_imports_stripe_like/_internal.py +++ b/tests/data/expected/main/openapi/circular_imports_stripe_like/_internal.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -34,7 +34,7 @@ class LineItem(BaseModel): class Session(BaseModel): id: Optional[str] = None transaction: Optional[BalanceTransaction] = None - line_items: Optional[List[LineItem]] = None + line_items: Optional[list[LineItem]] = None class Cardholder(BaseModel): diff --git a/tests/data/expected/main/openapi/collapse_root_models.py b/tests/data/expected/main/openapi/collapse_root_models.py index 8e9747b22..edd4502ff 100644 --- a/tests/data/expected/main/openapi/collapse_root_models.py +++ b/tests/data/expected/main/openapi/collapse_root_models.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field, constr @@ -14,7 +14,7 @@ class Tweet(BaseModel): class Users(BaseModel): - __root__: List[str] + __root__: list[str] class FileRequest(BaseModel): @@ -30,4 +30,4 @@ class ImageRequest(BaseModel): class FileHashes(BaseModel): - __root__: List[constr(regex=r'^[a-fA-F\d]{32}$', min_length=32, max_length=32)] + __root__: list[constr(regex=r'^[a-fA-F\d]{32}$', min_length=32, max_length=32)] diff --git a/tests/data/expected/main/openapi/collapse_root_models_field_constraints.py b/tests/data/expected/main/openapi/collapse_root_models_field_constraints.py index 8154d771e..b8510ce3d 100644 --- a/tests/data/expected/main/openapi/collapse_root_models_field_constraints.py +++ b/tests/data/expected/main/openapi/collapse_root_models_field_constraints.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -14,7 +14,7 @@ class Tweet(BaseModel): class Users(BaseModel): - __root__: List[str] + __root__: list[str] class FileHash(BaseModel): @@ -48,4 +48,4 @@ class ImageRequest(BaseModel): class FileHashes(BaseModel): - __root__: List[FileHash] + __root__: list[FileHash] diff --git a/tests/data/expected/main/openapi/custom_file_header.py b/tests/data/expected/main/openapi/custom_file_header.py index 46a45bfe8..cc297b910 100644 --- a/tests/data/expected/main/openapi/custom_file_header.py +++ b/tests/data/expected/main/openapi/custom_file_header.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/custom_file_header_comments_only.py b/tests/data/expected/main/openapi/custom_file_header_comments_only.py index 0a0390935..d641a4e70 100644 --- a/tests/data/expected/main/openapi/custom_file_header_comments_only.py +++ b/tests/data/expected/main/openapi/custom_file_header_comments_only.py @@ -3,7 +3,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -15,7 +15,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -25,7 +25,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -33,7 +33,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -57,7 +57,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/custom_file_header_empty.py b/tests/data/expected/main/openapi/custom_file_header_empty.py index 6e24ae1de..b753b36f2 100644 --- a/tests/data/expected/main/openapi/custom_file_header_empty.py +++ b/tests/data/expected/main/openapi/custom_file_header_empty.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/custom_file_header_invalid_syntax.py b/tests/data/expected/main/openapi/custom_file_header_invalid_syntax.py index c6e718a7d..5024b9052 100644 --- a/tests/data/expected/main/openapi/custom_file_header_invalid_syntax.py +++ b/tests/data/expected/main/openapi/custom_file_header_invalid_syntax.py @@ -4,7 +4,7 @@ # Valid comment def incomplete( -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/custom_file_header_no_future.py b/tests/data/expected/main/openapi/custom_file_header_no_future.py index 661015270..a6b5e0fbc 100644 --- a/tests/data/expected/main/openapi/custom_file_header_no_future.py +++ b/tests/data/expected/main/openapi/custom_file_header_no_future.py @@ -3,7 +3,7 @@ # file ; -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -15,7 +15,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -25,7 +25,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -33,7 +33,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -57,7 +57,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/custom_file_header_with_docstring.py b/tests/data/expected/main/openapi/custom_file_header_with_docstring.py index 35e0a3f32..213234636 100644 --- a/tests/data/expected/main/openapi/custom_file_header_with_docstring.py +++ b/tests/data/expected/main/openapi/custom_file_header_with_docstring.py @@ -5,7 +5,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -17,7 +17,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -27,7 +27,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -35,7 +35,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -59,7 +59,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/custom_file_header_with_docstring_and_import.py b/tests/data/expected/main/openapi/custom_file_header_with_docstring_and_import.py index 846122537..680c2e4a2 100644 --- a/tests/data/expected/main/openapi/custom_file_header_with_docstring_and_import.py +++ b/tests/data/expected/main/openapi/custom_file_header_with_docstring_and_import.py @@ -9,7 +9,7 @@ if TYPE_CHECKING: from collections.abc import Sequence -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -21,7 +21,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -31,7 +31,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -39,7 +39,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -63,7 +63,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/custom_file_header_with_import.py b/tests/data/expected/main/openapi/custom_file_header_with_import.py index d69e9f33d..f797ac780 100644 --- a/tests/data/expected/main/openapi/custom_file_header_with_import.py +++ b/tests/data/expected/main/openapi/custom_file_header_with_import.py @@ -6,7 +6,7 @@ if TYPE_CHECKING: from collections.abc import Sequence -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -18,7 +18,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -28,7 +28,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -36,7 +36,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -60,7 +60,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/custom_template_dir.py b/tests/data/expected/main/openapi/custom_template_dir.py index 535dd20a3..4f8ae1cb7 100644 --- a/tests/data/expected/main/openapi/custom_template_dir.py +++ b/tests/data/expected/main/openapi/custom_template_dir.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): # 1 2, 1 2, this is just a pet class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -50,7 +50,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/dataclass.py b/tests/data/expected/main/openapi/dataclass.py index 67ca8ba85..347651d54 100644 --- a/tests/data/expected/main/openapi/dataclass.py +++ b/tests/data/expected/main/openapi/dataclass.py @@ -5,7 +5,7 @@ from __future__ import annotations from dataclasses import dataclass -from typing import List, Optional, TypeAlias +from typing import Optional, TypeAlias @dataclass @@ -15,7 +15,7 @@ class Pet: tag: Optional[str] = None -Pets: TypeAlias = List[Pet] +Pets: TypeAlias = list[Pet] @dataclass @@ -25,13 +25,13 @@ class User: tag: Optional[str] = None -Users: TypeAlias = List[User] +Users: TypeAlias = list[User] Id: TypeAlias = str -Rules: TypeAlias = List[str] +Rules: TypeAlias = list[str] @dataclass @@ -48,7 +48,7 @@ class Api: apiDocumentationUrl: Optional[str] = None -Apis: TypeAlias = List[Api] +Apis: TypeAlias = list[Api] @dataclass diff --git a/tests/data/expected/main/openapi/dataclass_base_class.py b/tests/data/expected/main/openapi/dataclass_base_class.py index 676cc6ef9..2a688212b 100644 --- a/tests/data/expected/main/openapi/dataclass_base_class.py +++ b/tests/data/expected/main/openapi/dataclass_base_class.py @@ -5,7 +5,7 @@ from __future__ import annotations from dataclasses import dataclass -from typing import List, Optional, TypeAlias +from typing import Optional, TypeAlias from custom_base import Base @@ -17,7 +17,7 @@ class Pet(Base): tag: Optional[str] = None -Pets: TypeAlias = List[Pet] +Pets: TypeAlias = list[Pet] @dataclass @@ -27,13 +27,13 @@ class User(Base): tag: Optional[str] = None -Users: TypeAlias = List[User] +Users: TypeAlias = list[User] Id: TypeAlias = str -Rules: TypeAlias = List[str] +Rules: TypeAlias = list[str] @dataclass @@ -50,7 +50,7 @@ class Api(Base): apiDocumentationUrl: Optional[str] = None -Apis: TypeAlias = List[Api] +Apis: TypeAlias = list[Api] @dataclass diff --git a/tests/data/expected/main/openapi/default_object/Another.py b/tests/data/expected/main/openapi/default_object/Another.py index 9a0e742e3..fcebdcb5f 100644 --- a/tests/data/expected/main/openapi/default_object/Another.py +++ b/tests/data/expected/main/openapi/default_object/Another.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -20,6 +20,6 @@ class Bar(BaseModel): original_foo: Optional[Foo_1] = Field( default_factory=lambda: Foo_1.parse_obj({'text': 'abc', 'number': 123}) ) - nested_foo: Optional[List[Nested.Foo]] = Field( + nested_foo: Optional[list[Nested.Foo]] = Field( default_factory=lambda: [Nested.Foo.parse_obj(v) for v in ['abc', 'efg']] ) diff --git a/tests/data/expected/main/openapi/default_object/Nested.py b/tests/data/expected/main/openapi/default_object/Nested.py index b0cbab4c0..7a628fac2 100644 --- a/tests/data/expected/main/openapi/default_object/Nested.py +++ b/tests/data/expected/main/openapi/default_object/Nested.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -19,7 +19,7 @@ class Bar(BaseModel): foo: Optional[Foo_1] = Field( default_factory=lambda: Foo_1.parse_obj({'text': 'abc', 'number': 123}) ) - baz: Optional[List[Foo_1]] = Field( + baz: Optional[list[Foo_1]] = Field( default_factory=lambda: [ Foo_1.parse_obj(v) for v in [{'text': 'abc', 'number': 123}, {'text': 'efg', 'number': 456}] diff --git a/tests/data/expected/main/openapi/default_object/__init__.py b/tests/data/expected/main/openapi/default_object/__init__.py index 68ac5c812..57ae80f0d 100644 --- a/tests/data/expected/main/openapi/default_object/__init__.py +++ b/tests/data/expected/main/openapi/default_object/__init__.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -18,7 +18,7 @@ class Bar(BaseModel): foo: Optional[Foo] = Field( default_factory=lambda: Foo.parse_obj({'text': 'abc', 'number': 123}) ) - baz: Optional[List[Foo]] = Field( + baz: Optional[list[Foo]] = Field( default_factory=lambda: [ Foo.parse_obj(v) for v in [{'text': 'abc', 'number': 123}, {'text': 'efg', 'number': 456}] diff --git a/tests/data/expected/main/openapi/disable_appending_item_suffix.py b/tests/data/expected/main/openapi/disable_appending_item_suffix.py index 06355c426..44a1e61ef 100644 --- a/tests/data/expected/main/openapi/disable_appending_item_suffix.py +++ b/tests/data/expected/main/openapi/disable_appending_item_suffix.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: list[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -36,8 +36,8 @@ class User(BaseModel): name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[Fax]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[Fax]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) @@ -45,7 +45,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -53,7 +53,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -77,7 +77,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/disable_timestamp.py b/tests/data/expected/main/openapi/disable_timestamp.py index 2e1337e5b..33f7a223d 100644 --- a/tests/data/expected/main/openapi/disable_timestamp.py +++ b/tests/data/expected/main/openapi/disable_timestamp.py @@ -3,7 +3,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -15,7 +15,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -25,7 +25,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -33,7 +33,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -57,7 +57,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/discriminator/in_array.py b/tests/data/expected/main/openapi/discriminator/in_array.py index 6fd17b258..0b3c5fed9 100644 --- a/tests/data/expected/main/openapi/discriminator/in_array.py +++ b/tests/data/expected/main/openapi/discriminator/in_array.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Literal, Optional, Union +from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -36,4 +36,4 @@ class MyArray(BaseModel): class Demo(BaseModel): - myArray: List[MyArray] + myArray: list[MyArray] diff --git a/tests/data/expected/main/openapi/discriminator/in_array_collapse_root_models.py b/tests/data/expected/main/openapi/discriminator/in_array_collapse_root_models.py index 6f0f42378..71d43e72b 100644 --- a/tests/data/expected/main/openapi/discriminator/in_array_collapse_root_models.py +++ b/tests/data/expected/main/openapi/discriminator/in_array_collapse_root_models.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Literal, Optional, Union +from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -30,4 +30,4 @@ class UpdateObjectRequest(ObjectBase): class Demo(BaseModel): - myArray: List[Union[ObjectBase, CreateObjectRequest, UpdateObjectRequest]] + myArray: list[Union[ObjectBase, CreateObjectRequest, UpdateObjectRequest]] diff --git a/tests/data/expected/main/openapi/enable_command_header.py b/tests/data/expected/main/openapi/enable_command_header.py index f7dfd5202..4e2b26608 100644 --- a/tests/data/expected/main/openapi/enable_command_header.py +++ b/tests/data/expected/main/openapi/enable_command_header.py @@ -5,7 +5,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -17,7 +17,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -27,7 +27,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -35,7 +35,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -59,7 +59,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/enable_faux_immutability.py b/tests/data/expected/main/openapi/enable_faux_immutability.py index 5f9a9016b..fdc0c3c35 100644 --- a/tests/data/expected/main/openapi/enable_faux_immutability.py +++ b/tests/data/expected/main/openapi/enable_faux_immutability.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -22,7 +22,7 @@ class Pets(BaseModel): class Config: allow_mutation = False - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -38,7 +38,7 @@ class Users(BaseModel): class Config: allow_mutation = False - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -52,7 +52,7 @@ class Rules(BaseModel): class Config: allow_mutation = False - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -85,7 +85,7 @@ class Apis(BaseModel): class Config: allow_mutation = False - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/enable_faux_immutability_pydantic_v2.py b/tests/data/expected/main/openapi/enable_faux_immutability_pydantic_v2.py index 28042c272..a550d7f45 100644 --- a/tests/data/expected/main/openapi/enable_faux_immutability_pydantic_v2.py +++ b/tests/data/expected/main/openapi/enable_faux_immutability_pydantic_v2.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -18,11 +18,11 @@ class Pet(BaseModel): tag: Optional[str] = None -class Pets(RootModel[List[Pet]]): +class Pets(RootModel[list[Pet]]): model_config = ConfigDict( frozen=True, ) - root: List[Pet] + root: list[Pet] class User(BaseModel): @@ -34,11 +34,11 @@ class User(BaseModel): tag: Optional[str] = None -class Users(RootModel[List[User]]): +class Users(RootModel[list[User]]): model_config = ConfigDict( frozen=True, ) - root: List[User] + root: list[User] class Id(RootModel[str]): @@ -48,11 +48,11 @@ class Id(RootModel[str]): root: str -class Rules(RootModel[List[str]]): +class Rules(RootModel[list[str]]): model_config = ConfigDict( frozen=True, ) - root: List[str] + root: list[str] class Error(BaseModel): @@ -81,11 +81,11 @@ class Api(BaseModel): ) -class Apis(RootModel[List[Api]]): +class Apis(RootModel[list[Api]]): model_config = ConfigDict( frozen=True, ) - root: List[Api] + root: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/enable_version_header.py b/tests/data/expected/main/openapi/enable_version_header.py index 06a397ff3..3f608ec5a 100644 --- a/tests/data/expected/main/openapi/enable_version_header.py +++ b/tests/data/expected/main/openapi/enable_version_header.py @@ -5,7 +5,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -17,7 +17,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -27,7 +27,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -35,7 +35,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -59,7 +59,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/enum_models/one.py b/tests/data/expected/main/openapi/enum_models/one.py index 26d735b35..9d3ff6a10 100644 --- a/tests/data/expected/main/openapi/enum_models/one.py +++ b/tests/data/expected/main/openapi/enum_models/one.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Literal, Optional, Union +from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -26,7 +26,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Kind1(Enum): @@ -81,7 +81,7 @@ class SingleEnum(BaseModel): class ArrayEnum(BaseModel): - __root__: List[Union[Literal['cat'], Literal['dog']]] + __root__: list[Union[Literal['cat'], Literal['dog']]] class NestedVersionEnum(Enum): diff --git a/tests/data/expected/main/openapi/enum_models/one_literal_as_default.py b/tests/data/expected/main/openapi/enum_models/one_literal_as_default.py index 11ffca83d..7a8b7cb88 100644 --- a/tests/data/expected/main/openapi/enum_models/one_literal_as_default.py +++ b/tests/data/expected/main/openapi/enum_models/one_literal_as_default.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Literal, Optional, Union +from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -26,7 +26,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Kind1(Enum): @@ -81,7 +81,7 @@ class SingleEnum(BaseModel): class ArrayEnum(BaseModel): - __root__: List[Union[Literal['cat'], Literal['dog']]] + __root__: list[Union[Literal['cat'], Literal['dog']]] class NestedVersionEnum(Enum): diff --git a/tests/data/expected/main/openapi/extra_template_data_config.py b/tests/data/expected/main/openapi/extra_template_data_config.py index 92ddb93f0..7a7c7a8c8 100644 --- a/tests/data/expected/main/openapi/extra_template_data_config.py +++ b/tests/data/expected/main/openapi/extra_template_data_config.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -19,7 +19,7 @@ class Config: class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -29,7 +29,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -37,7 +37,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -61,7 +61,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/extra_template_data_config_pydantic_v2.py b/tests/data/expected/main/openapi/extra_template_data_config_pydantic_v2.py index e3270e863..9ea588ada 100644 --- a/tests/data/expected/main/openapi/extra_template_data_config_pydantic_v2.py +++ b/tests/data/expected/main/openapi/extra_template_data_config_pydantic_v2.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -19,8 +19,8 @@ class Pet(BaseModel): # 1 2, 1 2, this is just a pet tag: Optional[str] = None -class Pets(RootModel[List[Pet]]): - root: List[Pet] +class Pets(RootModel[list[Pet]]): + root: list[Pet] class User(BaseModel): @@ -29,16 +29,16 @@ class User(BaseModel): tag: Optional[str] = None -class Users(RootModel[List[User]]): - root: List[User] +class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str -class Rules(RootModel[List[str]]): - root: List[str] +class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -61,8 +61,8 @@ class Api(BaseModel): ) -class Apis(RootModel[List[Api]]): - root: List[Api] +class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/force_optional.py b/tests/data/expected/main/openapi/force_optional.py index 518fa88af..af8d89e79 100644 --- a/tests/data/expected/main/openapi/force_optional.py +++ b/tests/data/expected/main/openapi/force_optional.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: Optional[List[Pet]] = None + __root__: Optional[list[Pet]] = None class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: Optional[List[User]] = None + __root__: Optional[list[User]] = None class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: Optional[List[str]] = None + __root__: Optional[list[str]] = None class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: Optional[List[Api]] = None + __root__: Optional[list[Api]] = None class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/general.py b/tests/data/expected/main/openapi/general.py index 6e24ae1de..b753b36f2 100644 --- a/tests/data/expected/main/openapi/general.py +++ b/tests/data/expected/main/openapi/general.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/max_items_enum.py b/tests/data/expected/main/openapi/max_items_enum.py index 1dcd60303..3acc6657e 100644 --- a/tests/data/expected/main/openapi/max_items_enum.py +++ b/tests/data/expected/main/openapi/max_items_enum.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -16,4 +16,4 @@ class BarEnum(Enum): class Foo(BaseModel): - bar: Optional[List[BarEnum]] = Field(None, max_items=3) + bar: Optional[list[BarEnum]] = Field(None, max_items=3) diff --git a/tests/data/expected/main/openapi/modular/_internal.py b/tests/data/expected/main/openapi/modular/_internal.py index 7ded30551..76b39b1b2 100644 --- a/tests/data/expected/main/openapi/modular/_internal.py +++ b/tests/data/expected/main/openapi/modular/_internal.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -50,18 +50,18 @@ class Tea_1(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None -class ListModel(BaseModel): - __root__: List[Tea_1] +class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() diff --git a/tests/data/expected/main/openapi/modular/collections.py b/tests/data/expected/main/openapi/modular/collections.py index e543cec54..da99bbf1b 100644 --- a/tests/data/expected/main/openapi/modular/collections.py +++ b/tests/data/expected/main/openapi/modular/collections.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -13,15 +13,15 @@ class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -48,4 +48,4 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] diff --git a/tests/data/expected/main/openapi/modular/foo/bar.py b/tests/data/expected/main/openapi/modular/foo/bar.py index 9e9572a82..cf51a68fb 100644 --- a/tests/data/expected/main/openapi/modular/foo/bar.py +++ b/tests/data/expected/main/openapi/modular/foo/bar.py @@ -4,17 +4,17 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): diff --git a/tests/data/expected/main/openapi/modular/models.py b/tests/data/expected/main/openapi/modular/models.py index 40d4b7546..2c32d9762 100644 --- a/tests/data/expected/main/openapi/modular/models.py +++ b/tests/data/expected/main/openapi/modular/models.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -30,4 +30,4 @@ class User(BaseModel): class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None diff --git a/tests/data/expected/main/openapi/modular/nested/foo.py b/tests/data/expected/main/openapi/modular/nested/foo.py index 75be2c17f..3bc76e6d5 100644 --- a/tests/data/expected/main/openapi/modular/nested/foo.py +++ b/tests/data/expected/main/openapi/modular/nested/foo.py @@ -2,8 +2,8 @@ # filename: modular.yaml # timestamp: 1985-10-26T08:21:00+00:00 -from .._internal import ListModel +from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone -__all__ = ["ListModel", "Tea", "TeaClone"] +__all__ = ["List", "Tea", "TeaClone"] diff --git a/tests/data/expected/main/openapi/modular_all_exports_children/_internal.py b/tests/data/expected/main/openapi/modular_all_exports_children/_internal.py index 64170b2c3..e4b27d245 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children/_internal.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children/_internal.py @@ -3,7 +3,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -49,18 +49,18 @@ class Tea_1(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None -class ListModel(BaseModel): - __root__: List[Tea_1] +class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() diff --git a/tests/data/expected/main/openapi/modular_all_exports_children/collections.py b/tests/data/expected/main/openapi/modular_all_exports_children/collections.py index 70d72be88..d91fc0276 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children/collections.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children/collections.py @@ -4,7 +4,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -12,15 +12,15 @@ class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -47,4 +47,4 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] diff --git a/tests/data/expected/main/openapi/modular_all_exports_children/foo/bar.py b/tests/data/expected/main/openapi/modular_all_exports_children/foo/bar.py index e124a53ab..bccdfe8b7 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children/foo/bar.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children/foo/bar.py @@ -3,17 +3,17 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): diff --git a/tests/data/expected/main/openapi/modular_all_exports_children/models.py b/tests/data/expected/main/openapi/modular_all_exports_children/models.py index 6882cd91a..1ea7fabaf 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children/models.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children/models.py @@ -4,7 +4,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -29,4 +29,4 @@ class User(BaseModel): class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None diff --git a/tests/data/expected/main/openapi/modular_all_exports_children/nested/foo.py b/tests/data/expected/main/openapi/modular_all_exports_children/nested/foo.py index bfafbb817..ee6f25d32 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children/nested/foo.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children/nested/foo.py @@ -1,8 +1,8 @@ # generated by datamodel-codegen: # filename: modular.yaml -from .._internal import ListModel +from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone -__all__ = ["ListModel", "Tea", "TeaClone"] +__all__ = ["List", "Tea", "TeaClone"] diff --git a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/_internal.py b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/_internal.py index 238c2162a..adf02969e 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/_internal.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/_internal.py @@ -6,7 +6,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -52,18 +52,18 @@ class Tea_1(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None -class ListModel(BaseModel): - __root__: List[Tea_1] +class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() diff --git a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/collections.py b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/collections.py index 2f42dbfd6..aee46f795 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/collections.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/collections.py @@ -7,7 +7,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -15,15 +15,15 @@ class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -50,4 +50,4 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] diff --git a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/foo/bar.py b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/foo/bar.py index 3e8076782..735a1a268 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/foo/bar.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/foo/bar.py @@ -6,17 +6,17 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): diff --git a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/models.py b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/models.py index f7cf5333e..b8f6562b2 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/models.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/models.py @@ -7,7 +7,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -32,4 +32,4 @@ class User(BaseModel): class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None diff --git a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/nested/foo.py b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/nested/foo.py index 4306b73f2..425557eef 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_children_docstring/nested/foo.py +++ b/tests/data/expected/main/openapi/modular_all_exports_children_docstring/nested/foo.py @@ -6,8 +6,8 @@ from __future__ import annotations -from .._internal import ListModel +from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone -__all__ = ["ListModel", "Tea", "TeaClone"] +__all__ = ["List", "Tea", "TeaClone"] diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive/_internal.py b/tests/data/expected/main/openapi/modular_all_exports_recursive/_internal.py index 64170b2c3..e4b27d245 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive/_internal.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive/_internal.py @@ -3,7 +3,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -49,18 +49,18 @@ class Tea_1(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None -class ListModel(BaseModel): - __root__: List[Tea_1] +class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive/collections.py b/tests/data/expected/main/openapi/modular_all_exports_recursive/collections.py index 70d72be88..d91fc0276 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive/collections.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive/collections.py @@ -4,7 +4,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -12,15 +12,15 @@ class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -47,4 +47,4 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive/foo/bar.py b/tests/data/expected/main/openapi/modular_all_exports_recursive/foo/bar.py index e124a53ab..bccdfe8b7 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive/foo/bar.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive/foo/bar.py @@ -3,17 +3,17 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive/models.py b/tests/data/expected/main/openapi/modular_all_exports_recursive/models.py index 6882cd91a..1ea7fabaf 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive/models.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive/models.py @@ -4,7 +4,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -29,4 +29,4 @@ class User(BaseModel): class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive/nested/foo.py b/tests/data/expected/main/openapi/modular_all_exports_recursive/nested/foo.py index bfafbb817..ee6f25d32 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive/nested/foo.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive/nested/foo.py @@ -1,8 +1,8 @@ # generated by datamodel-codegen: # filename: modular.yaml -from .._internal import ListModel +from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone -__all__ = ["ListModel", "Tea", "TeaClone"] +__all__ = ["List", "Tea", "TeaClone"] diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/_internal.py b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/_internal.py index 64170b2c3..e4b27d245 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/_internal.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/_internal.py @@ -3,7 +3,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -49,18 +49,18 @@ class Tea_1(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None -class ListModel(BaseModel): - __root__: List[Tea_1] +class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/collections.py b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/collections.py index 70d72be88..d91fc0276 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/collections.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/collections.py @@ -4,7 +4,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -12,15 +12,15 @@ class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -47,4 +47,4 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/foo/bar.py b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/foo/bar.py index e124a53ab..bccdfe8b7 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/foo/bar.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/foo/bar.py @@ -3,17 +3,17 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/models.py b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/models.py index 6882cd91a..1ea7fabaf 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/models.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/models.py @@ -4,7 +4,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -29,4 +29,4 @@ class User(BaseModel): class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None diff --git a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/nested/foo.py b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/nested/foo.py index bfafbb817..ee6f25d32 100644 --- a/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/nested/foo.py +++ b/tests/data/expected/main/openapi/modular_all_exports_recursive_full_prefix/nested/foo.py @@ -1,8 +1,8 @@ # generated by datamodel-codegen: # filename: modular.yaml -from .._internal import ListModel +from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone -__all__ = ["ListModel", "Tea", "TeaClone"] +__all__ = ["List", "Tea", "TeaClone"] diff --git a/tests/data/expected/main/openapi/modular_custom_class_name/_internal.py b/tests/data/expected/main/openapi/modular_custom_class_name/_internal.py index 9a32fedc6..cbffee92f 100644 --- a/tests/data/expected/main/openapi/modular_custom_class_name/_internal.py +++ b/tests/data/expected/main/openapi/modular_custom_class_name/_internal.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -50,18 +50,18 @@ class CustomTea_1(BaseModel): flavour: Optional[str] = None id: Optional[CustomId] = None self: Optional[CustomTea_1] = None - optional: Optional[List[CustomOptional]] = None + optional: Optional[list[CustomOptional]] = None class CustomTeaClone(BaseModel): flavour: Optional[str] = None id: Optional[CustomId] = None self: Optional[CustomTea_1] = None - optional: Optional[List[CustomOptional]] = None + optional: Optional[list[CustomOptional]] = None class CustomList(BaseModel): - __root__: List[CustomTea_1] + __root__: list[CustomTea_1] CustomTea_1.update_forward_refs() diff --git a/tests/data/expected/main/openapi/modular_custom_class_name/collections.py b/tests/data/expected/main/openapi/modular_custom_class_name/collections.py index cc3f0a0f2..005ece4ff 100644 --- a/tests/data/expected/main/openapi/modular_custom_class_name/collections.py +++ b/tests/data/expected/main/openapi/modular_custom_class_name/collections.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -13,15 +13,15 @@ class CustomPets(BaseModel): - __root__: List[models.CustomPet] + __root__: list[models.CustomPet] class CustomUsers(BaseModel): - __root__: List[models.CustomUser] + __root__: list[models.CustomUser] class CustomRules(BaseModel): - __root__: List[str] + __root__: list[str] class CustomStage(Enum): @@ -48,4 +48,4 @@ class CustomApi(BaseModel): class CustomApis(BaseModel): - __root__: List[CustomApi] + __root__: list[CustomApi] diff --git a/tests/data/expected/main/openapi/modular_custom_class_name/foo/bar.py b/tests/data/expected/main/openapi/modular_custom_class_name/foo/bar.py index 765789d37..2ebf3e42c 100644 --- a/tests/data/expected/main/openapi/modular_custom_class_name/foo/bar.py +++ b/tests/data/expected/main/openapi/modular_custom_class_name/foo/bar.py @@ -4,17 +4,17 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel class CustomThing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class CustomThang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class CustomOthers(BaseModel): diff --git a/tests/data/expected/main/openapi/modular_custom_class_name/models.py b/tests/data/expected/main/openapi/modular_custom_class_name/models.py index 606597768..a6377e1c3 100644 --- a/tests/data/expected/main/openapi/modular_custom_class_name/models.py +++ b/tests/data/expected/main/openapi/modular_custom_class_name/models.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -30,4 +30,4 @@ class CustomUser(BaseModel): class CustomEvent(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None diff --git a/tests/data/expected/main/openapi/modular_reuse_model/_internal.py b/tests/data/expected/main/openapi/modular_reuse_model/_internal.py index 99681c1df..74df229b4 100644 --- a/tests/data/expected/main/openapi/modular_reuse_model/_internal.py +++ b/tests/data/expected/main/openapi/modular_reuse_model/_internal.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -50,15 +50,15 @@ class Tea_1(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(Tea_1): pass -class ListModel(BaseModel): - __root__: List[Tea_1] +class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() diff --git a/tests/data/expected/main/openapi/modular_reuse_model/collections.py b/tests/data/expected/main/openapi/modular_reuse_model/collections.py index e543cec54..da99bbf1b 100644 --- a/tests/data/expected/main/openapi/modular_reuse_model/collections.py +++ b/tests/data/expected/main/openapi/modular_reuse_model/collections.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -13,15 +13,15 @@ class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -48,4 +48,4 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] diff --git a/tests/data/expected/main/openapi/modular_reuse_model/foo/bar.py b/tests/data/expected/main/openapi/modular_reuse_model/foo/bar.py index 9e9572a82..cf51a68fb 100644 --- a/tests/data/expected/main/openapi/modular_reuse_model/foo/bar.py +++ b/tests/data/expected/main/openapi/modular_reuse_model/foo/bar.py @@ -4,17 +4,17 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): diff --git a/tests/data/expected/main/openapi/modular_reuse_model/models.py b/tests/data/expected/main/openapi/modular_reuse_model/models.py index 40d4b7546..2c32d9762 100644 --- a/tests/data/expected/main/openapi/modular_reuse_model/models.py +++ b/tests/data/expected/main/openapi/modular_reuse_model/models.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -30,4 +30,4 @@ class User(BaseModel): class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None diff --git a/tests/data/expected/main/openapi/modular_reuse_model/nested/foo.py b/tests/data/expected/main/openapi/modular_reuse_model/nested/foo.py index 75be2c17f..3bc76e6d5 100644 --- a/tests/data/expected/main/openapi/modular_reuse_model/nested/foo.py +++ b/tests/data/expected/main/openapi/modular_reuse_model/nested/foo.py @@ -2,8 +2,8 @@ # filename: modular.yaml # timestamp: 1985-10-26T08:21:00+00:00 -from .._internal import ListModel +from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone -__all__ = ["ListModel", "Tea", "TeaClone"] +__all__ = ["List", "Tea", "TeaClone"] diff --git a/tests/data/expected/main/openapi/modular_typed_dict/_internal.py b/tests/data/expected/main/openapi/modular_typed_dict/_internal.py index a5501fb82..b5b1cad56 100644 --- a/tests/data/expected/main/openapi/modular_typed_dict/_internal.py +++ b/tests/data/expected/main/openapi/modular_typed_dict/_internal.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, NotRequired, TypeAlias, TypedDict +from typing import NotRequired, TypeAlias, TypedDict from . import models @@ -45,14 +45,14 @@ class Tea_1(TypedDict): flavour: NotRequired[str] id: NotRequired[Id] self: NotRequired[Tea_1] - optional: NotRequired[List[Optional]] + optional: NotRequired[list[Optional]] class TeaClone(TypedDict): flavour: NotRequired[str] id: NotRequired[Id] self: NotRequired[Tea_1] - optional: NotRequired[List[Optional]] + optional: NotRequired[list[Optional]] -ListModel: TypeAlias = List[Tea_1] +List: TypeAlias = list[Tea_1] diff --git a/tests/data/expected/main/openapi/modular_typed_dict/collections.py b/tests/data/expected/main/openapi/modular_typed_dict/collections.py index d30affc31..a2a5f8377 100644 --- a/tests/data/expected/main/openapi/modular_typed_dict/collections.py +++ b/tests/data/expected/main/openapi/modular_typed_dict/collections.py @@ -4,17 +4,17 @@ from __future__ import annotations -from typing import List, Literal, NotRequired, TypeAlias, TypedDict +from typing import Literal, NotRequired, TypeAlias, TypedDict from . import models -Pets: TypeAlias = List[models.Pet] +Pets: TypeAlias = list[models.Pet] -Users: TypeAlias = List[models.User] +Users: TypeAlias = list[models.User] -Rules: TypeAlias = List[str] +Rules: TypeAlias = list[str] class Api(TypedDict): @@ -25,4 +25,4 @@ class Api(TypedDict): stage: NotRequired[Literal['test', 'dev', 'stg', 'prod']] -Apis: TypeAlias = List[Api] +Apis: TypeAlias = list[Api] diff --git a/tests/data/expected/main/openapi/modular_typed_dict/foo/bar.py b/tests/data/expected/main/openapi/modular_typed_dict/foo/bar.py index 9b78c548b..6d3e27670 100644 --- a/tests/data/expected/main/openapi/modular_typed_dict/foo/bar.py +++ b/tests/data/expected/main/openapi/modular_typed_dict/foo/bar.py @@ -4,15 +4,15 @@ from __future__ import annotations -from typing import Any, Dict, List, NotRequired, TypedDict +from typing import Any, NotRequired, TypedDict class Thing(TypedDict): - attributes: NotRequired[Dict[str, Any]] + attributes: NotRequired[dict[str, Any]] class Thang(TypedDict): - attributes: NotRequired[List[Dict[str, Any]]] + attributes: NotRequired[list[dict[str, Any]]] class Others(TypedDict): diff --git a/tests/data/expected/main/openapi/modular_typed_dict/models.py b/tests/data/expected/main/openapi/modular_typed_dict/models.py index fd8b64da1..fc9b5a4b6 100644 --- a/tests/data/expected/main/openapi/modular_typed_dict/models.py +++ b/tests/data/expected/main/openapi/modular_typed_dict/models.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Any, Dict, List, Literal, NotRequired, TypeAlias, TypedDict, Union +from typing import Any, Literal, NotRequired, TypeAlias, TypedDict, Union Species: TypeAlias = Literal['dog', 'cat', 'snake'] @@ -23,4 +23,4 @@ class User(TypedDict): class Event(TypedDict): - name: NotRequired[Union[str, float, int, bool, Dict[str, Any], List[str]]] + name: NotRequired[Union[str, float, int, bool, dict[str, Any], list[str]]] diff --git a/tests/data/expected/main/openapi/modular_typed_dict/nested/foo.py b/tests/data/expected/main/openapi/modular_typed_dict/nested/foo.py index 75be2c17f..3bc76e6d5 100644 --- a/tests/data/expected/main/openapi/modular_typed_dict/nested/foo.py +++ b/tests/data/expected/main/openapi/modular_typed_dict/nested/foo.py @@ -2,8 +2,8 @@ # filename: modular.yaml # timestamp: 1985-10-26T08:21:00+00:00 -from .._internal import ListModel +from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone -__all__ = ["ListModel", "Tea", "TeaClone"] +__all__ = ["List", "Tea", "TeaClone"] diff --git a/tests/data/expected/main/openapi/module_class_name_collision/__init__.py b/tests/data/expected/main/openapi/module_class_name_collision/__init__.py index 365de919e..ef00348e1 100644 --- a/tests/data/expected/main/openapi/module_class_name_collision/__init__.py +++ b/tests/data/expected/main/openapi/module_class_name_collision/__init__.py @@ -4,12 +4,10 @@ from __future__ import annotations -from typing import List - from pydantic import RootModel from .A import A -class AGetResponse(RootModel[List[A]]): - root: List[A] +class AGetResponse(RootModel[list[A]]): + root: list[A] diff --git a/tests/data/expected/main/openapi/module_class_name_collision_deep/__init__.py b/tests/data/expected/main/openapi/module_class_name_collision_deep/__init__.py index 832c5950c..fe0dbc360 100644 --- a/tests/data/expected/main/openapi/module_class_name_collision_deep/__init__.py +++ b/tests/data/expected/main/openapi/module_class_name_collision_deep/__init__.py @@ -4,12 +4,10 @@ from __future__ import annotations -from typing import List - from pydantic import RootModel from .A.B import B -class BGetResponse(RootModel[List[B]]): - root: List[B] +class BGetResponse(RootModel[list[B]]): + root: list[B] diff --git a/tests/data/expected/main/openapi/msgspec_anyof.py b/tests/data/expected/main/openapi/msgspec_anyof.py index e601ac564..7ce5466da 100644 --- a/tests/data/expected/main/openapi/msgspec_anyof.py +++ b/tests/data/expected/main/openapi/msgspec_anyof.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, Dict, List, TypeAlias, Union +from typing import Annotated, TypeAlias, Union from msgspec import UNSET, Meta, Struct, UnsetType @@ -50,7 +50,7 @@ class AnyOfArray1(Struct): AnyOfArray2: TypeAlias = Annotated[str, Meta(max_length=5000)] -AnyOfArray: TypeAlias = List[Union[Pet, Car, AnyOfArray1, AnyOfArray2]] +AnyOfArray: TypeAlias = list[Union[Pet, Car, AnyOfArray1, AnyOfArray2]] class Error(Struct): @@ -59,4 +59,4 @@ class Error(Struct): class Config(Struct): - setting: Union[Dict[str, Union[str, List[str]]], UnsetType] = UNSET + setting: Union[dict[str, Union[str, list[str]]], UnsetType] = UNSET diff --git a/tests/data/expected/main/openapi/msgspec_default_object/Another.py b/tests/data/expected/main/openapi/msgspec_default_object/Another.py index 3d8c40514..60485fb6a 100644 --- a/tests/data/expected/main/openapi/msgspec_default_object/Another.py +++ b/tests/data/expected/main/openapi/msgspec_default_object/Another.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, TypeAlias, Union +from typing import TypeAlias, Union from msgspec import Struct, UnsetType, convert, field @@ -18,6 +18,6 @@ class Bar(Struct): original_foo: Union[Foo_1, UnsetType] = field( default_factory=lambda: convert({'text': 'abc', 'number': 123}, type=Foo_1) ) - nested_foo: Union[List[Nested.Foo], UnsetType] = field( + nested_foo: Union[list[Nested.Foo], UnsetType] = field( default_factory=lambda: convert(['abc', 'efg'], type=list[Nested.Foo]) ) diff --git a/tests/data/expected/main/openapi/msgspec_default_object/Nested.py b/tests/data/expected/main/openapi/msgspec_default_object/Nested.py index fe29f9e9e..84ace710e 100644 --- a/tests/data/expected/main/openapi/msgspec_default_object/Nested.py +++ b/tests/data/expected/main/openapi/msgspec_default_object/Nested.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, TypeAlias, Union +from typing import TypeAlias, Union from msgspec import Struct, UnsetType, convert, field @@ -17,7 +17,7 @@ class Bar(Struct): foo: Union[Foo_1, UnsetType] = field( default_factory=lambda: convert({'text': 'abc', 'number': 123}, type=Foo_1) ) - baz: Union[List[Foo_1], UnsetType] = field( + baz: Union[list[Foo_1], UnsetType] = field( default_factory=lambda: convert( [{'text': 'abc', 'number': 123}, {'text': 'efg', 'number': 456}], type=list[Foo_1], diff --git a/tests/data/expected/main/openapi/msgspec_default_object/__init__.py b/tests/data/expected/main/openapi/msgspec_default_object/__init__.py index 166bcf319..962898297 100644 --- a/tests/data/expected/main/openapi/msgspec_default_object/__init__.py +++ b/tests/data/expected/main/openapi/msgspec_default_object/__init__.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Union +from typing import Union from msgspec import UNSET, Struct, UnsetType, convert, field @@ -18,7 +18,7 @@ class Bar(Struct): foo: Union[Foo, UnsetType] = field( default_factory=lambda: convert({'text': 'abc', 'number': 123}, type=Foo) ) - baz: Union[List[Foo], UnsetType] = field( + baz: Union[list[Foo], UnsetType] = field( default_factory=lambda: convert( [{'text': 'abc', 'number': 123}, {'text': 'efg', 'number': 456}], type=list[Foo], diff --git a/tests/data/expected/main/openapi/msgspec_nullable.py b/tests/data/expected/main/openapi/msgspec_nullable.py index fec9905c1..8e27fbb35 100644 --- a/tests/data/expected/main/openapi/msgspec_nullable.py +++ b/tests/data/expected/main/openapi/msgspec_nullable.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, Optional, TypeAlias, Union +from typing import Annotated, Optional, TypeAlias, Union from msgspec import UNSET, Meta, Struct, UnsetType, field @@ -47,7 +47,7 @@ class Api(Struct): ] = UNSET -Apis: TypeAlias = Optional[List[Api]] +Apis: TypeAlias = Optional[list[Api]] class EmailItem(Struct): @@ -57,7 +57,7 @@ class EmailItem(Struct): tag: Union[str, UnsetType] = UNSET -Email: TypeAlias = List[EmailItem] +Email: TypeAlias = list[EmailItem] Id: TypeAlias = int @@ -73,9 +73,9 @@ class EmailItem(Struct): class Notes(Struct): - comments: Union[List[str], UnsetType] = field(default_factory=list) + comments: Union[list[str], UnsetType] = field(default_factory=list) class Options(Struct): - comments: List[str] - oneOfComments: List[Union[str, float]] + comments: list[str] + oneOfComments: list[Union[str, float]] diff --git a/tests/data/expected/main/openapi/msgspec_struct.py b/tests/data/expected/main/openapi/msgspec_struct.py index 6335ac401..7b62176b2 100644 --- a/tests/data/expected/main/openapi/msgspec_struct.py +++ b/tests/data/expected/main/openapi/msgspec_struct.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, TypeAlias, Union +from typing import Annotated, TypeAlias, Union from msgspec import UNSET, Meta, Struct, UnsetType @@ -15,7 +15,7 @@ class Pet(Struct): tag: Union[str, UnsetType] = UNSET -Pets: TypeAlias = List[Pet] +Pets: TypeAlias = list[Pet] class User(Struct): @@ -24,13 +24,13 @@ class User(Struct): tag: Union[str, UnsetType] = UNSET -Users: TypeAlias = List[User] +Users: TypeAlias = list[User] Id: TypeAlias = str -Rules: TypeAlias = List[str] +Rules: TypeAlias = list[str] class Error(Struct): @@ -57,7 +57,7 @@ class Api(Struct): ] = UNSET -Apis: TypeAlias = List[Api] +Apis: TypeAlias = list[Api] class Event(Struct): diff --git a/tests/data/expected/main/openapi/msgspec_struct_snake_case.py b/tests/data/expected/main/openapi/msgspec_struct_snake_case.py index 2e898e661..92e889da2 100644 --- a/tests/data/expected/main/openapi/msgspec_struct_snake_case.py +++ b/tests/data/expected/main/openapi/msgspec_struct_snake_case.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, TypeAlias, Union +from typing import Annotated, TypeAlias, Union from msgspec import UNSET, Meta, Struct, UnsetType, field @@ -16,7 +16,7 @@ class Pet(Struct): tag: Union[str, UnsetType] = UNSET -Pets: TypeAlias = List[Pet] +Pets: TypeAlias = list[Pet] class User(Struct): @@ -25,13 +25,13 @@ class User(Struct): tag: Union[str, UnsetType] = UNSET -Users: TypeAlias = List[User] +Users: TypeAlias = list[User] Id: TypeAlias = str -Rules: TypeAlias = List[str] +Rules: TypeAlias = list[str] class Error(Struct): @@ -58,7 +58,7 @@ class Api(Struct): ] = field(name='apiDocumentationUrl', default=UNSET) -Apis: TypeAlias = List[Api] +Apis: TypeAlias = list[Api] class Event(Struct): diff --git a/tests/data/expected/main/openapi/msgspec_use_annotated_with_field_constraints.py b/tests/data/expected/main/openapi/msgspec_use_annotated_with_field_constraints.py index f12fdef8d..793df5600 100644 --- a/tests/data/expected/main/openapi/msgspec_use_annotated_with_field_constraints.py +++ b/tests/data/expected/main/openapi/msgspec_use_annotated_with_field_constraints.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, TypeAlias, Union +from typing import Annotated, TypeAlias, Union from msgspec import UNSET, Meta, Struct, UnsetType @@ -15,7 +15,7 @@ class Pet(Struct): tag: Union[Annotated[str, Meta(max_length=64)], UnsetType] = UNSET -Pets: TypeAlias = List[Pet] +Pets: TypeAlias = list[Pet] UID: TypeAlias = Annotated[int, Meta(ge=0)] @@ -32,8 +32,8 @@ class User(Struct): name: Annotated[str, Meta(max_length=256)] uid: UID tag: Union[Annotated[str, Meta(max_length=64)], UnsetType] = UNSET - phones: Union[List[Phone], UnsetType] = UNSET - fax: Union[List[FaxItem], UnsetType] = UNSET + phones: Union[list[Phone], UnsetType] = UNSET + fax: Union[list[FaxItem], UnsetType] = UNSET height: Union[Annotated[Union[int, float], Meta(ge=1.0, le=300.0)], UnsetType] = ( UNSET ) @@ -44,13 +44,13 @@ class User(Struct): rating: Union[Annotated[float, Meta(gt=0.0, le=5.0)], UnsetType] = UNSET -Users: TypeAlias = List[User] +Users: TypeAlias = list[User] Id: TypeAlias = str -Rules: TypeAlias = List[str] +Rules: TypeAlias = list[str] class Error(Struct): @@ -80,7 +80,7 @@ class Api(Struct): ] = UNSET -Apis: TypeAlias = List[Api] +Apis: TypeAlias = list[Api] class Event(Struct): diff --git a/tests/data/expected/main/openapi/msgspec_use_union_operator.py b/tests/data/expected/main/openapi/msgspec_use_union_operator.py index 7e88acf06..66c469a8a 100644 --- a/tests/data/expected/main/openapi/msgspec_use_union_operator.py +++ b/tests/data/expected/main/openapi/msgspec_use_union_operator.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, TypeAlias +from typing import Annotated, TypeAlias from msgspec import UNSET, Meta, Struct, UnsetType, field @@ -47,7 +47,7 @@ class Api(Struct): ) = UNSET -Apis: TypeAlias = List[Api] | None +Apis: TypeAlias = list[Api] | None class EmailItem(Struct): @@ -57,7 +57,7 @@ class EmailItem(Struct): tag: str | UnsetType = UNSET -Email: TypeAlias = List[EmailItem] +Email: TypeAlias = list[EmailItem] Id: TypeAlias = int @@ -73,9 +73,9 @@ class EmailItem(Struct): class Notes(Struct): - comments: List[str] | UnsetType = field(default_factory=list) + comments: list[str] | UnsetType = field(default_factory=list) class Options(Struct): - comments: List[str] - oneOfComments: List[str | float] + comments: list[str] + oneOfComments: list[str | float] diff --git a/tests/data/expected/main/openapi/no_file.py b/tests/data/expected/main/openapi/no_file.py index e1dfde123..b0ec865fc 100644 --- a/tests/data/expected/main/openapi/no_file.py +++ b/tests/data/expected/main/openapi/no_file.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/nullable.py b/tests/data/expected/main/openapi/nullable.py index d722472a0..49d045d0a 100644 --- a/tests/data/expected/main/openapi/nullable.py +++ b/tests/data/expected/main/openapi/nullable.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -44,7 +44,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: Optional[List[Api]] = None + __root__: Optional[list[Api]] = None class EmailItem(BaseModel): @@ -55,7 +55,7 @@ class EmailItem(BaseModel): class Email(BaseModel): - __root__: List[EmailItem] + __root__: list[EmailItem] class Id(BaseModel): @@ -75,9 +75,9 @@ class Tag(BaseModel): class Notes(BaseModel): - comments: List[str] = Field(default_factory=list) + comments: list[str] = Field(default_factory=list) class Options(BaseModel): - comments: List[str] - oneOfComments: List[Union[str, float]] + comments: list[str] + oneOfComments: list[Union[str, float]] diff --git a/tests/data/expected/main/openapi/nullable_31.py b/tests/data/expected/main/openapi/nullable_31.py index 8a851cfb7..ae10a5ec1 100644 --- a/tests/data/expected/main/openapi/nullable_31.py +++ b/tests/data/expected/main/openapi/nullable_31.py @@ -4,8 +4,6 @@ from __future__ import annotations -from typing import List - from pydantic import BaseModel @@ -14,4 +12,4 @@ class Apple(BaseModel): class Basket(BaseModel): - apples: List[Apple] | None + apples: list[Apple] | None diff --git a/tests/data/expected/main/openapi/nullable_strict_nullable.py b/tests/data/expected/main/openapi/nullable_strict_nullable.py index b6b386906..8777fd743 100644 --- a/tests/data/expected/main/openapi/nullable_strict_nullable.py +++ b/tests/data/expected/main/openapi/nullable_strict_nullable.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -44,7 +44,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: Optional[List[Api]] = Field(...) + __root__: Optional[list[Api]] = Field(...) class EmailItem(BaseModel): @@ -55,7 +55,7 @@ class EmailItem(BaseModel): class Email(BaseModel): - __root__: List[EmailItem] + __root__: list[EmailItem] class Id(BaseModel): @@ -75,9 +75,9 @@ class Tag(BaseModel): class Notes(BaseModel): - comments: List[str] = Field(default_factory=list) + comments: list[str] = Field(default_factory=list) class Options(BaseModel): - comments: List[Optional[str]] - oneOfComments: List[Union[Optional[str], Optional[float]]] + comments: list[Optional[str]] + oneOfComments: list[Union[Optional[str], Optional[float]]] diff --git a/tests/data/expected/main/openapi/nullable_strict_nullable_use_union_operator.py b/tests/data/expected/main/openapi/nullable_strict_nullable_use_union_operator.py index 7fb9b8ea2..ad85cbb51 100644 --- a/tests/data/expected/main/openapi/nullable_strict_nullable_use_union_operator.py +++ b/tests/data/expected/main/openapi/nullable_strict_nullable_use_union_operator.py @@ -4,8 +4,6 @@ from __future__ import annotations -from typing import List - from pydantic import AnyUrl, BaseModel, Field @@ -44,7 +42,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] | None = Field(...) + __root__: list[Api] | None = Field(...) class EmailItem(BaseModel): @@ -55,7 +53,7 @@ class EmailItem(BaseModel): class Email(BaseModel): - __root__: List[EmailItem] + __root__: list[EmailItem] class Id(BaseModel): @@ -75,9 +73,9 @@ class Tag(BaseModel): class Notes(BaseModel): - comments: List[str] = Field(default_factory=list) + comments: list[str] = Field(default_factory=list) class Options(BaseModel): - comments: List[str | None] - oneOfComments: List[str | float | None] + comments: list[str | None] + oneOfComments: list[str | float | None] diff --git a/tests/data/expected/main/openapi/oas_response_reference.py b/tests/data/expected/main/openapi/oas_response_reference.py index 77501bee4..79b1441c5 100644 --- a/tests/data/expected/main/openapi/oas_response_reference.py +++ b/tests/data/expected/main/openapi/oas_response_reference.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -21,4 +21,4 @@ class Error(BaseModel): class PetsGetResponse(BaseModel): - __root__: List[Pet] + __root__: list[Pet] diff --git a/tests/data/expected/main/openapi/openapi_non_operations_and_security.py b/tests/data/expected/main/openapi/openapi_non_operations_and_security.py index 86e769003..69849bbe3 100644 --- a/tests/data/expected/main/openapi/openapi_non_operations_and_security.py +++ b/tests/data/expected/main/openapi/openapi_non_operations_and_security.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -15,4 +15,4 @@ class Pet(BaseModel): class PetsGetResponse(BaseModel): - __root__: List[Pet] + __root__: list[Pet] diff --git a/tests/data/expected/main/openapi/paths_ref_with_external_schema.py b/tests/data/expected/main/openapi/paths_ref_with_external_schema.py index bdbb9230a..aa4710b94 100644 --- a/tests/data/expected/main/openapi/paths_ref_with_external_schema.py +++ b/tests/data/expected/main/openapi/paths_ref_with_external_schema.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -21,4 +21,4 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] diff --git a/tests/data/expected/main/openapi/pydantic_v2.py b/tests/data/expected/main/openapi/pydantic_v2.py index 2e49580bd..d81ba51b1 100644 --- a/tests/data/expected/main/openapi/pydantic_v2.py +++ b/tests/data/expected/main/openapi/pydantic_v2.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field, RootModel @@ -15,8 +15,8 @@ class Pet(BaseModel): tag: Optional[str] = None -class Pets(RootModel[List[Pet]]): - root: List[Pet] +class Pets(RootModel[list[Pet]]): + root: list[Pet] class User(BaseModel): @@ -25,16 +25,16 @@ class User(BaseModel): tag: Optional[str] = None -class Users(RootModel[List[User]]): - root: List[User] +class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str -class Rules(RootModel[List[str]]): - root: List[str] +class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -57,8 +57,8 @@ class Api(BaseModel): ) -class Apis(RootModel[List[Api]]): - root: List[Api] +class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/pydantic_v2_default_object/Another.py b/tests/data/expected/main/openapi/pydantic_v2_default_object/Another.py index e6041cc99..dbe7820bd 100644 --- a/tests/data/expected/main/openapi/pydantic_v2_default_object/Another.py +++ b/tests/data/expected/main/openapi/pydantic_v2_default_object/Another.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field, RootModel @@ -20,6 +20,6 @@ class Bar(BaseModel): original_foo: Optional[Foo_1] = Field( default_factory=lambda: Foo_1.model_validate({'text': 'abc', 'number': 123}) ) - nested_foo: Optional[List[Nested.Foo]] = Field( + nested_foo: Optional[list[Nested.Foo]] = Field( default_factory=lambda: [Nested.Foo.model_validate(v) for v in ['abc', 'efg']] ) diff --git a/tests/data/expected/main/openapi/pydantic_v2_default_object/Nested.py b/tests/data/expected/main/openapi/pydantic_v2_default_object/Nested.py index d9adf1e5f..beadcc1f8 100644 --- a/tests/data/expected/main/openapi/pydantic_v2_default_object/Nested.py +++ b/tests/data/expected/main/openapi/pydantic_v2_default_object/Nested.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field, RootModel @@ -19,7 +19,7 @@ class Bar(BaseModel): foo: Optional[Foo_1] = Field( default_factory=lambda: Foo_1.model_validate({'text': 'abc', 'number': 123}) ) - baz: Optional[List[Foo_1]] = Field( + baz: Optional[list[Foo_1]] = Field( default_factory=lambda: [ Foo_1.model_validate(v) for v in [{'text': 'abc', 'number': 123}, {'text': 'efg', 'number': 456}] diff --git a/tests/data/expected/main/openapi/pydantic_v2_default_object/__init__.py b/tests/data/expected/main/openapi/pydantic_v2_default_object/__init__.py index bc7132cd8..88e1aa56b 100644 --- a/tests/data/expected/main/openapi/pydantic_v2_default_object/__init__.py +++ b/tests/data/expected/main/openapi/pydantic_v2_default_object/__init__.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Field @@ -18,7 +18,7 @@ class Bar(BaseModel): foo: Optional[Foo] = Field( default_factory=lambda: Foo.model_validate({'text': 'abc', 'number': 123}) ) - baz: Optional[List[Foo]] = Field( + baz: Optional[list[Foo]] = Field( default_factory=lambda: [ Foo.model_validate(v) for v in [{'text': 'abc', 'number': 123}, {'text': 'efg', 'number': 456}] diff --git a/tests/data/expected/main/openapi/pyproject_not_found.py b/tests/data/expected/main/openapi/pyproject_not_found.py index 6e24ae1de..b753b36f2 100644 --- a/tests/data/expected/main/openapi/pyproject_not_found.py +++ b/tests/data/expected/main/openapi/pyproject_not_found.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/same_name_objects.py b/tests/data/expected/main/openapi/same_name_objects.py index 4f64ed19a..d393ebf03 100644 --- a/tests/data/expected/main/openapi/same_name_objects.py +++ b/tests/data/expected/main/openapi/same_name_objects.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel, Extra @@ -28,11 +28,11 @@ class Error(BaseModel): class Resolved(BaseModel): - resolved: Optional[List[str]] = None + resolved: Optional[list[str]] = None class PetsModel(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Friends2(BaseModel): diff --git a/tests/data/expected/main/openapi/serialize_as_any_pydantic_v2.py b/tests/data/expected/main/openapi/serialize_as_any_pydantic_v2.py index 506f06b7e..01574e962 100644 --- a/tests/data/expected/main/openapi/serialize_as_any_pydantic_v2.py +++ b/tests/data/expected/main/openapi/serialize_as_any_pydantic_v2.py @@ -4,8 +4,6 @@ from __future__ import annotations -from typing import List - from pydantic import BaseModel, Field, SerializeAsAny @@ -24,6 +22,6 @@ class Container(BaseModel): user_field: SerializeAsAny[User] = Field( ..., description='Field that should use SerializeAsAny' ) - user_list: List[SerializeAsAny[User]] = Field( + user_list: list[SerializeAsAny[User]] = Field( ..., description='List of users that should use SerializeAsAny' ) diff --git a/tests/data/expected/main/openapi/target_python_version.py b/tests/data/expected/main/openapi/target_python_version.py index 6e24ae1de..b753b36f2 100644 --- a/tests/data/expected/main/openapi/target_python_version.py +++ b/tests/data/expected/main/openapi/target_python_version.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/target_python_version_313_has_future_annotations.py b/tests/data/expected/main/openapi/target_python_version_313_has_future_annotations.py index e1dfde123..b0ec865fc 100644 --- a/tests/data/expected/main/openapi/target_python_version_313_has_future_annotations.py +++ b/tests/data/expected/main/openapi/target_python_version_313_has_future_annotations.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/target_python_version_314_no_future_annotations.py b/tests/data/expected/main/openapi/target_python_version_314_no_future_annotations.py index 80720853e..e63cbbc53 100644 --- a/tests/data/expected/main/openapi/target_python_version_314_no_future_annotations.py +++ b/tests/data/expected/main/openapi/target_python_version_314_no_future_annotations.py @@ -2,7 +2,7 @@ # filename: api.yaml # timestamp: 1985-10-26T08:21:00+00:00 -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -14,7 +14,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -24,7 +24,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -32,7 +32,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -56,7 +56,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/type_alias.py b/tests/data/expected/main/openapi/type_alias.py index 400752db2..37885b1ae 100644 --- a/tests/data/expected/main/openapi/type_alias.py +++ b/tests/data/expected/main/openapi/type_alias.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, Optional, TypeAlias, Union +from typing import Annotated, Optional, TypeAlias, Union from pydantic import BaseModel, Field @@ -14,7 +14,7 @@ UnionType: TypeAlias = Union[str, int] -ArrayType: TypeAlias = List[str] +ArrayType: TypeAlias = list[str] AnnotatedType: TypeAlias = Annotated[ diff --git a/tests/data/expected/main/openapi/type_alias_cross_module_collision_b.py b/tests/data/expected/main/openapi/type_alias_cross_module_collision_b.py index 70bd9ab5a..571fb0025 100644 --- a/tests/data/expected/main/openapi/type_alias_cross_module_collision_b.py +++ b/tests/data/expected/main/openapi/type_alias_cross_module_collision_b.py @@ -4,6 +4,6 @@ from __future__ import annotations -from typing import List, TypeAlias +from typing import TypeAlias -Item: TypeAlias = List["Item"] +Item: TypeAlias = list["Item"] diff --git a/tests/data/expected/main/openapi/type_alias_py312.py b/tests/data/expected/main/openapi/type_alias_py312.py index e75ab0d5a..e379c35f5 100644 --- a/tests/data/expected/main/openapi/type_alias_py312.py +++ b/tests/data/expected/main/openapi/type_alias_py312.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, Optional, Union +from typing import Annotated, Optional, Union from pydantic import BaseModel, Field @@ -14,7 +14,7 @@ type UnionType = Union[str, int] -type ArrayType = List[str] +type ArrayType = list[str] type AnnotatedType = Annotated[Union[str, bool], Field(..., title='MyAnnotatedType')] diff --git a/tests/data/expected/main/openapi/type_alias_recursive.py b/tests/data/expected/main/openapi/type_alias_recursive.py index 1cde2a604..f9c81f161 100644 --- a/tests/data/expected/main/openapi/type_alias_recursive.py +++ b/tests/data/expected/main/openapi/type_alias_recursive.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Dict, List, Optional, TypeAlias, Union +from typing import Optional, TypeAlias, Union from pydantic import BaseModel @@ -15,14 +15,14 @@ class File(BaseModel): class Folder(BaseModel): address: Optional[str] = None - files: List[File] - subfolders: Optional[List[Folder]] = None + files: list[File] + subfolders: Optional[list[Folder]] = None ElementaryType: TypeAlias = Optional[Union[bool, str, int, float]] -JsonType: TypeAlias = Union[ElementaryType, List["JsonType"], Dict[str, "JsonType"]] +JsonType: TypeAlias = Union[ElementaryType, list["JsonType"], dict[str, "JsonType"]] class Space(BaseModel): diff --git a/tests/data/expected/main/openapi/type_alias_recursive_py311.py b/tests/data/expected/main/openapi/type_alias_recursive_py311.py index 1cde2a604..f9c81f161 100644 --- a/tests/data/expected/main/openapi/type_alias_recursive_py311.py +++ b/tests/data/expected/main/openapi/type_alias_recursive_py311.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Dict, List, Optional, TypeAlias, Union +from typing import Optional, TypeAlias, Union from pydantic import BaseModel @@ -15,14 +15,14 @@ class File(BaseModel): class Folder(BaseModel): address: Optional[str] = None - files: List[File] - subfolders: Optional[List[Folder]] = None + files: list[File] + subfolders: Optional[list[Folder]] = None ElementaryType: TypeAlias = Optional[Union[bool, str, int, float]] -JsonType: TypeAlias = Union[ElementaryType, List["JsonType"], Dict[str, "JsonType"]] +JsonType: TypeAlias = Union[ElementaryType, list["JsonType"], dict[str, "JsonType"]] class Space(BaseModel): diff --git a/tests/data/expected/main/openapi/typed_dict.py b/tests/data/expected/main/openapi/typed_dict.py index 58f221a35..548c3b7d7 100644 --- a/tests/data/expected/main/openapi/typed_dict.py +++ b/tests/data/expected/main/openapi/typed_dict.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, TypeAlias, TypedDict +from typing import TypeAlias, TypedDict from typing_extensions import NotRequired @@ -15,7 +15,7 @@ class Pet(TypedDict): tag: NotRequired[str] -Pets: TypeAlias = List[Pet] +Pets: TypeAlias = list[Pet] class User(TypedDict): @@ -24,13 +24,13 @@ class User(TypedDict): tag: NotRequired[str] -Users: TypeAlias = List[User] +Users: TypeAlias = list[User] Id: TypeAlias = str -Rules: TypeAlias = List[str] +Rules: TypeAlias = list[str] class Error(TypedDict): @@ -45,7 +45,7 @@ class Api(TypedDict): apiDocumentationUrl: NotRequired[str] -Apis: TypeAlias = List[Api] +Apis: TypeAlias = list[Api] class Event(TypedDict): diff --git a/tests/data/expected/main/openapi/typed_dict_nullable.py b/tests/data/expected/main/openapi/typed_dict_nullable.py index b44316685..34cb55b17 100644 --- a/tests/data/expected/main/openapi/typed_dict_nullable.py +++ b/tests/data/expected/main/openapi/typed_dict_nullable.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, NotRequired, Optional, TypeAlias, TypedDict, Union +from typing import NotRequired, Optional, TypeAlias, TypedDict, Union class Cursors(TypedDict): @@ -33,7 +33,7 @@ class Api(TypedDict): apiDocumentationUrl: NotRequired[str] -Apis: TypeAlias = Optional[List[Api]] +Apis: TypeAlias = Optional[list[Api]] class EmailItem(TypedDict): @@ -43,7 +43,7 @@ class EmailItem(TypedDict): tag: NotRequired[str] -Email: TypeAlias = List[EmailItem] +Email: TypeAlias = list[EmailItem] Id: TypeAlias = int @@ -59,9 +59,9 @@ class EmailItem(TypedDict): class Notes(TypedDict): - comments: NotRequired[List[str]] + comments: NotRequired[list[str]] class Options(TypedDict): - comments: List[str] - oneOfComments: List[Union[str, float]] + comments: list[str] + oneOfComments: list[Union[str, float]] diff --git a/tests/data/expected/main/openapi/typed_dict_nullable_strict_nullable.py b/tests/data/expected/main/openapi/typed_dict_nullable_strict_nullable.py index dda20d1b2..fad94b3e9 100644 --- a/tests/data/expected/main/openapi/typed_dict_nullable_strict_nullable.py +++ b/tests/data/expected/main/openapi/typed_dict_nullable_strict_nullable.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, NotRequired, Optional, TypeAlias, TypedDict, Union +from typing import NotRequired, Optional, TypeAlias, TypedDict, Union class Cursors(TypedDict): @@ -33,7 +33,7 @@ class Api(TypedDict): apiDocumentationUrl: NotRequired[Optional[str]] -Apis: TypeAlias = Optional[List[Api]] +Apis: TypeAlias = Optional[list[Api]] class EmailItem(TypedDict): @@ -43,7 +43,7 @@ class EmailItem(TypedDict): tag: NotRequired[str] -Email: TypeAlias = List[EmailItem] +Email: TypeAlias = list[EmailItem] Id: TypeAlias = int @@ -59,9 +59,9 @@ class EmailItem(TypedDict): class Notes(TypedDict): - comments: NotRequired[List[str]] + comments: NotRequired[list[str]] class Options(TypedDict): - comments: List[Optional[str]] - oneOfComments: List[Union[Optional[str], Optional[float]]] + comments: list[Optional[str]] + oneOfComments: list[Union[Optional[str], Optional[float]]] diff --git a/tests/data/expected/main/openapi/typed_dict_py.py b/tests/data/expected/main/openapi/typed_dict_py.py index 58f221a35..548c3b7d7 100644 --- a/tests/data/expected/main/openapi/typed_dict_py.py +++ b/tests/data/expected/main/openapi/typed_dict_py.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, TypeAlias, TypedDict +from typing import TypeAlias, TypedDict from typing_extensions import NotRequired @@ -15,7 +15,7 @@ class Pet(TypedDict): tag: NotRequired[str] -Pets: TypeAlias = List[Pet] +Pets: TypeAlias = list[Pet] class User(TypedDict): @@ -24,13 +24,13 @@ class User(TypedDict): tag: NotRequired[str] -Users: TypeAlias = List[User] +Users: TypeAlias = list[User] Id: TypeAlias = str -Rules: TypeAlias = List[str] +Rules: TypeAlias = list[str] class Error(TypedDict): @@ -45,7 +45,7 @@ class Api(TypedDict): apiDocumentationUrl: NotRequired[str] -Apis: TypeAlias = List[Api] +Apis: TypeAlias = list[Api] class Event(TypedDict): diff --git a/tests/data/expected/main/openapi/unique_items_default_set_dataclass.py b/tests/data/expected/main/openapi/unique_items_default_set_dataclass.py index d76c4d024..f5360d1ee 100644 --- a/tests/data/expected/main/openapi/unique_items_default_set_dataclass.py +++ b/tests/data/expected/main/openapi/unique_items_default_set_dataclass.py @@ -5,11 +5,11 @@ from __future__ import annotations from dataclasses import dataclass, field -from typing import Optional, Set +from typing import Optional @dataclass class TestModel: - tags: Optional[Set[str]] = field(default_factory=lambda: {'tag1', 'tag2'}) - empty_tags: Optional[Set[str]] = field(default_factory=set) - numbers: Optional[Set[int]] = field(default_factory=lambda: {1, 2, 3}) + tags: Optional[set[str]] = field(default_factory=lambda: {'tag1', 'tag2'}) + empty_tags: Optional[set[str]] = field(default_factory=set) + numbers: Optional[set[int]] = field(default_factory=lambda: {1, 2, 3}) diff --git a/tests/data/expected/main/openapi/unique_items_default_set_msgspec.py b/tests/data/expected/main/openapi/unique_items_default_set_msgspec.py index dbc8fce83..84ad2148e 100644 --- a/tests/data/expected/main/openapi/unique_items_default_set_msgspec.py +++ b/tests/data/expected/main/openapi/unique_items_default_set_msgspec.py @@ -4,12 +4,12 @@ from __future__ import annotations -from typing import Set, Union +from typing import Union from msgspec import Struct, UnsetType, field class TestModel(Struct): - tags: Union[Set[str], UnsetType] = field(default_factory=lambda: {'tag1', 'tag2'}) - empty_tags: Union[Set[str], UnsetType] = field(default_factory=set) - numbers: Union[Set[int], UnsetType] = field(default_factory=lambda: {1, 2, 3}) + tags: Union[set[str], UnsetType] = field(default_factory=lambda: {'tag1', 'tag2'}) + empty_tags: Union[set[str], UnsetType] = field(default_factory=set) + numbers: Union[set[int], UnsetType] = field(default_factory=lambda: {1, 2, 3}) diff --git a/tests/data/expected/main/openapi/unique_items_default_set_pydantic.py b/tests/data/expected/main/openapi/unique_items_default_set_pydantic.py index 342916b8a..d99a4d8d6 100644 --- a/tests/data/expected/main/openapi/unique_items_default_set_pydantic.py +++ b/tests/data/expected/main/openapi/unique_items_default_set_pydantic.py @@ -4,12 +4,12 @@ from __future__ import annotations -from typing import Optional, Set +from typing import Optional from pydantic import BaseModel, Field class TestModel(BaseModel): - tags: Optional[Set[str]] = Field({'tag1', 'tag2'}, unique_items=True) - empty_tags: Optional[Set[str]] = Field(set(), unique_items=True) - numbers: Optional[Set[int]] = Field({1, 2, 3}, unique_items=True) + tags: Optional[set[str]] = Field({'tag1', 'tag2'}, unique_items=True) + empty_tags: Optional[set[str]] = Field(set(), unique_items=True) + numbers: Optional[set[int]] = Field({1, 2, 3}, unique_items=True) diff --git a/tests/data/expected/main/openapi/unique_items_default_set_pydantic_v2.py b/tests/data/expected/main/openapi/unique_items_default_set_pydantic_v2.py index e8598d60e..88a913cae 100644 --- a/tests/data/expected/main/openapi/unique_items_default_set_pydantic_v2.py +++ b/tests/data/expected/main/openapi/unique_items_default_set_pydantic_v2.py @@ -4,12 +4,12 @@ from __future__ import annotations -from typing import Optional, Set +from typing import Optional from pydantic import BaseModel class TestModel(BaseModel): - tags: Optional[Set[str]] = {'tag1', 'tag2'} - empty_tags: Optional[Set[str]] = set() - numbers: Optional[Set[int]] = {1, 2, 3} + tags: Optional[set[str]] = {'tag1', 'tag2'} + empty_tags: Optional[set[str]] = set() + numbers: Optional[set[int]] = {1, 2, 3} diff --git a/tests/data/expected/main/openapi/use_annotated_with_field_constraints.py b/tests/data/expected/main/openapi/use_annotated_with_field_constraints.py index 4856b7200..a93b765f9 100644 --- a/tests/data/expected/main/openapi/use_annotated_with_field_constraints.py +++ b/tests/data/expected/main/openapi/use_annotated_with_field_constraints.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, Optional, Union +from typing import Annotated, Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: Annotated[List[Pet], Field(max_items=10, min_items=1, unique_items=True)] + __root__: Annotated[list[Pet], Field(max_items=10, min_items=1, unique_items=True)] class UID(BaseModel): @@ -36,8 +36,8 @@ class User(BaseModel): name: Annotated[str, Field(max_length=256)] tag: Annotated[Optional[str], Field(max_length=64)] = None uid: UID - phones: Annotated[Optional[List[Phone]], Field(max_items=10)] = None - fax: Optional[List[FaxItem]] = None + phones: Annotated[Optional[list[Phone]], Field(max_items=10)] = None + fax: Optional[list[FaxItem]] = None height: Annotated[Optional[Union[int, float]], Field(ge=1.0, le=300.0)] = None weight: Annotated[Optional[Union[float, int]], Field(ge=1.0, le=1000.0)] = None age: Annotated[Optional[int], Field(gt=0, le=200)] = None @@ -45,7 +45,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -53,7 +53,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -77,7 +77,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/use_annotated_with_field_constraints_pydantic_v2.py b/tests/data/expected/main/openapi/use_annotated_with_field_constraints_pydantic_v2.py index 372ed2bdd..ff4fe7c50 100644 --- a/tests/data/expected/main/openapi/use_annotated_with_field_constraints_pydantic_v2.py +++ b/tests/data/expected/main/openapi/use_annotated_with_field_constraints_pydantic_v2.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, Optional, Union +from typing import Annotated, Optional, Union from pydantic import AnyUrl, BaseModel, Field, RootModel @@ -15,8 +15,8 @@ class Pet(BaseModel): tag: Annotated[Optional[str], Field(max_length=64)] = None -class Pets(RootModel[List[Pet]]): - root: Annotated[List[Pet], Field(max_length=10, min_length=1)] +class Pets(RootModel[list[Pet]]): + root: Annotated[list[Pet], Field(max_length=10, min_length=1)] class UID(RootModel[int]): @@ -36,24 +36,24 @@ class User(BaseModel): name: Annotated[str, Field(max_length=256)] tag: Annotated[Optional[str], Field(max_length=64)] = None uid: UID - phones: Annotated[Optional[List[Phone]], Field(max_length=10)] = None - fax: Optional[List[FaxItem]] = None + phones: Annotated[Optional[list[Phone]], Field(max_length=10)] = None + fax: Optional[list[FaxItem]] = None height: Annotated[Optional[Union[int, float]], Field(ge=1.0, le=300.0)] = None weight: Annotated[Optional[Union[float, int]], Field(ge=1.0, le=1000.0)] = None age: Annotated[Optional[int], Field(gt=0, le=200)] = None rating: Annotated[Optional[float], Field(gt=0.0, le=5.0)] = None -class Users(RootModel[List[User]]): - root: List[User] +class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str -class Rules(RootModel[List[str]]): - root: List[str] +class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -76,8 +76,8 @@ class Api(BaseModel): ] = None -class Apis(RootModel[List[Api]]): - root: List[Api] +class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/use_default.py b/tests/data/expected/main/openapi/use_default.py index bc965e225..0b36a0464 100644 --- a/tests/data/expected/main/openapi/use_default.py +++ b/tests/data/expected/main/openapi/use_default.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/use_default_kwarg.py b/tests/data/expected/main/openapi/use_default_kwarg.py index 25b18325e..46cb13136 100644 --- a/tests/data/expected/main/openapi/use_default_kwarg.py +++ b/tests/data/expected/main/openapi/use_default_kwarg.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -44,7 +44,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: Optional[List[Api]] = None + __root__: Optional[list[Api]] = None class EmailItem(BaseModel): @@ -55,7 +55,7 @@ class EmailItem(BaseModel): class Email(BaseModel): - __root__: List[EmailItem] + __root__: list[EmailItem] class Id(BaseModel): @@ -75,9 +75,9 @@ class Tag(BaseModel): class Notes(BaseModel): - comments: List[str] = Field(default_factory=list) + comments: list[str] = Field(default_factory=list) class Options(BaseModel): - comments: List[str] - oneOfComments: List[Union[str, float]] + comments: list[str] + oneOfComments: list[Union[str, float]] diff --git a/tests/data/expected/main/openapi/use_operation_id_as_name.py b/tests/data/expected/main/openapi/use_operation_id_as_name.py index 38fdbe45a..d93bc7598 100644 --- a/tests/data/expected/main/openapi/use_operation_id_as_name.py +++ b/tests/data/expected/main/openapi/use_operation_id_as_name.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/with_aliases.py b/tests/data/expected/main/openapi/with_aliases.py index 0f34f5bc2..82892f031 100644 --- a/tests/data/expected/main/openapi/with_aliases.py +++ b/tests/data/expected/main/openapi/with_aliases.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/with_aliases_msgspec.py b/tests/data/expected/main/openapi/with_aliases_msgspec.py index 6f745a4b2..eda1d05b3 100644 --- a/tests/data/expected/main/openapi/with_aliases_msgspec.py +++ b/tests/data/expected/main/openapi/with_aliases_msgspec.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import Annotated, List, TypeAlias, Union +from typing import Annotated, TypeAlias, Union from msgspec import UNSET, Meta, Struct, UnsetType, field @@ -15,7 +15,7 @@ class Pet(Struct): tag: Union[str, UnsetType] = UNSET -Pets: TypeAlias = List[Pet] +Pets: TypeAlias = list[Pet] class User(Struct): @@ -24,13 +24,13 @@ class User(Struct): tag: Union[str, UnsetType] = UNSET -Users: TypeAlias = List[User] +Users: TypeAlias = list[User] Id: TypeAlias = str -Rules: TypeAlias = List[str] +Rules: TypeAlias = list[str] class Error(Struct): @@ -57,7 +57,7 @@ class Api(Struct): ] = UNSET -Apis: TypeAlias = List[Api] +Apis: TypeAlias = list[Api] class Event(Struct): diff --git a/tests/data/expected/main/openapi/with_field_constraints.py b/tests/data/expected/main/openapi/with_field_constraints.py index d0439165d..53ef55b69 100644 --- a/tests/data/expected/main/openapi/with_field_constraints.py +++ b/tests/data/expected/main/openapi/with_field_constraints.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: list[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -36,8 +36,8 @@ class User(BaseModel): name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[FaxItem]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[FaxItem]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) @@ -45,7 +45,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -53,7 +53,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -77,7 +77,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2.py b/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2.py index 6e08f3af8..7f921b9ad 100644 --- a/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2.py +++ b/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field, RootModel @@ -15,8 +15,8 @@ class Pet(BaseModel): tag: Optional[str] = Field(None, max_length=64) -class Pets(RootModel[List[Pet]]): - root: List[Pet] = Field(..., max_length=10, min_length=1) +class Pets(RootModel[list[Pet]]): + root: list[Pet] = Field(..., max_length=10, min_length=1) class UID(RootModel[int]): @@ -36,24 +36,24 @@ class User(BaseModel): name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_length=10) - fax: Optional[List[FaxItem]] = None + phones: Optional[list[Phone]] = Field(None, max_length=10) + fax: Optional[list[FaxItem]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) rating: Optional[float] = Field(None, gt=0.0, le=5.0) -class Users(RootModel[List[User]]): - root: List[User] +class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str -class Rules(RootModel[List[str]]): - root: List[str] +class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -76,8 +76,8 @@ class Api(BaseModel): ) -class Apis(RootModel[List[Api]]): - root: List[Api] +class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types.py b/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types.py index dd4b58c22..6984d87e6 100644 --- a/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types.py +++ b/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types.py @@ -4,7 +4,8 @@ from __future__ import annotations -from typing import Optional, Sequence, Union +from collections.abc import Sequence +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field, RootModel diff --git a/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types_set.py b/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types_set.py index 1daac769a..762098665 100644 --- a/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types_set.py +++ b/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types_set.py @@ -4,7 +4,8 @@ from __future__ import annotations -from typing import FrozenSet, Optional, Sequence, Union +from collections.abc import Sequence, Set +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field, RootModel diff --git a/tests/data/expected/main/openapi/with_field_constraints_use_unique_items_as_set.py b/tests/data/expected/main/openapi/with_field_constraints_use_unique_items_as_set.py index 30a4c78a7..cade15495 100644 --- a/tests/data/expected/main/openapi/with_field_constraints_use_unique_items_as_set.py +++ b/tests/data/expected/main/openapi/with_field_constraints_use_unique_items_as_set.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Set, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: Set[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: set[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -36,8 +36,8 @@ class User(BaseModel): name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[FaxItem]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[FaxItem]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) @@ -45,7 +45,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -53,7 +53,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -77,7 +77,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/with_snake_case_field.py b/tests/data/expected/main/openapi/with_snake_case_field.py index 38e7f1662..d66ea48a1 100644 --- a/tests/data/expected/main/openapi/with_snake_case_field.py +++ b/tests/data/expected/main/openapi/with_snake_case_field.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -62,7 +62,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/with_strip_default_none.py b/tests/data/expected/main/openapi/with_strip_default_none.py index 7c706678a..e43fb423a 100644 --- a/tests/data/expected/main/openapi/with_strip_default_none.py +++ b/tests/data/expected/main/openapi/with_strip_default_none.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/without_field_constraints.py b/tests/data/expected/main/openapi/without_field_constraints.py index d68236df5..c03cf50b8 100644 --- a/tests/data/expected/main/openapi/without_field_constraints.py +++ b/tests/data/expected/main/openapi/without_field_constraints.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field, confloat, conint, constr @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: list[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -32,8 +32,8 @@ class User(BaseModel): name: constr(max_length=256) tag: Optional[constr(max_length=64)] = None uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[constr(min_length=3)]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[constr(min_length=3)]] = None height: Optional[Union[conint(ge=1, le=300), confloat(ge=1.0, le=300.0)]] = None weight: Optional[Union[confloat(ge=1.0, le=1000.0), conint(ge=1, le=1000)]] = None age: Optional[conint(le=200, gt=0)] = None @@ -41,7 +41,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -49,7 +49,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -73,7 +73,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/without_field_constraints_pydantic_v2.py b/tests/data/expected/main/openapi/without_field_constraints_pydantic_v2.py index b0c22a1b3..56628e663 100644 --- a/tests/data/expected/main/openapi/without_field_constraints_pydantic_v2.py +++ b/tests/data/expected/main/openapi/without_field_constraints_pydantic_v2.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field, RootModel, confloat, conint, constr @@ -15,8 +15,8 @@ class Pet(BaseModel): tag: Optional[constr(max_length=64)] = None -class Pets(RootModel[List[Pet]]): - root: List[Pet] = Field(..., max_length=10, min_length=1) +class Pets(RootModel[list[Pet]]): + root: list[Pet] = Field(..., max_length=10, min_length=1) class UID(RootModel[conint(ge=0)]): @@ -32,24 +32,24 @@ class User(BaseModel): name: constr(max_length=256) tag: Optional[constr(max_length=64)] = None uid: UID - phones: Optional[List[Phone]] = Field(None, max_length=10) - fax: Optional[List[constr(min_length=3)]] = None + phones: Optional[list[Phone]] = Field(None, max_length=10) + fax: Optional[list[constr(min_length=3)]] = None height: Optional[Union[conint(ge=1, le=300), confloat(ge=1.0, le=300.0)]] = None weight: Optional[Union[confloat(ge=1.0, le=1000.0), conint(ge=1, le=1000)]] = None age: Optional[conint(le=200, gt=0)] = None rating: Optional[confloat(le=5.0, gt=0.0)] = None -class Users(RootModel[List[User]]): - root: List[User] +class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str -class Rules(RootModel[List[str]]): - root: List[str] +class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -72,8 +72,8 @@ class Api(BaseModel): ) -class Apis(RootModel[List[Api]]): - root: List[Api] +class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main_kr/main/output.py b/tests/data/expected/main_kr/main/output.py index 6e24ae1de..b753b36f2 100644 --- a/tests/data/expected/main_kr/main/output.py +++ b/tests/data/expected/main_kr/main/output.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main_kr/main_base_class/output.py b/tests/data/expected/main_kr/main_base_class/output.py index 485d838d9..675a11aa8 100644 --- a/tests/data/expected/main_kr/main_base_class/output.py +++ b/tests/data/expected/main_kr/main_base_class/output.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, Field @@ -18,7 +18,7 @@ class Pet(Base): class Pets(Base): - __root__: List[Pet] + __root__: list[Pet] class User(Base): @@ -28,7 +28,7 @@ class User(Base): class Users(Base): - __root__: List[User] + __root__: list[User] class Id(Base): @@ -36,7 +36,7 @@ class Id(Base): class Rules(Base): - __root__: List[str] + __root__: list[str] class Error(Base): @@ -60,7 +60,7 @@ class Api(Base): class Apis(Base): - __root__: List[Api] + __root__: list[Api] class Event(Base): diff --git a/tests/data/expected/main_kr/main_custom_template_dir/output.py b/tests/data/expected/main_kr/main_custom_template_dir/output.py index 535dd20a3..4f8ae1cb7 100644 --- a/tests/data/expected/main_kr/main_custom_template_dir/output.py +++ b/tests/data/expected/main_kr/main_custom_template_dir/output.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): # 1 2, 1 2, this is just a pet class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -50,7 +50,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main_kr/main_modular/_internal.py b/tests/data/expected/main_kr/main_modular/_internal.py index 7ded30551..76b39b1b2 100644 --- a/tests/data/expected/main_kr/main_modular/_internal.py +++ b/tests/data/expected/main_kr/main_modular/_internal.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import BaseModel @@ -50,18 +50,18 @@ class Tea_1(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None -class ListModel(BaseModel): - __root__: List[Tea_1] +class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() diff --git a/tests/data/expected/main_kr/main_modular/collections.py b/tests/data/expected/main_kr/main_modular/collections.py index e543cec54..da99bbf1b 100644 --- a/tests/data/expected/main_kr/main_modular/collections.py +++ b/tests/data/expected/main_kr/main_modular/collections.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -13,15 +13,15 @@ class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -48,4 +48,4 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] diff --git a/tests/data/expected/main_kr/main_modular/foo/bar.py b/tests/data/expected/main_kr/main_modular/foo/bar.py index 9e9572a82..cf51a68fb 100644 --- a/tests/data/expected/main_kr/main_modular/foo/bar.py +++ b/tests/data/expected/main_kr/main_modular/foo/bar.py @@ -4,17 +4,17 @@ from __future__ import annotations -from typing import Any, Dict, List, Optional +from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): diff --git a/tests/data/expected/main_kr/main_modular/models.py b/tests/data/expected/main_kr/main_modular/models.py index 40d4b7546..2c32d9762 100644 --- a/tests/data/expected/main_kr/main_modular/models.py +++ b/tests/data/expected/main_kr/main_modular/models.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union from pydantic import BaseModel @@ -30,4 +30,4 @@ class User(BaseModel): class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None diff --git a/tests/data/expected/main_kr/main_modular/nested/foo.py b/tests/data/expected/main_kr/main_modular/nested/foo.py index 75be2c17f..3bc76e6d5 100644 --- a/tests/data/expected/main_kr/main_modular/nested/foo.py +++ b/tests/data/expected/main_kr/main_modular/nested/foo.py @@ -2,8 +2,8 @@ # filename: modular.yaml # timestamp: 1985-10-26T08:21:00+00:00 -from .._internal import ListModel +from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone -__all__ = ["ListModel", "Tea", "TeaClone"] +__all__ = ["List", "Tea", "TeaClone"] diff --git a/tests/data/expected/main_kr/main_no_file/output.py b/tests/data/expected/main_kr/main_no_file/output.py index e1dfde123..b0ec865fc 100644 --- a/tests/data/expected/main_kr/main_no_file/output.py +++ b/tests/data/expected/main_kr/main_no_file/output.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main_kr/main_use_field_description/output.py b/tests/data/expected/main_kr/main_use_field_description/output.py index 7413c4c5a..494023efd 100644 --- a/tests/data/expected/main_kr/main_use_field_description/output.py +++ b/tests/data/expected/main_kr/main_use_field_description/output.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -63,7 +63,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main_kr/main_use_inline_field_description/output.py b/tests/data/expected/main_kr/main_use_inline_field_description/output.py index c6c0da06d..ce9ad43c7 100644 --- a/tests/data/expected/main_kr/main_use_inline_field_description/output.py +++ b/tests/data/expected/main_kr/main_use_inline_field_description/output.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -69,7 +69,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main_kr/main_use_schema_description/output.py b/tests/data/expected/main_kr/main_use_schema_description/output.py index ac66eb3a0..6ff22dc54 100644 --- a/tests/data/expected/main_kr/main_use_schema_description/output.py +++ b/tests/data/expected/main_kr/main_use_schema_description/output.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -64,7 +64,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main_kr/pyproject/output.strictstr.py b/tests/data/expected/main_kr/pyproject/output.strictstr.py index 8ddb3f3e4..58c406059 100644 --- a/tests/data/expected/main_kr/pyproject/output.strictstr.py +++ b/tests/data/expected/main_kr/pyproject/output.strictstr.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field, StrictStr @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[StrictStr] + __root__: list[StrictStr] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main_kr/target_python_version/output.py b/tests/data/expected/main_kr/target_python_version/output.py index 6e24ae1de..b753b36f2 100644 --- a/tests/data/expected/main_kr/target_python_version/output.py +++ b/tests/data/expected/main_kr/target_python_version/output.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Optional +from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -16,7 +16,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -26,7 +26,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -34,7 +34,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -58,7 +58,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/parser/graphql/field-default-enum.py b/tests/data/expected/parser/graphql/field-default-enum.py index 035b24a71..ea481cc8f 100644 --- a/tests/data/expected/parser/graphql/field-default-enum.py +++ b/tests/data/expected/parser/graphql/field-default-enum.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Literal, Optional, TypeAlias +from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Field @@ -28,6 +28,6 @@ class Color(Enum): class Car(BaseModel): - colorList: Optional[List[Color]] = [Color.RED] + colorList: Optional[list[Color]] = [Color.RED] colorOne: Optional[Color] = Color.GREEN typename__: Optional[Literal['Car']] = Field('Car', alias='__typename') From c4da8832edeee6b2af053f5c87879a54af343e52 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 19 Dec 2025 17:08:12 +0000 Subject: [PATCH 2/4] docs: update CLI reference documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated by GitHub Actions --- docs/cli-reference/field-customization.md | 176 +++---- docs/cli-reference/general-options.md | 68 +-- docs/cli-reference/index.md | 2 +- docs/cli-reference/model-customization.md | 464 +++++++++--------- docs/cli-reference/openapi-only-options.md | 30 +- docs/cli-reference/quick-reference.md | 4 +- docs/cli-reference/template-customization.md | 82 ++-- docs/cli-reference/typing-customization.md | 489 ++++++++++--------- 8 files changed, 657 insertions(+), 658 deletions(-) diff --git a/docs/cli-reference/field-customization.md b/docs/cli-reference/field-customization.md index b728c9820..0845cd2a6 100644 --- a/docs/cli-reference/field-customization.md +++ b/docs/cli-reference/field-customization.md @@ -243,7 +243,7 @@ providing fine-grained control over generated names independent of schema defini from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -255,7 +255,7 @@ providing fine-grained control over generated names independent of schema defini class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -265,7 +265,7 @@ providing fine-grained control over generated names independent of schema defini class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -273,7 +273,7 @@ providing fine-grained control over generated names independent of schema defini class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -297,7 +297,7 @@ providing fine-grained control over generated names independent of schema defini class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -317,7 +317,7 @@ providing fine-grained control over generated names independent of schema defini from __future__ import annotations - from typing import Annotated, List, TypeAlias, Union + from typing import Annotated, TypeAlias, Union from msgspec import UNSET, Meta, Struct, UnsetType, field @@ -328,7 +328,7 @@ providing fine-grained control over generated names independent of schema defini tag: Union[str, UnsetType] = UNSET - Pets: TypeAlias = List[Pet] + Pets: TypeAlias = list[Pet] class User(Struct): @@ -337,13 +337,13 @@ providing fine-grained control over generated names independent of schema defini tag: Union[str, UnsetType] = UNSET - Users: TypeAlias = List[User] + Users: TypeAlias = list[User] Id: TypeAlias = str - Rules: TypeAlias = List[str] + Rules: TypeAlias = list[str] class Error(Struct): @@ -370,7 +370,7 @@ providing fine-grained control over generated names independent of schema defini ] = UNSET - Apis: TypeAlias = List[Api] + Apis: TypeAlias = list[Api] class Event(Struct): @@ -802,7 +802,7 @@ store fields not defined in the schema. Options: allow, ignore, forbid. from __future__ import annotations - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Extra, Field @@ -834,23 +834,23 @@ store fields not defined in the schema. Options: allow, ignore, forbid. class Config: extra = Extra.allow - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] producer: Optional[String] = None release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Film']] = Field('Film', alias='__typename') @@ -860,8 +860,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. birth_year: Optional[String] = None eye_color: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gender: Optional[String] = None hair_color: Optional[String] = None height: Optional[Int] = None @@ -871,12 +871,12 @@ store fields not defined in the schema. Options: allow, ignore, forbid. mass: Optional[Int] = None name: String skin_color: Optional[String] = None - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Person']] = Field('Person', alias='__typename') @@ -886,15 +886,15 @@ store fields not defined in the schema. Options: allow, ignore, forbid. climate: Optional[String] = None diameter: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gravity: Optional[String] = None id: ID name: String orbital_period: Optional[String] = None population: Optional[String] = None - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] rotation_period: Optional[String] = None surface_water: Optional[String] = None terrain: Optional[String] = None @@ -910,14 +910,14 @@ store fields not defined in the schema. Options: allow, ignore, forbid. classification: Optional[String] = None designation: Optional[String] = None eye_colors: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hair_colors: Optional[String] = None id: ID language: Optional[String] = None name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] skin_colors: Optional[String] = None typename__: Optional[Literal['Species']] = Field('Species', alias='__typename') @@ -931,8 +931,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hyperdrive_rating: Optional[String] = None id: ID length: Optional[String] = None @@ -941,8 +941,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] starship_class: Optional[String] = None typename__: Optional[Literal['Starship']] = Field('Starship', alias='__typename') @@ -955,8 +955,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID length: Optional[String] = None manufacturer: Optional[String] = None @@ -964,8 +964,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] vehicle_class: Optional[String] = None typename__: Optional[Literal['Vehicle']] = Field('Vehicle', alias='__typename') @@ -1245,7 +1245,7 @@ Output differs between Pydantic v1 and v2 due to API changes. from __future__ import annotations - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -1257,7 +1257,7 @@ Output differs between Pydantic v1 and v2 due to API changes. class Pets(BaseModel): - __root__: List[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: list[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -1277,8 +1277,8 @@ Output differs between Pydantic v1 and v2 due to API changes. name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[FaxItem]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[FaxItem]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) @@ -1286,7 +1286,7 @@ Output differs between Pydantic v1 and v2 due to API changes. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1294,7 +1294,7 @@ Output differs between Pydantic v1 and v2 due to API changes. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1318,7 +1318,7 @@ Output differs between Pydantic v1 and v2 due to API changes. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1338,7 +1338,7 @@ Output differs between Pydantic v1 and v2 due to API changes. from __future__ import annotations - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field, RootModel @@ -1349,8 +1349,8 @@ Output differs between Pydantic v1 and v2 due to API changes. tag: Optional[str] = Field(None, max_length=64) - class Pets(RootModel[List[Pet]]): - root: List[Pet] = Field(..., max_length=10, min_length=1) + class Pets(RootModel[list[Pet]]): + root: list[Pet] = Field(..., max_length=10, min_length=1) class UID(RootModel[int]): @@ -1370,24 +1370,24 @@ Output differs between Pydantic v1 and v2 due to API changes. name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_length=10) - fax: Optional[List[FaxItem]] = None + phones: Optional[list[Phone]] = Field(None, max_length=10) + fax: Optional[list[FaxItem]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) rating: Optional[float] = Field(None, gt=0.0, le=5.0) - class Users(RootModel[List[User]]): - root: List[User] + class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str - class Rules(RootModel[List[str]]): - root: List[str] + class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -1410,8 +1410,8 @@ Output differs between Pydantic v1 and v2 due to API changes. ) - class Apis(RootModel[List[Api]]): - root: List[Api] + class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): @@ -1817,7 +1817,7 @@ The `--field-include-all-keys` flag configures the code generation behavior. from __future__ import annotations - from typing import Any, List, Optional + from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -1828,7 +1828,7 @@ The `--field-include-all-keys` flag configures the code generation behavior. age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None ``` @@ -2133,7 +2133,7 @@ The `--set-default-enum-member` flag configures the code generation behavior. from __future__ import annotations from enum import Enum - from typing import List, Optional + from typing import Optional from pydantic import BaseModel, Field @@ -2153,11 +2153,11 @@ The `--set-default-enum-member` flag configures the code generation behavior. name: Optional[str] = None animal: Optional[Animal] = Animal.dog pet: Optional[Animal] = Animal.cat - redistribute: Optional[List[RedistributeEnum]] = None + redistribute: Optional[list[RedistributeEnum]] = None class Redistribute(BaseModel): - __root__: List[RedistributeEnum] = Field( + __root__: list[RedistributeEnum] = Field( ..., description='Redistribute type for routes.' ) ``` @@ -2680,7 +2680,7 @@ generated models, preserving documentation from the original schema. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel @@ -2692,7 +2692,7 @@ generated models, preserving documentation from the original schema. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -2702,7 +2702,7 @@ generated models, preserving documentation from the original schema. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -2710,7 +2710,7 @@ generated models, preserving documentation from the original schema. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -2739,7 +2739,7 @@ generated models, preserving documentation from the original schema. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2801,7 +2801,7 @@ generated models, preserving documentation from the original schema. from __future__ import annotations - from typing import Annotated, Any, List, Optional, TypeAlias, Union + from typing import Annotated, Any, Optional, TypeAlias, Union from pydantic import BaseModel, Field @@ -2814,7 +2814,7 @@ generated models, preserving documentation from the original schema. UnionType: TypeAlias = Union[str, int] - ArrayType: TypeAlias = List[str] + ArrayType: TypeAlias = list[str] AnnotatedType: TypeAlias = Annotated[ @@ -3047,7 +3047,7 @@ documentation without using Field() wrappers. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -3059,7 +3059,7 @@ documentation without using Field() wrappers. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -3069,7 +3069,7 @@ documentation without using Field() wrappers. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -3077,7 +3077,7 @@ documentation without using Field() wrappers. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -3112,7 +3112,7 @@ documentation without using Field() wrappers. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -3338,7 +3338,7 @@ useful for preserving documentation from your schema in the generated code. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -3350,7 +3350,7 @@ useful for preserving documentation from your schema in the generated code. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -3360,7 +3360,7 @@ useful for preserving documentation from your schema in the generated code. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -3368,7 +3368,7 @@ useful for preserving documentation from your schema in the generated code. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -3398,7 +3398,7 @@ useful for preserving documentation from your schema in the generated code. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -3541,7 +3541,7 @@ This is useful when schemas have descriptive titles that should be preserved. from __future__ import annotations from enum import Enum - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import BaseModel, Field @@ -3566,7 +3566,7 @@ This is useful when schemas have descriptive titles that should be preserved. class ProcessingTasksTitle(BaseModel): - __root__: List[ProcessingTaskTitle] = Field(..., title='Processing Tasks Title') + __root__: list[ProcessingTaskTitle] = Field(..., title='Processing Tasks Title') class ExtendedProcessingTask(BaseModel): @@ -3576,7 +3576,7 @@ This is useful when schemas have descriptive titles that should be preserved. class ExtendedProcessingTasksTitle(BaseModel): - __root__: List[ExtendedProcessingTask] = Field( + __root__: list[ExtendedProcessingTask] = Field( ..., title='Extended Processing Tasks Title' ) diff --git a/docs/cli-reference/general-options.md b/docs/cli-reference/general-options.md index 4695dc0c6..c0f88ef68 100644 --- a/docs/cli-reference/general-options.md +++ b/docs/cli-reference/general-options.md @@ -353,7 +353,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import BaseModel @@ -399,18 +399,18 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None - class ListModel(BaseModel): - __root__: List[Tea_1] + class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() @@ -434,7 +434,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. from __future__ import annotations from enum import Enum - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -442,15 +442,15 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -477,7 +477,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] # foo/__init__.py # generated by datamodel-codegen: @@ -493,17 +493,17 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. from __future__ import annotations - from typing import Any, Dict, List, Optional + from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): @@ -520,7 +520,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. from __future__ import annotations from enum import Enum - from typing import Any, Dict, List, Optional, Union + from typing import Any, Optional, Union from pydantic import BaseModel @@ -545,7 +545,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None # nested/__init__.py # generated by datamodel-codegen: @@ -555,11 +555,11 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. # generated by datamodel-codegen: # filename: modular.yaml - from .._internal import ListModel + from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone - __all__ = ["ListModel", "Tea", "TeaClone"] + __all__ = ["List", "Tea", "TeaClone"] # woo/__init__.py # generated by datamodel-codegen: @@ -927,7 +927,7 @@ Use 'recursive' to include all descendant exports with collision handling. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import BaseModel @@ -973,18 +973,18 @@ Use 'recursive' to include all descendant exports with collision handling. flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None - class ListModel(BaseModel): - __root__: List[Tea_1] + class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() @@ -1008,7 +1008,7 @@ Use 'recursive' to include all descendant exports with collision handling. from __future__ import annotations from enum import Enum - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1016,15 +1016,15 @@ Use 'recursive' to include all descendant exports with collision handling. class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -1051,7 +1051,7 @@ Use 'recursive' to include all descendant exports with collision handling. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] # foo/__init__.py # generated by datamodel-codegen: @@ -1067,17 +1067,17 @@ Use 'recursive' to include all descendant exports with collision handling. from __future__ import annotations - from typing import Any, Dict, List, Optional + from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): @@ -1094,7 +1094,7 @@ Use 'recursive' to include all descendant exports with collision handling. from __future__ import annotations from enum import Enum - from typing import Any, Dict, List, Optional, Union + from typing import Any, Optional, Union from pydantic import BaseModel @@ -1119,7 +1119,7 @@ Use 'recursive' to include all descendant exports with collision handling. class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None # nested/__init__.py # generated by datamodel-codegen: @@ -1129,11 +1129,11 @@ Use 'recursive' to include all descendant exports with collision handling. # generated by datamodel-codegen: # filename: modular.yaml - from .._internal import ListModel + from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone - __all__ = ["ListModel", "Tea", "TeaClone"] + __all__ = ["List", "Tea", "TeaClone"] # woo/__init__.py # generated by datamodel-codegen: diff --git a/docs/cli-reference/index.md b/docs/cli-reference/index.md index cfa85043f..48f82fe43 100644 --- a/docs/cli-reference/index.md +++ b/docs/cli-reference/index.md @@ -112,6 +112,7 @@ This documentation is auto-generated from test cases. - [`--no-alias`](field-customization.md#no-alias) - [`--no-color`](utility-options.md#no-color) - [`--no-use-specialized-enum`](typing-customization.md#no-use-specialized-enum) +- [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) ### O {#o} @@ -172,7 +173,6 @@ This documentation is auto-generated from test cases. - [`--use-pendulum`](typing-customization.md#use-pendulum) - [`--use-schema-description`](field-customization.md#use-schema-description) - [`--use-serialize-as-any`](model-customization.md#use-serialize-as-any) -- [`--use-standard-collections`](typing-customization.md#use-standard-collections) - [`--use-status-code-in-response-name`](openapi-only-options.md#use-status-code-in-response-name) - [`--use-subclass-enum`](model-customization.md#use-subclass-enum) - [`--use-title-as-name`](field-customization.md#use-title-as-name) diff --git a/docs/cli-reference/model-customization.md b/docs/cli-reference/model-customization.md index 7deb2e1a7..85111b00c 100644 --- a/docs/cli-reference/model-customization.md +++ b/docs/cli-reference/model-customization.md @@ -244,7 +244,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Extra, Field @@ -262,7 +262,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. class Config: extra = Extra.allow - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -278,7 +278,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. class Config: extra = Extra.allow - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -292,7 +292,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. class Config: extra = Extra.allow - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -325,7 +325,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. class Config: extra = Extra.allow - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -351,7 +351,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -365,8 +365,8 @@ The `--allow-extra-fields` flag configures the code generation behavior. tag: Optional[str] = None - class Pets(RootModel[List[Pet]]): - root: List[Pet] + class Pets(RootModel[list[Pet]]): + root: list[Pet] class User(BaseModel): @@ -378,16 +378,16 @@ The `--allow-extra-fields` flag configures the code generation behavior. tag: Optional[str] = None - class Users(RootModel[List[User]]): - root: List[User] + class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str - class Rules(RootModel[List[str]]): - root: List[str] + class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -416,8 +416,8 @@ The `--allow-extra-fields` flag configures the code generation behavior. ) - class Apis(RootModel[List[Api]]): - root: List[Api] + class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): @@ -647,7 +647,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -665,7 +665,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav class Config: allow_population_by_field_name = True - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -681,7 +681,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav class Config: allow_population_by_field_name = True - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -695,7 +695,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav class Config: allow_population_by_field_name = True - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -728,7 +728,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav class Config: allow_population_by_field_name = True - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -754,7 +754,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -768,11 +768,11 @@ The `--allow-population-by-field-name` flag configures the code generation behav tag: Optional[str] = None - class Pets(RootModel[List[Pet]]): + class Pets(RootModel[list[Pet]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[Pet] + root: list[Pet] class User(BaseModel): @@ -784,11 +784,11 @@ The `--allow-population-by-field-name` flag configures the code generation behav tag: Optional[str] = None - class Users(RootModel[List[User]]): + class Users(RootModel[list[User]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[User] + root: list[User] class Id(RootModel[str]): @@ -798,11 +798,11 @@ The `--allow-population-by-field-name` flag configures the code generation behav root: str - class Rules(RootModel[List[str]]): + class Rules(RootModel[list[str]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[str] + root: list[str] class Error(BaseModel): @@ -831,11 +831,11 @@ The `--allow-population-by-field-name` flag configures the code generation behav ) - class Apis(RootModel[List[Api]]): + class Apis(RootModel[list[Api]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[Api] + root: list[Api] class Event(BaseModel): @@ -1063,7 +1063,7 @@ The `--base-class` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, Field @@ -1077,7 +1077,7 @@ The `--base-class` flag configures the code generation behavior. class Pets(Base): - __root__: List[Pet] + __root__: list[Pet] class User(Base): @@ -1087,7 +1087,7 @@ The `--base-class` flag configures the code generation behavior. class Users(Base): - __root__: List[User] + __root__: list[User] class Id(Base): @@ -1095,7 +1095,7 @@ The `--base-class` flag configures the code generation behavior. class Rules(Base): - __root__: List[str] + __root__: list[str] class Error(Base): @@ -1119,7 +1119,7 @@ The `--base-class` flag configures the code generation behavior. class Apis(Base): - __root__: List[Api] + __root__: list[Api] class Event(Base): @@ -1191,7 +1191,7 @@ naming convention than what's in the schema. from __future__ import annotations - from typing import Any, List, Optional + from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -1202,7 +1202,7 @@ naming convention than what's in the schema. age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None ``` @@ -1584,7 +1584,7 @@ control over dataclass generation. from __future__ import annotations from dataclasses import dataclass - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias Boolean: TypeAlias = bool """ @@ -1612,38 +1612,38 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Film: - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] producer: Optional[String] = None typename__: Optional[Literal['Film']] = 'Film' @dataclass(order=True, slots=True) class Person: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] birth_year: Optional[String] = None eye_color: Optional[String] = None gender: Optional[String] = None @@ -1658,12 +1658,12 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Planet: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] climate: Optional[String] = None diameter: Optional[String] = None gravity: Optional[String] = None @@ -1677,12 +1677,12 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Species: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] average_height: Optional[String] = None average_lifespan: Optional[String] = None classification: Optional[String] = None @@ -1696,12 +1696,12 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Starship: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] MGLT: Optional[String] = None cargo_capacity: Optional[String] = None consumables: Optional[String] = None @@ -1719,12 +1719,12 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Vehicle: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] cargo_capacity: Optional[String] = None consumables: Optional[String] = None cost_in_credits: Optional[String] = None @@ -1951,7 +1951,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1969,7 +1969,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. class Config: allow_mutation = False - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -1985,7 +1985,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. class Config: allow_mutation = False - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1999,7 +1999,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. class Config: allow_mutation = False - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -2032,7 +2032,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. class Config: allow_mutation = False - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2058,7 +2058,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -2072,11 +2072,11 @@ The `--enable-faux-immutability` flag configures the code generation behavior. tag: Optional[str] = None - class Pets(RootModel[List[Pet]]): + class Pets(RootModel[list[Pet]]): model_config = ConfigDict( frozen=True, ) - root: List[Pet] + root: list[Pet] class User(BaseModel): @@ -2088,11 +2088,11 @@ The `--enable-faux-immutability` flag configures the code generation behavior. tag: Optional[str] = None - class Users(RootModel[List[User]]): + class Users(RootModel[list[User]]): model_config = ConfigDict( frozen=True, ) - root: List[User] + root: list[User] class Id(RootModel[str]): @@ -2102,11 +2102,11 @@ The `--enable-faux-immutability` flag configures the code generation behavior. root: str - class Rules(RootModel[List[str]]): + class Rules(RootModel[list[str]]): model_config = ConfigDict( frozen=True, ) - root: List[str] + root: list[str] class Error(BaseModel): @@ -2135,11 +2135,11 @@ The `--enable-faux-immutability` flag configures the code generation behavior. ) - class Apis(RootModel[List[Api]]): + class Apis(RootModel[list[Api]]): model_config = ConfigDict( frozen=True, ) - root: List[Api] + root: list[Api] class Event(BaseModel): @@ -2367,7 +2367,7 @@ The `--force-optional` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -2379,7 +2379,7 @@ The `--force-optional` flag configures the code generation behavior. class Pets(BaseModel): - __root__: Optional[List[Pet]] = None + __root__: Optional[list[Pet]] = None class User(BaseModel): @@ -2389,7 +2389,7 @@ The `--force-optional` flag configures the code generation behavior. class Users(BaseModel): - __root__: Optional[List[User]] = None + __root__: Optional[list[User]] = None class Id(BaseModel): @@ -2397,7 +2397,7 @@ The `--force-optional` flag configures the code generation behavior. class Rules(BaseModel): - __root__: Optional[List[str]] = None + __root__: Optional[list[str]] = None class Error(BaseModel): @@ -2421,7 +2421,7 @@ The `--force-optional` flag configures the code generation behavior. class Apis(BaseModel): - __root__: Optional[List[Api]] = None + __root__: Optional[list[Api]] = None class Event(BaseModel): @@ -2635,7 +2635,7 @@ of model definitions matters for documentation or readability. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import BaseModel, Field @@ -2646,7 +2646,7 @@ of model definitions matters for documentation or readability. class DogRelationships(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') + people: Optional[list[Person]] = Field(None, title='People') class Dog(DogBase, DogRelationships): @@ -2658,7 +2658,7 @@ of model definitions matters for documentation or readability. class PersonRelationships(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') + people: Optional[list[Person]] = Field(None, title='People') class Person(PersonBase, PersonRelationships): @@ -2666,8 +2666,8 @@ of model definitions matters for documentation or readability. class PersonsBestFriend(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') - dogs: Optional[List[Dog]] = Field(None, title='Dogs') + people: Optional[list[Person]] = Field(None, title='People') + dogs: Optional[list[Dog]] = Field(None, title='Dogs') dog_base: Optional[DogBase] = None dog_relationships: Optional[DogRelationships] = None person_base: Optional[PersonBase] = None @@ -2750,7 +2750,7 @@ argument errors. from __future__ import annotations from dataclasses import dataclass - from typing import Any, List, Optional + from typing import Any, Optional @dataclass(frozen=True, kw_only=True) @@ -2758,7 +2758,7 @@ argument errors. firstName: Optional[str] = None lastName: Optional[str] = None age: Optional[int] = None - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None ``` @@ -2921,7 +2921,7 @@ argument errors. from __future__ import annotations from dataclasses import dataclass - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias Boolean: TypeAlias = bool """ @@ -2949,38 +2949,38 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Film: - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] producer: Optional[String] = None typename__: Optional[Literal['Film']] = 'Film' @dataclass(frozen=True, kw_only=True) class Person: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] birth_year: Optional[String] = None eye_color: Optional[String] = None gender: Optional[String] = None @@ -2995,12 +2995,12 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Planet: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] climate: Optional[String] = None diameter: Optional[String] = None gravity: Optional[String] = None @@ -3014,12 +3014,12 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Species: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] average_height: Optional[String] = None average_lifespan: Optional[String] = None classification: Optional[String] = None @@ -3033,12 +3033,12 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Starship: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] MGLT: Optional[String] = None cargo_capacity: Optional[String] = None consumables: Optional[String] = None @@ -3056,12 +3056,12 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Vehicle: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] cargo_capacity: Optional[String] = None consumables: Optional[String] = None cost_in_credits: Optional[String] = None @@ -3142,17 +3142,17 @@ for the generated code. Supported values include `pydantic.BaseModel`, from __future__ import annotations - from typing import Any, List, Optional + from typing import Any, Optional from pydantic import BaseModel class MyObjItem(BaseModel): - items: Optional[List[Any]] + items: Optional[list[Any]] class Model(BaseModel): - my_obj: List[MyObjItem] + my_obj: list[MyObjItem] ``` === "Pydantic v2" @@ -3164,17 +3164,17 @@ for the generated code. Supported values include `pydantic.BaseModel`, from __future__ import annotations - from typing import Any, List, Optional + from typing import Any, Optional from pydantic import BaseModel class MyObjItem(BaseModel): - items: Optional[List[Any]] = None + items: Optional[list[Any]] = None class Model(BaseModel): - my_obj: List[MyObjItem] + my_obj: list[MyObjItem] ``` === "GraphQL" @@ -3337,7 +3337,7 @@ for the generated code. Supported values include `pydantic.BaseModel`, from __future__ import annotations - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Field @@ -3366,31 +3366,31 @@ for the generated code. Supported values include `pydantic.BaseModel`, class Film(BaseModel): - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] producer: Optional[String] = None release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Film']] = Field('Film', alias='__typename') class Person(BaseModel): birth_year: Optional[String] = None eye_color: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gender: Optional[String] = None hair_color: Optional[String] = None height: Optional[Int] = None @@ -3400,27 +3400,27 @@ for the generated code. Supported values include `pydantic.BaseModel`, mass: Optional[Int] = None name: String skin_color: Optional[String] = None - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Person']] = Field('Person', alias='__typename') class Planet(BaseModel): climate: Optional[String] = None diameter: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gravity: Optional[String] = None id: ID name: String orbital_period: Optional[String] = None population: Optional[String] = None - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] rotation_period: Optional[String] = None surface_water: Optional[String] = None terrain: Optional[String] = None @@ -3433,14 +3433,14 @@ for the generated code. Supported values include `pydantic.BaseModel`, classification: Optional[String] = None designation: Optional[String] = None eye_colors: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hair_colors: Optional[String] = None id: ID language: Optional[String] = None name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] skin_colors: Optional[String] = None typename__: Optional[Literal['Species']] = Field('Species', alias='__typename') @@ -3451,8 +3451,8 @@ for the generated code. Supported values include `pydantic.BaseModel`, consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hyperdrive_rating: Optional[String] = None id: ID length: Optional[String] = None @@ -3461,8 +3461,8 @@ for the generated code. Supported values include `pydantic.BaseModel`, model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] starship_class: Optional[String] = None typename__: Optional[Literal['Starship']] = Field('Starship', alias='__typename') @@ -3472,8 +3472,8 @@ for the generated code. Supported values include `pydantic.BaseModel`, consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID length: Optional[String] = None manufacturer: Optional[String] = None @@ -3481,8 +3481,8 @@ for the generated code. Supported values include `pydantic.BaseModel`, model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] vehicle_class: Optional[String] = None typename__: Optional[Literal['Vehicle']] = Field('Vehicle', alias='__typename') @@ -3501,7 +3501,7 @@ for the generated code. Supported values include `pydantic.BaseModel`, from __future__ import annotations from dataclasses import dataclass - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias Boolean: TypeAlias = bool """ @@ -3529,38 +3529,38 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Film: - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] producer: Optional[String] = None typename__: Optional[Literal['Film']] = 'Film' @dataclass class Person: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] birth_year: Optional[String] = None eye_color: Optional[String] = None gender: Optional[String] = None @@ -3575,12 +3575,12 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Planet: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] climate: Optional[String] = None diameter: Optional[String] = None gravity: Optional[String] = None @@ -3594,12 +3594,12 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Species: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] average_height: Optional[String] = None average_lifespan: Optional[String] = None classification: Optional[String] = None @@ -3613,12 +3613,12 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Starship: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] MGLT: Optional[String] = None cargo_capacity: Optional[String] = None consumables: Optional[String] = None @@ -3636,12 +3636,12 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Vehicle: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] cargo_capacity: Optional[String] = None consumables: Optional[String] = None cost_in_credits: Optional[String] = None @@ -3893,7 +3893,7 @@ code duplication in the output. from __future__ import annotations from enum import Enum - from typing import List, Optional + from typing import Optional from pydantic import BaseModel, Field @@ -3913,11 +3913,11 @@ code duplication in the output. name: Optional[str] = None animal: Optional[Animal] = 'dog' pet: Optional[Animal] = 'cat' - redistribute: Optional[List[RedistributeEnum]] = None + redistribute: Optional[list[RedistributeEnum]] = None class Redistribute(BaseModel): - __root__: List[RedistributeEnum] = Field( + __root__: list[RedistributeEnum] = Field( ..., description='Redistribute type for routes.' ) ``` @@ -4256,7 +4256,7 @@ The `--strict-nullable` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -4296,7 +4296,7 @@ The `--strict-nullable` flag configures the code generation behavior. class Apis(BaseModel): - __root__: Optional[List[Api]] = Field(...) + __root__: Optional[list[Api]] = Field(...) class EmailItem(BaseModel): @@ -4307,7 +4307,7 @@ The `--strict-nullable` flag configures the code generation behavior. class Email(BaseModel): - __root__: List[EmailItem] + __root__: list[EmailItem] class Id(BaseModel): @@ -4327,12 +4327,12 @@ The `--strict-nullable` flag configures the code generation behavior. class Notes(BaseModel): - comments: List[str] = Field(default_factory=list) + comments: list[str] = Field(default_factory=list) class Options(BaseModel): - comments: List[Optional[str]] - oneOfComments: List[Union[Optional[str], Optional[float]]] + comments: list[Optional[str]] + oneOfComments: list[Union[Optional[str], Optional[float]]] ``` --- @@ -4548,7 +4548,7 @@ default to None. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -4560,7 +4560,7 @@ default to None. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -4570,7 +4570,7 @@ default to None. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -4578,7 +4578,7 @@ default to None. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -4602,7 +4602,7 @@ default to None. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -4909,7 +4909,7 @@ default values. from __future__ import annotations - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Field @@ -4927,12 +4927,12 @@ default values. class A(BaseModel): field: String - listField: List[String] - listListField: List[List[String]] - listOptionalField: List[Optional[String]] + listField: list[String] + listListField: list[list[String]] + listOptionalField: list[Optional[String]] optionalField: Optional[String] = None - optionalListField: Optional[List[String]] = None - optionalListOptionalField: Optional[List[Optional[String]]] = None + optionalListField: Optional[list[String]] = None + optionalListOptionalField: Optional[list[Optional[String]]] = None typename__: Optional[Literal['A']] = Field(default='A', alias='__typename') ``` @@ -5244,7 +5244,7 @@ The `--use-one-literal-as-default` flag configures the code generation behavior. from __future__ import annotations from enum import Enum - from typing import List, Literal, Optional, Union + from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -5265,7 +5265,7 @@ The `--use-one-literal-as-default` flag configures the code generation behavior. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Kind1(Enum): @@ -5320,7 +5320,7 @@ The `--use-one-literal-as-default` flag configures the code generation behavior. class ArrayEnum(BaseModel): - __root__: List[Union[Literal['cat'], Literal['dog']]] + __root__: list[Union[Literal['cat'], Literal['dog']]] class NestedVersionEnum(Enum): @@ -5444,8 +5444,6 @@ polymorphic types and inheritance hierarchies. from __future__ import annotations - from typing import List - from pydantic import BaseModel, Field, SerializeAsAny @@ -5464,7 +5462,7 @@ polymorphic types and inheritance hierarchies. user_field: SerializeAsAny[User] = Field( ..., description='Field that should use SerializeAsAny' ) - user_list: List[SerializeAsAny[User]] = Field( + user_list: list[SerializeAsAny[User]] = Field( ..., description='List of users that should use SerializeAsAny' ) ``` diff --git a/docs/cli-reference/openapi-only-options.md b/docs/cli-reference/openapi-only-options.md index de3654ab6..ca003c9b6 100644 --- a/docs/cli-reference/openapi-only-options.md +++ b/docs/cli-reference/openapi-only-options.md @@ -507,7 +507,7 @@ The `--openapi-scopes` flag configures the code generation behavior. from __future__ import annotations from datetime import datetime - from typing import List, Optional + from typing import Optional from pydantic import BaseModel @@ -529,11 +529,11 @@ The `--openapi-scopes` flag configures the code generation behavior. class PetsGetResponse(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class FoodFoodIdGetResponse(BaseModel): - __root__: List[int] + __root__: list[int] class UserGetResponse(BaseModel): @@ -555,7 +555,7 @@ The `--openapi-scopes` flag configures the code generation behavior. class UsersGetResponse(BaseModel): - __root__: List[UsersGetResponseItem] + __root__: list[UsersGetResponseItem] class UsersPostRequestItem(BaseModel): @@ -565,7 +565,7 @@ The `--openapi-scopes` flag configures the code generation behavior. class UsersPostRequest(BaseModel): - __root__: List[UsersPostRequestItem] + __root__: list[UsersPostRequestItem] ``` --- @@ -864,7 +864,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -876,7 +876,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -886,7 +886,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -894,7 +894,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -918,7 +918,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1242,7 +1242,7 @@ The `--validation` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1254,7 +1254,7 @@ The `--validation` flag configures the code generation behavior. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -1264,7 +1264,7 @@ The `--validation` flag configures the code generation behavior. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1272,7 +1272,7 @@ The `--validation` flag configures the code generation behavior. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1296,7 +1296,7 @@ The `--validation` flag configures the code generation behavior. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/docs/cli-reference/quick-reference.md b/docs/cli-reference/quick-reference.md index 2aca54ea0..22c9368f0 100644 --- a/docs/cli-reference/quick-reference.md +++ b/docs/cli-reference/quick-reference.md @@ -31,6 +31,7 @@ datamodel-codegen [OPTIONS] | [`--enum-field-as-literal`](typing-customization.md#enum-field-as-literal) | Convert all enum fields to Literal types instead of Enum classes. | | [`--ignore-enum-constraints`](typing-customization.md#ignore-enum-constraints) | Ignore enum constraints and use base string type instead of Enum classes. | | [`--no-use-specialized-enum`](typing-customization.md#no-use-specialized-enum) | Disable specialized Enum classes for Python 3.11+ code generation. | +| [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) | Use built-in dict/list instead of typing.Dict/List. | | [`--output-datetime-class`](typing-customization.md#output-datetime-class) | Specify datetime class type for date-time schema fields. | | [`--strict-types`](typing-customization.md#strict-types) | Enable strict type validation for specified Python types. | | [`--type-mappings`](typing-customization.md#type-mappings) | Override default type mappings for schema formats. | @@ -39,7 +40,6 @@ datamodel-codegen [OPTIONS] | [`--use-generic-container-types`](typing-customization.md#use-generic-container-types) | Use typing.Dict/List instead of dict/list for container types. | | [`--use-non-positive-negative-number-constrained-types`](typing-customization.md#use-non-positive-negative-number-constrained-types) | Use NonPositive/NonNegative types for number constraints. | | [`--use-pendulum`](typing-customization.md#use-pendulum) | Use pendulum types for date/time fields instead of datetime module. | -| [`--use-standard-collections`](typing-customization.md#use-standard-collections) | Use built-in dict/list instead of typing.Dict/List. | | [`--use-type-alias`](typing-customization.md#use-type-alias) | Use TypeAlias instead of root models for type definitions (experimental). | | [`--use-union-operator`](typing-customization.md#use-union-operator) | Test GraphQL annotated types with standard collections and union operator. | | [`--use-unique-items-as-set`](typing-customization.md#use-unique-items-as-set) | Generate set types for arrays with uniqueItems constraint. | @@ -222,6 +222,7 @@ All options sorted alphabetically: - [`--no-alias`](field-customization.md#no-alias) - Disable Field alias generation for non-Python-safe property ... - [`--no-color`](utility-options.md#no-color) - Disable colorized output - [`--no-use-specialized-enum`](typing-customization.md#no-use-specialized-enum) - Disable specialized Enum classes for Python 3.11+ code gener... +- [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) - Use built-in dict/list instead of typing.Dict/List. - [`--openapi-scopes`](openapi-only-options.md#openapi-scopes) - Specify OpenAPI scopes to generate (schemas, paths, paramete... - [`--original-field-name-delimiter`](field-customization.md#original-field-name-delimiter) - Specify delimiter for original field names when using snake-... - [`--output`](base-options.md#output) - Specify the destination path for generated Python code. @@ -264,7 +265,6 @@ All options sorted alphabetically: - [`--use-pendulum`](typing-customization.md#use-pendulum) - Use pendulum types for date/time fields instead of datetime ... - [`--use-schema-description`](field-customization.md#use-schema-description) - Use schema description as class docstring. - [`--use-serialize-as-any`](model-customization.md#use-serialize-as-any) - Wrap fields with subtypes in Pydantic's SerializeAsAny. -- [`--use-standard-collections`](typing-customization.md#use-standard-collections) - Use built-in dict/list instead of typing.Dict/List. - [`--use-status-code-in-response-name`](openapi-only-options.md#use-status-code-in-response-name) - Include HTTP status code in response model names. - [`--use-subclass-enum`](model-customization.md#use-subclass-enum) - Generate typed Enum subclasses for enums with specific field... - [`--use-title-as-name`](field-customization.md#use-title-as-name) - Use schema title as the generated class name. diff --git a/docs/cli-reference/template-customization.md b/docs/cli-reference/template-customization.md index 8814ac2cb..24a3d59e4 100644 --- a/docs/cli-reference/template-customization.md +++ b/docs/cli-reference/template-customization.md @@ -400,7 +400,7 @@ to be inserted at the top of generated Python files. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -412,7 +412,7 @@ to be inserted at the top of generated Python files. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -422,7 +422,7 @@ to be inserted at the top of generated Python files. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -430,7 +430,7 @@ to be inserted at the top of generated Python files. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -454,7 +454,7 @@ to be inserted at the top of generated Python files. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -823,7 +823,7 @@ to the templates. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -835,7 +835,7 @@ to the templates. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -845,7 +845,7 @@ to the templates. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -853,7 +853,7 @@ to the templates. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -869,7 +869,7 @@ to the templates. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1141,7 +1141,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi from __future__ import annotations - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -1153,7 +1153,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi class Pets(BaseModel): - __root__: List[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: list[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -1173,8 +1173,8 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[Fax]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[Fax]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) @@ -1182,7 +1182,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1190,7 +1190,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1214,7 +1214,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1512,7 +1512,7 @@ the file to the header, making it easy to reproduce the generation. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1524,7 +1524,7 @@ the file to the header, making it easy to reproduce the generation. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -1534,7 +1534,7 @@ the file to the header, making it easy to reproduce the generation. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1542,7 +1542,7 @@ the file to the header, making it easy to reproduce the generation. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1566,7 +1566,7 @@ the file to the header, making it easy to reproduce the generation. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1789,7 +1789,7 @@ The `--enable-version-header` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1801,7 +1801,7 @@ The `--enable-version-header` flag configures the code generation behavior. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -1811,7 +1811,7 @@ The `--enable-version-header` flag configures the code generation behavior. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1819,7 +1819,7 @@ The `--enable-version-header` flag configures the code generation behavior. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1843,7 +1843,7 @@ The `--enable-version-header` flag configures the code generation behavior. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2071,7 +2071,7 @@ model settings like Config classes, enabling customization beyond standard optio from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -2086,7 +2086,7 @@ model settings like Config classes, enabling customization beyond standard optio class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -2096,7 +2096,7 @@ model settings like Config classes, enabling customization beyond standard optio class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -2104,7 +2104,7 @@ model settings like Config classes, enabling customization beyond standard optio class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -2128,7 +2128,7 @@ model settings like Config classes, enabling customization beyond standard optio class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2148,7 +2148,7 @@ model settings like Config classes, enabling customization beyond standard optio from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -2163,8 +2163,8 @@ model settings like Config classes, enabling customization beyond standard optio tag: Optional[str] = None - class Pets(RootModel[List[Pet]]): - root: List[Pet] + class Pets(RootModel[list[Pet]]): + root: list[Pet] class User(BaseModel): @@ -2173,16 +2173,16 @@ model settings like Config classes, enabling customization beyond standard optio tag: Optional[str] = None - class Users(RootModel[List[User]]): - root: List[User] + class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str - class Rules(RootModel[List[str]]): - root: List[str] + class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -2205,8 +2205,8 @@ model settings like Config classes, enabling customization beyond standard optio ) - class Apis(RootModel[List[Api]]): - root: List[Api] + class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): diff --git a/docs/cli-reference/typing-customization.md b/docs/cli-reference/typing-customization.md index c6b582e63..1dc272668 100644 --- a/docs/cli-reference/typing-customization.md +++ b/docs/cli-reference/typing-customization.md @@ -9,6 +9,7 @@ | [`--enum-field-as-literal`](#enum-field-as-literal) | Convert all enum fields to Literal types instead of Enum cla... | | [`--ignore-enum-constraints`](#ignore-enum-constraints) | Ignore enum constraints and use base string type instead of ... | | [`--no-use-specialized-enum`](#no-use-specialized-enum) | Disable specialized Enum classes for Python 3.11+ code gener... | +| [`--no-use-standard-collections`](#no-use-standard-collections) | Use built-in dict/list instead of typing.Dict/List. | | [`--output-datetime-class`](#output-datetime-class) | Specify datetime class type for date-time schema fields. | | [`--strict-types`](#strict-types) | Enable strict type validation for specified Python types. | | [`--type-mappings`](#type-mappings) | Override default type mappings for schema formats. | @@ -17,7 +18,6 @@ | [`--use-generic-container-types`](#use-generic-container-types) | Use typing.Dict/List instead of dict/list for container type... | | [`--use-non-positive-negative-number-constrained-types`](#use-non-positive-negative-number-constrained-types) | Use NonPositive/NonNegative types for number constraints. | | [`--use-pendulum`](#use-pendulum) | Use pendulum types for date/time fields instead of datetime ... | -| [`--use-standard-collections`](#use-standard-collections) | Use built-in dict/list instead of typing.Dict/List. | | [`--use-type-alias`](#use-type-alias) | Use TypeAlias instead of root models for type definitions (e... | | [`--use-union-operator`](#use-union-operator) | Test GraphQL annotated types with standard collections and u... | | [`--use-unique-items-as-set`](#use-unique-items-as-set) | Generate set types for arrays with uniqueItems constraint. | @@ -328,7 +328,7 @@ other properties separate. from __future__ import annotations - from typing import Any, Dict, List, Optional + from typing import Any, Optional from pydantic import BaseModel, EmailStr, Field, conint, constr @@ -408,7 +408,7 @@ other properties separate. class ArrayDatatype(BaseModel): - __root__: List[str] + __root__: list[str] class RefToArrayAllOf(BaseModel): @@ -424,7 +424,7 @@ other properties separate. class PatternPropsDatatype(BaseModel): - __root__: Dict[constr(regex=r'^S_'), str] + __root__: dict[constr(regex=r'^S_'), str] class RefToPatternPropsAllOf(BaseModel): @@ -495,7 +495,7 @@ other properties separate. from __future__ import annotations - from typing import Any, Dict, List, Optional + from typing import Any, Optional from pydantic import BaseModel, EmailStr, Field, conint, constr @@ -575,7 +575,7 @@ other properties separate. class ArrayDatatype(BaseModel): - __root__: List[str] + __root__: list[str] class RefToArrayAllOf(BaseModel): @@ -591,7 +591,7 @@ other properties separate. class PatternPropsDatatype(BaseModel): - __root__: Dict[constr(regex=r'^S_'), str] + __root__: dict[constr(regex=r'^S_'), str] class RefToPatternPropsAllOf(BaseModel): @@ -712,7 +712,7 @@ postponed evaluation of annotations (PEP 563). # filename: keep_model_order_field_references.json # timestamp: 2019-07-26T00:00:00+00:00 - from typing import List, Optional + from typing import Optional from pydantic import BaseModel @@ -722,7 +722,7 @@ postponed evaluation of annotations (PEP 563). class DescriptionType(BaseModel): - metadata: Optional[List[Metadata]] = None + metadata: Optional[list[Metadata]] = None ``` --- @@ -916,7 +916,7 @@ of Enum classes for all enumerations. from __future__ import annotations from enum import Enum - from typing import List, Literal, Optional, Union + from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -937,7 +937,7 @@ of Enum classes for all enumerations. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Kind1(Enum): @@ -992,7 +992,7 @@ of Enum classes for all enumerations. class ArrayEnum(BaseModel): - __root__: List[Union[Literal['cat'], Literal['dog']]] + __root__: list[Union[Literal['cat'], Literal['dog']]] class NestedVersionEnum(Enum): @@ -1068,14 +1068,14 @@ of Enum classes for all enumerations. from __future__ import annotations - from typing import List, Literal, Optional + from typing import Literal, Optional from pydantic import BaseModel, Field class Config(BaseModel): mode: Optional[Literal['fast', 'slow']] = Field(None, title='Mode') - modes: Optional[List[Literal['a', 'b']]] = None + modes: Optional[list[Literal['a', 'b']]] = None ``` === "GraphQL" @@ -1595,6 +1595,216 @@ Python 3.11+, falling back to standard Enum classes instead. --- +## `--no-use-standard-collections` {#no-use-standard-collections} + +Use built-in dict/list instead of typing.Dict/List. + +The `--use-standard-collections` flag generates built-in container types +(dict, list) instead of typing module equivalents. This produces cleaner +code for Python 3.10+ where built-in types support subscripting. + +**Related:** [`--use-generic-container-types`](typing-customization.md#use-generic-container-types) + +**See also:** [Python Version Compatibility](../python-version-compatibility.md) + +!!! tip "Usage" + + ```bash + datamodel-codegen --input schema.json --use-standard-collections # (1)! + ``` + + 1. :material-arrow-left: `--no-use-standard-collections` - the option documented here + +??? example "Examples" + + **Input Schema:** + + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "test.json", + "description": "test", + "type": "object", + "required": [ + "test_id", + "test_ip", + "result", + "nested_object_result", + "nested_enum_result" + ], + "properties": { + "test_id": { + "type": "string", + "description": "test ID" + }, + "test_ip": { + "type": "string", + "description": "test IP" + }, + "result": { + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "nested_object_result": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "status":{ + "type": "integer" + } + }, + "required": ["status"] + } + }, + "nested_enum_result": { + "type": "object", + "additionalProperties": { + "enum": ["red", "green"] + } + }, + "all_of_result" :{ + "type" : "object", + "additionalProperties" : + { + "allOf" : [ + { "$ref" : "#/definitions/User" }, + { "type" : "object", + "properties": { + "description": {"type" : "string" } + } + } + ] + } + }, + "one_of_result" :{ + "type" : "object", + "additionalProperties" : + { + "oneOf" : [ + { "$ref" : "#/definitions/User" }, + { "type" : "object", + "properties": { + "description": {"type" : "string" } + } + } + ] + } + }, + "any_of_result" :{ + "type" : "object", + "additionalProperties" : + { + "anyOf" : [ + { "$ref" : "#/definitions/User" }, + { "type" : "object", + "properties": { + "description": {"type" : "string" } + } + } + ] + } + }, + "all_of_with_unknown_object" :{ + "type" : "object", + "additionalProperties" : + { + "allOf" : [ + { "$ref" : "#/definitions/User" }, + { "description": "TODO" } + ] + } + }, + "objectRef": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/User" + } + }, + "deepNestedObjectRef": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/User" + } + } + } + } + }, + "definitions": { + "User": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + ``` + + **Output:** + + ```python + # generated by datamodel-codegen: + # filename: root_model_with_additional_properties.json + # timestamp: 2019-07-26T00:00:00+00:00 + + from __future__ import annotations + + from enum import Enum + from typing import Optional, Union + + from pydantic import BaseModel, Field + + + class NestedObjectResult(BaseModel): + status: int + + + class NestedEnumResult(Enum): + red = 'red' + green = 'green' + + + class OneOfResult(BaseModel): + description: Optional[str] = None + + + class AnyOfResult(BaseModel): + description: Optional[str] = None + + + class User(BaseModel): + name: Optional[str] = None + + + class AllOfResult(User): + description: Optional[str] = None + + + class Model(BaseModel): + test_id: str = Field(..., description='test ID') + test_ip: str = Field(..., description='test IP') + result: dict[str, int] + nested_object_result: dict[str, NestedObjectResult] + nested_enum_result: dict[str, NestedEnumResult] + all_of_result: Optional[dict[str, AllOfResult]] = None + one_of_result: Optional[dict[str, Union[User, OneOfResult]]] = None + any_of_result: Optional[dict[str, Union[User, AnyOfResult]]] = None + all_of_with_unknown_object: Optional[dict[str, User]] = None + objectRef: Optional[dict[str, User]] = None + deepNestedObjectRef: Optional[dict[str, dict[str, dict[str, User]]]] = None + ``` + +--- + ## `--output-datetime-class` {#output-datetime-class} Specify datetime class type for date-time schema fields. @@ -1848,7 +2058,7 @@ The `--type-mappings` flag configures the code generation behavior. Test GraphQL annotated types with standard collections and union operator. -**Related:** [`--field-constraints`](field-customization.md#field-constraints), [`--use-standard-collections`](typing-customization.md#use-standard-collections) +**Related:** [`--field-constraints`](field-customization.md#field-constraints), [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) **See also:** [Python Version Compatibility](../python-version-compatibility.md) @@ -2107,7 +2317,7 @@ Test GraphQL annotated types with standard collections and union operator. from __future__ import annotations - from typing import Annotated, List, Optional, Union + from typing import Annotated, Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -2119,7 +2329,7 @@ Test GraphQL annotated types with standard collections and union operator. class Pets(BaseModel): - __root__: Annotated[List[Pet], Field(max_items=10, min_items=1, unique_items=True)] + __root__: Annotated[list[Pet], Field(max_items=10, min_items=1, unique_items=True)] class UID(BaseModel): @@ -2139,8 +2349,8 @@ Test GraphQL annotated types with standard collections and union operator. name: Annotated[str, Field(max_length=256)] tag: Annotated[Optional[str], Field(max_length=64)] = None uid: UID - phones: Annotated[Optional[List[Phone]], Field(max_items=10)] = None - fax: Optional[List[FaxItem]] = None + phones: Annotated[Optional[list[Phone]], Field(max_items=10)] = None + fax: Optional[list[FaxItem]] = None height: Annotated[Optional[Union[int, float]], Field(ge=1.0, le=300.0)] = None weight: Annotated[Optional[Union[float, int]], Field(ge=1.0, le=1000.0)] = None age: Annotated[Optional[int], Field(gt=0, le=200)] = None @@ -2148,7 +2358,7 @@ Test GraphQL annotated types with standard collections and union operator. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -2156,7 +2366,7 @@ Test GraphQL annotated types with standard collections and union operator. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -2180,7 +2390,7 @@ Test GraphQL annotated types with standard collections and union operator. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2328,7 +2538,7 @@ The `--use-generic-container-types` flag generates typing module generic containers (Dict, List, etc.) instead of built-in types. This is useful for Python 3.8 compatibility or when explicit typing imports are preferred. -**Related:** [`--use-standard-collections`](typing-customization.md#use-standard-collections) +**Related:** [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) **See also:** [Python Version Compatibility](../python-version-compatibility.md) @@ -2483,8 +2693,9 @@ Python 3.8 compatibility or when explicit typing imports are preferred. from __future__ import annotations + from collections.abc import Mapping from enum import Enum - from typing import Mapping, Optional, Union + from typing import Optional, Union from pydantic import BaseModel, Field @@ -2691,216 +2902,6 @@ working with the pendulum library for enhanced timezone and date handling. --- -## `--use-standard-collections` {#use-standard-collections} - -Use built-in dict/list instead of typing.Dict/List. - -The `--use-standard-collections` flag generates built-in container types -(dict, list) instead of typing module equivalents. This produces cleaner -code for Python 3.10+ where built-in types support subscripting. - -**Related:** [`--use-generic-container-types`](typing-customization.md#use-generic-container-types) - -**See also:** [Python Version Compatibility](../python-version-compatibility.md) - -!!! tip "Usage" - - ```bash - datamodel-codegen --input schema.json --use-standard-collections # (1)! - ``` - - 1. :material-arrow-left: `--use-standard-collections` - the option documented here - -??? example "Examples" - - **Input Schema:** - - ```json - { - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "test.json", - "description": "test", - "type": "object", - "required": [ - "test_id", - "test_ip", - "result", - "nested_object_result", - "nested_enum_result" - ], - "properties": { - "test_id": { - "type": "string", - "description": "test ID" - }, - "test_ip": { - "type": "string", - "description": "test IP" - }, - "result": { - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "nested_object_result": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "status":{ - "type": "integer" - } - }, - "required": ["status"] - } - }, - "nested_enum_result": { - "type": "object", - "additionalProperties": { - "enum": ["red", "green"] - } - }, - "all_of_result" :{ - "type" : "object", - "additionalProperties" : - { - "allOf" : [ - { "$ref" : "#/definitions/User" }, - { "type" : "object", - "properties": { - "description": {"type" : "string" } - } - } - ] - } - }, - "one_of_result" :{ - "type" : "object", - "additionalProperties" : - { - "oneOf" : [ - { "$ref" : "#/definitions/User" }, - { "type" : "object", - "properties": { - "description": {"type" : "string" } - } - } - ] - } - }, - "any_of_result" :{ - "type" : "object", - "additionalProperties" : - { - "anyOf" : [ - { "$ref" : "#/definitions/User" }, - { "type" : "object", - "properties": { - "description": {"type" : "string" } - } - } - ] - } - }, - "all_of_with_unknown_object" :{ - "type" : "object", - "additionalProperties" : - { - "allOf" : [ - { "$ref" : "#/definitions/User" }, - { "description": "TODO" } - ] - } - }, - "objectRef": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/User" - } - }, - "deepNestedObjectRef": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/User" - } - } - } - } - }, - "definitions": { - "User": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - ``` - - **Output:** - - ```python - # generated by datamodel-codegen: - # filename: root_model_with_additional_properties.json - # timestamp: 2019-07-26T00:00:00+00:00 - - from __future__ import annotations - - from enum import Enum - from typing import Optional, Union - - from pydantic import BaseModel, Field - - - class NestedObjectResult(BaseModel): - status: int - - - class NestedEnumResult(Enum): - red = 'red' - green = 'green' - - - class OneOfResult(BaseModel): - description: Optional[str] = None - - - class AnyOfResult(BaseModel): - description: Optional[str] = None - - - class User(BaseModel): - name: Optional[str] = None - - - class AllOfResult(User): - description: Optional[str] = None - - - class Model(BaseModel): - test_id: str = Field(..., description='test ID') - test_ip: str = Field(..., description='test IP') - result: dict[str, int] - nested_object_result: dict[str, NestedObjectResult] - nested_enum_result: dict[str, NestedEnumResult] - all_of_result: Optional[dict[str, AllOfResult]] = None - one_of_result: Optional[dict[str, Union[User, OneOfResult]]] = None - any_of_result: Optional[dict[str, Union[User, AnyOfResult]]] = None - all_of_with_unknown_object: Optional[dict[str, User]] = None - objectRef: Optional[dict[str, User]] = None - deepNestedObjectRef: Optional[dict[str, dict[str, dict[str, User]]]] = None - ``` - ---- - ## `--use-type-alias` {#use-type-alias} Use TypeAlias instead of root models for type definitions (experimental). @@ -2973,7 +2974,7 @@ syntax. This feature is experimental. from __future__ import annotations - from typing import Annotated, Any, List, Optional, TypeAlias, Union + from typing import Annotated, Any, Optional, TypeAlias, Union from pydantic import BaseModel, Field @@ -2986,7 +2987,7 @@ syntax. This feature is experimental. UnionType: TypeAlias = Union[str, int] - ArrayType: TypeAlias = List[str] + ArrayType: TypeAlias = list[str] AnnotatedType: TypeAlias = Annotated[ @@ -3095,7 +3096,7 @@ syntax. This feature is experimental. Test GraphQL annotated types with standard collections and union operator. -**Related:** [`--use-standard-collections`](typing-customization.md#use-standard-collections) +**Related:** [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) **See also:** [Python Version Compatibility](../python-version-compatibility.md) @@ -3423,7 +3424,7 @@ to true, enforcing uniqueness at the type level. from __future__ import annotations - from typing import List, Optional, Set, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -3435,7 +3436,7 @@ to true, enforcing uniqueness at the type level. class Pets(BaseModel): - __root__: Set[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: set[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -3455,8 +3456,8 @@ to true, enforcing uniqueness at the type level. name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[FaxItem]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[FaxItem]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) @@ -3464,7 +3465,7 @@ to true, enforcing uniqueness at the type level. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -3472,7 +3473,7 @@ to true, enforcing uniqueness at the type level. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -3496,7 +3497,7 @@ to true, enforcing uniqueness at the type level. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): From efcb6964f14658650bfa146090ad939d11b4e7fb Mon Sep 17 00:00:00 2001 From: Koudai Aono Date: Fri, 19 Dec 2025 17:12:01 +0000 Subject: [PATCH 3/4] feat: Replace typing.List with built-in list and update imports for Python 3.10+ --- docs/cli-reference/field-customization.md | 176 +++---- docs/cli-reference/general-options.md | 68 +-- docs/cli-reference/index.md | 2 +- docs/cli-reference/model-customization.md | 464 +++++++++-------- docs/cli-reference/openapi-only-options.md | 30 +- docs/cli-reference/quick-reference.md | 4 +- docs/cli-reference/template-customization.md | 82 +-- docs/cli-reference/typing-customization.md | 489 +++++++++--------- .../main/jsonschema/combined_array.py | 22 +- .../expected/main/openapi/enum_models/all.py | 6 +- .../main/openapi/enum_models/as_literal.py | 6 +- tests/data/expected/main/openapi/pyproject.py | 13 +- .../use_generic_container_types/_internal.py | 3 +- .../collections.py | 3 +- .../use_generic_container_types/foo/bar.py | 3 +- .../use_generic_container_types/models.py | 3 +- .../data/expected/main_kr/pyproject/output.py | 13 +- 17 files changed, 692 insertions(+), 695 deletions(-) diff --git a/docs/cli-reference/field-customization.md b/docs/cli-reference/field-customization.md index b728c9820..0845cd2a6 100644 --- a/docs/cli-reference/field-customization.md +++ b/docs/cli-reference/field-customization.md @@ -243,7 +243,7 @@ providing fine-grained control over generated names independent of schema defini from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -255,7 +255,7 @@ providing fine-grained control over generated names independent of schema defini class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -265,7 +265,7 @@ providing fine-grained control over generated names independent of schema defini class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -273,7 +273,7 @@ providing fine-grained control over generated names independent of schema defini class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -297,7 +297,7 @@ providing fine-grained control over generated names independent of schema defini class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -317,7 +317,7 @@ providing fine-grained control over generated names independent of schema defini from __future__ import annotations - from typing import Annotated, List, TypeAlias, Union + from typing import Annotated, TypeAlias, Union from msgspec import UNSET, Meta, Struct, UnsetType, field @@ -328,7 +328,7 @@ providing fine-grained control over generated names independent of schema defini tag: Union[str, UnsetType] = UNSET - Pets: TypeAlias = List[Pet] + Pets: TypeAlias = list[Pet] class User(Struct): @@ -337,13 +337,13 @@ providing fine-grained control over generated names independent of schema defini tag: Union[str, UnsetType] = UNSET - Users: TypeAlias = List[User] + Users: TypeAlias = list[User] Id: TypeAlias = str - Rules: TypeAlias = List[str] + Rules: TypeAlias = list[str] class Error(Struct): @@ -370,7 +370,7 @@ providing fine-grained control over generated names independent of schema defini ] = UNSET - Apis: TypeAlias = List[Api] + Apis: TypeAlias = list[Api] class Event(Struct): @@ -802,7 +802,7 @@ store fields not defined in the schema. Options: allow, ignore, forbid. from __future__ import annotations - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Extra, Field @@ -834,23 +834,23 @@ store fields not defined in the schema. Options: allow, ignore, forbid. class Config: extra = Extra.allow - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] producer: Optional[String] = None release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Film']] = Field('Film', alias='__typename') @@ -860,8 +860,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. birth_year: Optional[String] = None eye_color: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gender: Optional[String] = None hair_color: Optional[String] = None height: Optional[Int] = None @@ -871,12 +871,12 @@ store fields not defined in the schema. Options: allow, ignore, forbid. mass: Optional[Int] = None name: String skin_color: Optional[String] = None - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Person']] = Field('Person', alias='__typename') @@ -886,15 +886,15 @@ store fields not defined in the schema. Options: allow, ignore, forbid. climate: Optional[String] = None diameter: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gravity: Optional[String] = None id: ID name: String orbital_period: Optional[String] = None population: Optional[String] = None - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] rotation_period: Optional[String] = None surface_water: Optional[String] = None terrain: Optional[String] = None @@ -910,14 +910,14 @@ store fields not defined in the schema. Options: allow, ignore, forbid. classification: Optional[String] = None designation: Optional[String] = None eye_colors: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hair_colors: Optional[String] = None id: ID language: Optional[String] = None name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] skin_colors: Optional[String] = None typename__: Optional[Literal['Species']] = Field('Species', alias='__typename') @@ -931,8 +931,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hyperdrive_rating: Optional[String] = None id: ID length: Optional[String] = None @@ -941,8 +941,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] starship_class: Optional[String] = None typename__: Optional[Literal['Starship']] = Field('Starship', alias='__typename') @@ -955,8 +955,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID length: Optional[String] = None manufacturer: Optional[String] = None @@ -964,8 +964,8 @@ store fields not defined in the schema. Options: allow, ignore, forbid. model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] vehicle_class: Optional[String] = None typename__: Optional[Literal['Vehicle']] = Field('Vehicle', alias='__typename') @@ -1245,7 +1245,7 @@ Output differs between Pydantic v1 and v2 due to API changes. from __future__ import annotations - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -1257,7 +1257,7 @@ Output differs between Pydantic v1 and v2 due to API changes. class Pets(BaseModel): - __root__: List[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: list[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -1277,8 +1277,8 @@ Output differs between Pydantic v1 and v2 due to API changes. name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[FaxItem]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[FaxItem]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) @@ -1286,7 +1286,7 @@ Output differs between Pydantic v1 and v2 due to API changes. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1294,7 +1294,7 @@ Output differs between Pydantic v1 and v2 due to API changes. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1318,7 +1318,7 @@ Output differs between Pydantic v1 and v2 due to API changes. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1338,7 +1338,7 @@ Output differs between Pydantic v1 and v2 due to API changes. from __future__ import annotations - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field, RootModel @@ -1349,8 +1349,8 @@ Output differs between Pydantic v1 and v2 due to API changes. tag: Optional[str] = Field(None, max_length=64) - class Pets(RootModel[List[Pet]]): - root: List[Pet] = Field(..., max_length=10, min_length=1) + class Pets(RootModel[list[Pet]]): + root: list[Pet] = Field(..., max_length=10, min_length=1) class UID(RootModel[int]): @@ -1370,24 +1370,24 @@ Output differs between Pydantic v1 and v2 due to API changes. name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_length=10) - fax: Optional[List[FaxItem]] = None + phones: Optional[list[Phone]] = Field(None, max_length=10) + fax: Optional[list[FaxItem]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) rating: Optional[float] = Field(None, gt=0.0, le=5.0) - class Users(RootModel[List[User]]): - root: List[User] + class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str - class Rules(RootModel[List[str]]): - root: List[str] + class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -1410,8 +1410,8 @@ Output differs between Pydantic v1 and v2 due to API changes. ) - class Apis(RootModel[List[Api]]): - root: List[Api] + class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): @@ -1817,7 +1817,7 @@ The `--field-include-all-keys` flag configures the code generation behavior. from __future__ import annotations - from typing import Any, List, Optional + from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -1828,7 +1828,7 @@ The `--field-include-all-keys` flag configures the code generation behavior. age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None ``` @@ -2133,7 +2133,7 @@ The `--set-default-enum-member` flag configures the code generation behavior. from __future__ import annotations from enum import Enum - from typing import List, Optional + from typing import Optional from pydantic import BaseModel, Field @@ -2153,11 +2153,11 @@ The `--set-default-enum-member` flag configures the code generation behavior. name: Optional[str] = None animal: Optional[Animal] = Animal.dog pet: Optional[Animal] = Animal.cat - redistribute: Optional[List[RedistributeEnum]] = None + redistribute: Optional[list[RedistributeEnum]] = None class Redistribute(BaseModel): - __root__: List[RedistributeEnum] = Field( + __root__: list[RedistributeEnum] = Field( ..., description='Redistribute type for routes.' ) ``` @@ -2680,7 +2680,7 @@ generated models, preserving documentation from the original schema. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel @@ -2692,7 +2692,7 @@ generated models, preserving documentation from the original schema. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -2702,7 +2702,7 @@ generated models, preserving documentation from the original schema. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -2710,7 +2710,7 @@ generated models, preserving documentation from the original schema. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -2739,7 +2739,7 @@ generated models, preserving documentation from the original schema. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2801,7 +2801,7 @@ generated models, preserving documentation from the original schema. from __future__ import annotations - from typing import Annotated, Any, List, Optional, TypeAlias, Union + from typing import Annotated, Any, Optional, TypeAlias, Union from pydantic import BaseModel, Field @@ -2814,7 +2814,7 @@ generated models, preserving documentation from the original schema. UnionType: TypeAlias = Union[str, int] - ArrayType: TypeAlias = List[str] + ArrayType: TypeAlias = list[str] AnnotatedType: TypeAlias = Annotated[ @@ -3047,7 +3047,7 @@ documentation without using Field() wrappers. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -3059,7 +3059,7 @@ documentation without using Field() wrappers. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -3069,7 +3069,7 @@ documentation without using Field() wrappers. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -3077,7 +3077,7 @@ documentation without using Field() wrappers. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -3112,7 +3112,7 @@ documentation without using Field() wrappers. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -3338,7 +3338,7 @@ useful for preserving documentation from your schema in the generated code. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -3350,7 +3350,7 @@ useful for preserving documentation from your schema in the generated code. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -3360,7 +3360,7 @@ useful for preserving documentation from your schema in the generated code. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -3368,7 +3368,7 @@ useful for preserving documentation from your schema in the generated code. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -3398,7 +3398,7 @@ useful for preserving documentation from your schema in the generated code. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -3541,7 +3541,7 @@ This is useful when schemas have descriptive titles that should be preserved. from __future__ import annotations from enum import Enum - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import BaseModel, Field @@ -3566,7 +3566,7 @@ This is useful when schemas have descriptive titles that should be preserved. class ProcessingTasksTitle(BaseModel): - __root__: List[ProcessingTaskTitle] = Field(..., title='Processing Tasks Title') + __root__: list[ProcessingTaskTitle] = Field(..., title='Processing Tasks Title') class ExtendedProcessingTask(BaseModel): @@ -3576,7 +3576,7 @@ This is useful when schemas have descriptive titles that should be preserved. class ExtendedProcessingTasksTitle(BaseModel): - __root__: List[ExtendedProcessingTask] = Field( + __root__: list[ExtendedProcessingTask] = Field( ..., title='Extended Processing Tasks Title' ) diff --git a/docs/cli-reference/general-options.md b/docs/cli-reference/general-options.md index 4695dc0c6..c0f88ef68 100644 --- a/docs/cli-reference/general-options.md +++ b/docs/cli-reference/general-options.md @@ -353,7 +353,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import BaseModel @@ -399,18 +399,18 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None - class ListModel(BaseModel): - __root__: List[Tea_1] + class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() @@ -434,7 +434,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. from __future__ import annotations from enum import Enum - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -442,15 +442,15 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -477,7 +477,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] # foo/__init__.py # generated by datamodel-codegen: @@ -493,17 +493,17 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. from __future__ import annotations - from typing import Any, Dict, List, Optional + from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): @@ -520,7 +520,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. from __future__ import annotations from enum import Enum - from typing import Any, Dict, List, Optional, Union + from typing import Any, Optional, Union from pydantic import BaseModel @@ -545,7 +545,7 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None # nested/__init__.py # generated by datamodel-codegen: @@ -555,11 +555,11 @@ uses the complete module path. Requires `--all-exports-scope=recursive`. # generated by datamodel-codegen: # filename: modular.yaml - from .._internal import ListModel + from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone - __all__ = ["ListModel", "Tea", "TeaClone"] + __all__ = ["List", "Tea", "TeaClone"] # woo/__init__.py # generated by datamodel-codegen: @@ -927,7 +927,7 @@ Use 'recursive' to include all descendant exports with collision handling. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import BaseModel @@ -973,18 +973,18 @@ Use 'recursive' to include all descendant exports with collision handling. flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None class TeaClone(BaseModel): flavour: Optional[str] = None id: Optional[Id] = None self: Optional[Tea_1] = None - optional: Optional[List[OptionalModel]] = None + optional: Optional[list[OptionalModel]] = None - class ListModel(BaseModel): - __root__: List[Tea_1] + class List(BaseModel): + __root__: list[Tea_1] Tea_1.update_forward_refs() @@ -1008,7 +1008,7 @@ Use 'recursive' to include all descendant exports with collision handling. from __future__ import annotations from enum import Enum - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1016,15 +1016,15 @@ Use 'recursive' to include all descendant exports with collision handling. class Pets(BaseModel): - __root__: List[models.Pet] + __root__: list[models.Pet] class Users(BaseModel): - __root__: List[models.User] + __root__: list[models.User] class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Stage(Enum): @@ -1051,7 +1051,7 @@ Use 'recursive' to include all descendant exports with collision handling. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] # foo/__init__.py # generated by datamodel-codegen: @@ -1067,17 +1067,17 @@ Use 'recursive' to include all descendant exports with collision handling. from __future__ import annotations - from typing import Any, Dict, List, Optional + from typing import Any, Optional from pydantic import BaseModel class Thing(BaseModel): - attributes: Optional[Dict[str, Any]] = None + attributes: Optional[dict[str, Any]] = None class Thang(BaseModel): - attributes: Optional[List[Dict[str, Any]]] = None + attributes: Optional[list[dict[str, Any]]] = None class Others(BaseModel): @@ -1094,7 +1094,7 @@ Use 'recursive' to include all descendant exports with collision handling. from __future__ import annotations from enum import Enum - from typing import Any, Dict, List, Optional, Union + from typing import Any, Optional, Union from pydantic import BaseModel @@ -1119,7 +1119,7 @@ Use 'recursive' to include all descendant exports with collision handling. class Event(BaseModel): - name: Optional[Union[str, float, int, bool, Dict[str, Any], List[str]]] = None + name: Optional[Union[str, float, int, bool, dict[str, Any], list[str]]] = None # nested/__init__.py # generated by datamodel-codegen: @@ -1129,11 +1129,11 @@ Use 'recursive' to include all descendant exports with collision handling. # generated by datamodel-codegen: # filename: modular.yaml - from .._internal import ListModel + from .._internal import List from .._internal import Tea_1 as Tea from .._internal import TeaClone - __all__ = ["ListModel", "Tea", "TeaClone"] + __all__ = ["List", "Tea", "TeaClone"] # woo/__init__.py # generated by datamodel-codegen: diff --git a/docs/cli-reference/index.md b/docs/cli-reference/index.md index cfa85043f..48f82fe43 100644 --- a/docs/cli-reference/index.md +++ b/docs/cli-reference/index.md @@ -112,6 +112,7 @@ This documentation is auto-generated from test cases. - [`--no-alias`](field-customization.md#no-alias) - [`--no-color`](utility-options.md#no-color) - [`--no-use-specialized-enum`](typing-customization.md#no-use-specialized-enum) +- [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) ### O {#o} @@ -172,7 +173,6 @@ This documentation is auto-generated from test cases. - [`--use-pendulum`](typing-customization.md#use-pendulum) - [`--use-schema-description`](field-customization.md#use-schema-description) - [`--use-serialize-as-any`](model-customization.md#use-serialize-as-any) -- [`--use-standard-collections`](typing-customization.md#use-standard-collections) - [`--use-status-code-in-response-name`](openapi-only-options.md#use-status-code-in-response-name) - [`--use-subclass-enum`](model-customization.md#use-subclass-enum) - [`--use-title-as-name`](field-customization.md#use-title-as-name) diff --git a/docs/cli-reference/model-customization.md b/docs/cli-reference/model-customization.md index 7deb2e1a7..85111b00c 100644 --- a/docs/cli-reference/model-customization.md +++ b/docs/cli-reference/model-customization.md @@ -244,7 +244,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Extra, Field @@ -262,7 +262,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. class Config: extra = Extra.allow - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -278,7 +278,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. class Config: extra = Extra.allow - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -292,7 +292,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. class Config: extra = Extra.allow - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -325,7 +325,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. class Config: extra = Extra.allow - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -351,7 +351,7 @@ The `--allow-extra-fields` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -365,8 +365,8 @@ The `--allow-extra-fields` flag configures the code generation behavior. tag: Optional[str] = None - class Pets(RootModel[List[Pet]]): - root: List[Pet] + class Pets(RootModel[list[Pet]]): + root: list[Pet] class User(BaseModel): @@ -378,16 +378,16 @@ The `--allow-extra-fields` flag configures the code generation behavior. tag: Optional[str] = None - class Users(RootModel[List[User]]): - root: List[User] + class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str - class Rules(RootModel[List[str]]): - root: List[str] + class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -416,8 +416,8 @@ The `--allow-extra-fields` flag configures the code generation behavior. ) - class Apis(RootModel[List[Api]]): - root: List[Api] + class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): @@ -647,7 +647,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -665,7 +665,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav class Config: allow_population_by_field_name = True - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -681,7 +681,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav class Config: allow_population_by_field_name = True - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -695,7 +695,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav class Config: allow_population_by_field_name = True - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -728,7 +728,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav class Config: allow_population_by_field_name = True - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -754,7 +754,7 @@ The `--allow-population-by-field-name` flag configures the code generation behav from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -768,11 +768,11 @@ The `--allow-population-by-field-name` flag configures the code generation behav tag: Optional[str] = None - class Pets(RootModel[List[Pet]]): + class Pets(RootModel[list[Pet]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[Pet] + root: list[Pet] class User(BaseModel): @@ -784,11 +784,11 @@ The `--allow-population-by-field-name` flag configures the code generation behav tag: Optional[str] = None - class Users(RootModel[List[User]]): + class Users(RootModel[list[User]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[User] + root: list[User] class Id(RootModel[str]): @@ -798,11 +798,11 @@ The `--allow-population-by-field-name` flag configures the code generation behav root: str - class Rules(RootModel[List[str]]): + class Rules(RootModel[list[str]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[str] + root: list[str] class Error(BaseModel): @@ -831,11 +831,11 @@ The `--allow-population-by-field-name` flag configures the code generation behav ) - class Apis(RootModel[List[Api]]): + class Apis(RootModel[list[Api]]): model_config = ConfigDict( populate_by_name=True, ) - root: List[Api] + root: list[Api] class Event(BaseModel): @@ -1063,7 +1063,7 @@ The `--base-class` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, Field @@ -1077,7 +1077,7 @@ The `--base-class` flag configures the code generation behavior. class Pets(Base): - __root__: List[Pet] + __root__: list[Pet] class User(Base): @@ -1087,7 +1087,7 @@ The `--base-class` flag configures the code generation behavior. class Users(Base): - __root__: List[User] + __root__: list[User] class Id(Base): @@ -1095,7 +1095,7 @@ The `--base-class` flag configures the code generation behavior. class Rules(Base): - __root__: List[str] + __root__: list[str] class Error(Base): @@ -1119,7 +1119,7 @@ The `--base-class` flag configures the code generation behavior. class Apis(Base): - __root__: List[Api] + __root__: list[Api] class Event(Base): @@ -1191,7 +1191,7 @@ naming convention than what's in the schema. from __future__ import annotations - from typing import Any, List, Optional + from typing import Any, Optional from pydantic import BaseModel, Field, conint @@ -1202,7 +1202,7 @@ naming convention than what's in the schema. age: Optional[conint(ge=0)] = Field( None, description='Age in years which must be equal to or greater than zero.' ) - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None ``` @@ -1584,7 +1584,7 @@ control over dataclass generation. from __future__ import annotations from dataclasses import dataclass - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias Boolean: TypeAlias = bool """ @@ -1612,38 +1612,38 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Film: - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] producer: Optional[String] = None typename__: Optional[Literal['Film']] = 'Film' @dataclass(order=True, slots=True) class Person: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] birth_year: Optional[String] = None eye_color: Optional[String] = None gender: Optional[String] = None @@ -1658,12 +1658,12 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Planet: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] climate: Optional[String] = None diameter: Optional[String] = None gravity: Optional[String] = None @@ -1677,12 +1677,12 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Species: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] average_height: Optional[String] = None average_lifespan: Optional[String] = None classification: Optional[String] = None @@ -1696,12 +1696,12 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Starship: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] MGLT: Optional[String] = None cargo_capacity: Optional[String] = None consumables: Optional[String] = None @@ -1719,12 +1719,12 @@ control over dataclass generation. @dataclass(order=True, slots=True) class Vehicle: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] cargo_capacity: Optional[String] = None consumables: Optional[String] = None cost_in_credits: Optional[String] = None @@ -1951,7 +1951,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1969,7 +1969,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. class Config: allow_mutation = False - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -1985,7 +1985,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. class Config: allow_mutation = False - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1999,7 +1999,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. class Config: allow_mutation = False - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -2032,7 +2032,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. class Config: allow_mutation = False - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2058,7 +2058,7 @@ The `--enable-faux-immutability` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -2072,11 +2072,11 @@ The `--enable-faux-immutability` flag configures the code generation behavior. tag: Optional[str] = None - class Pets(RootModel[List[Pet]]): + class Pets(RootModel[list[Pet]]): model_config = ConfigDict( frozen=True, ) - root: List[Pet] + root: list[Pet] class User(BaseModel): @@ -2088,11 +2088,11 @@ The `--enable-faux-immutability` flag configures the code generation behavior. tag: Optional[str] = None - class Users(RootModel[List[User]]): + class Users(RootModel[list[User]]): model_config = ConfigDict( frozen=True, ) - root: List[User] + root: list[User] class Id(RootModel[str]): @@ -2102,11 +2102,11 @@ The `--enable-faux-immutability` flag configures the code generation behavior. root: str - class Rules(RootModel[List[str]]): + class Rules(RootModel[list[str]]): model_config = ConfigDict( frozen=True, ) - root: List[str] + root: list[str] class Error(BaseModel): @@ -2135,11 +2135,11 @@ The `--enable-faux-immutability` flag configures the code generation behavior. ) - class Apis(RootModel[List[Api]]): + class Apis(RootModel[list[Api]]): model_config = ConfigDict( frozen=True, ) - root: List[Api] + root: list[Api] class Event(BaseModel): @@ -2367,7 +2367,7 @@ The `--force-optional` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -2379,7 +2379,7 @@ The `--force-optional` flag configures the code generation behavior. class Pets(BaseModel): - __root__: Optional[List[Pet]] = None + __root__: Optional[list[Pet]] = None class User(BaseModel): @@ -2389,7 +2389,7 @@ The `--force-optional` flag configures the code generation behavior. class Users(BaseModel): - __root__: Optional[List[User]] = None + __root__: Optional[list[User]] = None class Id(BaseModel): @@ -2397,7 +2397,7 @@ The `--force-optional` flag configures the code generation behavior. class Rules(BaseModel): - __root__: Optional[List[str]] = None + __root__: Optional[list[str]] = None class Error(BaseModel): @@ -2421,7 +2421,7 @@ The `--force-optional` flag configures the code generation behavior. class Apis(BaseModel): - __root__: Optional[List[Api]] = None + __root__: Optional[list[Api]] = None class Event(BaseModel): @@ -2635,7 +2635,7 @@ of model definitions matters for documentation or readability. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import BaseModel, Field @@ -2646,7 +2646,7 @@ of model definitions matters for documentation or readability. class DogRelationships(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') + people: Optional[list[Person]] = Field(None, title='People') class Dog(DogBase, DogRelationships): @@ -2658,7 +2658,7 @@ of model definitions matters for documentation or readability. class PersonRelationships(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') + people: Optional[list[Person]] = Field(None, title='People') class Person(PersonBase, PersonRelationships): @@ -2666,8 +2666,8 @@ of model definitions matters for documentation or readability. class PersonsBestFriend(BaseModel): - people: Optional[List[Person]] = Field(None, title='People') - dogs: Optional[List[Dog]] = Field(None, title='Dogs') + people: Optional[list[Person]] = Field(None, title='People') + dogs: Optional[list[Dog]] = Field(None, title='Dogs') dog_base: Optional[DogBase] = None dog_relationships: Optional[DogRelationships] = None person_base: Optional[PersonBase] = None @@ -2750,7 +2750,7 @@ argument errors. from __future__ import annotations from dataclasses import dataclass - from typing import Any, List, Optional + from typing import Any, Optional @dataclass(frozen=True, kw_only=True) @@ -2758,7 +2758,7 @@ argument errors. firstName: Optional[str] = None lastName: Optional[str] = None age: Optional[int] = None - friends: Optional[List[Any]] = None + friends: Optional[list[Any]] = None comment: None = None ``` @@ -2921,7 +2921,7 @@ argument errors. from __future__ import annotations from dataclasses import dataclass - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias Boolean: TypeAlias = bool """ @@ -2949,38 +2949,38 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Film: - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] producer: Optional[String] = None typename__: Optional[Literal['Film']] = 'Film' @dataclass(frozen=True, kw_only=True) class Person: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] birth_year: Optional[String] = None eye_color: Optional[String] = None gender: Optional[String] = None @@ -2995,12 +2995,12 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Planet: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] climate: Optional[String] = None diameter: Optional[String] = None gravity: Optional[String] = None @@ -3014,12 +3014,12 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Species: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] average_height: Optional[String] = None average_lifespan: Optional[String] = None classification: Optional[String] = None @@ -3033,12 +3033,12 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Starship: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] MGLT: Optional[String] = None cargo_capacity: Optional[String] = None consumables: Optional[String] = None @@ -3056,12 +3056,12 @@ argument errors. @dataclass(frozen=True, kw_only=True) class Vehicle: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] cargo_capacity: Optional[String] = None consumables: Optional[String] = None cost_in_credits: Optional[String] = None @@ -3142,17 +3142,17 @@ for the generated code. Supported values include `pydantic.BaseModel`, from __future__ import annotations - from typing import Any, List, Optional + from typing import Any, Optional from pydantic import BaseModel class MyObjItem(BaseModel): - items: Optional[List[Any]] + items: Optional[list[Any]] class Model(BaseModel): - my_obj: List[MyObjItem] + my_obj: list[MyObjItem] ``` === "Pydantic v2" @@ -3164,17 +3164,17 @@ for the generated code. Supported values include `pydantic.BaseModel`, from __future__ import annotations - from typing import Any, List, Optional + from typing import Any, Optional from pydantic import BaseModel class MyObjItem(BaseModel): - items: Optional[List[Any]] = None + items: Optional[list[Any]] = None class Model(BaseModel): - my_obj: List[MyObjItem] + my_obj: list[MyObjItem] ``` === "GraphQL" @@ -3337,7 +3337,7 @@ for the generated code. Supported values include `pydantic.BaseModel`, from __future__ import annotations - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Field @@ -3366,31 +3366,31 @@ for the generated code. Supported values include `pydantic.BaseModel`, class Film(BaseModel): - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] producer: Optional[String] = None release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Film']] = Field('Film', alias='__typename') class Person(BaseModel): birth_year: Optional[String] = None eye_color: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gender: Optional[String] = None hair_color: Optional[String] = None height: Optional[Int] = None @@ -3400,27 +3400,27 @@ for the generated code. Supported values include `pydantic.BaseModel`, mass: Optional[Int] = None name: String skin_color: Optional[String] = None - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] typename__: Optional[Literal['Person']] = Field('Person', alias='__typename') class Planet(BaseModel): climate: Optional[String] = None diameter: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] gravity: Optional[String] = None id: ID name: String orbital_period: Optional[String] = None population: Optional[String] = None - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] rotation_period: Optional[String] = None surface_water: Optional[String] = None terrain: Optional[String] = None @@ -3433,14 +3433,14 @@ for the generated code. Supported values include `pydantic.BaseModel`, classification: Optional[String] = None designation: Optional[String] = None eye_colors: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hair_colors: Optional[String] = None id: ID language: Optional[String] = None name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] skin_colors: Optional[String] = None typename__: Optional[Literal['Species']] = Field('Species', alias='__typename') @@ -3451,8 +3451,8 @@ for the generated code. Supported values include `pydantic.BaseModel`, consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] hyperdrive_rating: Optional[String] = None id: ID length: Optional[String] = None @@ -3461,8 +3461,8 @@ for the generated code. Supported values include `pydantic.BaseModel`, model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] starship_class: Optional[String] = None typename__: Optional[Literal['Starship']] = Field('Starship', alias='__typename') @@ -3472,8 +3472,8 @@ for the generated code. Supported values include `pydantic.BaseModel`, consumables: Optional[String] = None cost_in_credits: Optional[String] = None crew: Optional[String] = None - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID length: Optional[String] = None manufacturer: Optional[String] = None @@ -3481,8 +3481,8 @@ for the generated code. Supported values include `pydantic.BaseModel`, model: Optional[String] = None name: String passengers: Optional[String] = None - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] vehicle_class: Optional[String] = None typename__: Optional[Literal['Vehicle']] = Field('Vehicle', alias='__typename') @@ -3501,7 +3501,7 @@ for the generated code. Supported values include `pydantic.BaseModel`, from __future__ import annotations from dataclasses import dataclass - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias Boolean: TypeAlias = bool """ @@ -3529,38 +3529,38 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Film: - characters: List[Person] - characters_ids: List[ID] + characters: list[Person] + characters_ids: list[ID] director: String episode_id: Int id: ID opening_crawl: String - planets: List[Planet] - planets_ids: List[ID] + planets: list[Planet] + planets_ids: list[ID] release_date: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] title: String - vehicles: List[Vehicle] - vehicles_ids: List[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] producer: Optional[String] = None typename__: Optional[Literal['Film']] = 'Film' @dataclass class Person: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - species: List[Species] - species_ids: List[ID] - starships: List[Starship] - starships_ids: List[ID] - vehicles: List[Vehicle] - vehicles_ids: List[ID] + species: list[Species] + species_ids: list[ID] + starships: list[Starship] + starships_ids: list[ID] + vehicles: list[Vehicle] + vehicles_ids: list[ID] birth_year: Optional[String] = None eye_color: Optional[String] = None gender: Optional[String] = None @@ -3575,12 +3575,12 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Planet: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - residents: List[Person] - residents_ids: List[ID] + residents: list[Person] + residents_ids: list[ID] climate: Optional[String] = None diameter: Optional[String] = None gravity: Optional[String] = None @@ -3594,12 +3594,12 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Species: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - people: List[Person] - people_ids: List[ID] + people: list[Person] + people_ids: list[ID] average_height: Optional[String] = None average_lifespan: Optional[String] = None classification: Optional[String] = None @@ -3613,12 +3613,12 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Starship: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] MGLT: Optional[String] = None cargo_capacity: Optional[String] = None consumables: Optional[String] = None @@ -3636,12 +3636,12 @@ for the generated code. Supported values include `pydantic.BaseModel`, @dataclass class Vehicle: - films: List[Film] - films_ids: List[ID] + films: list[Film] + films_ids: list[ID] id: ID name: String - pilots: List[Person] - pilots_ids: List[ID] + pilots: list[Person] + pilots_ids: list[ID] cargo_capacity: Optional[String] = None consumables: Optional[String] = None cost_in_credits: Optional[String] = None @@ -3893,7 +3893,7 @@ code duplication in the output. from __future__ import annotations from enum import Enum - from typing import List, Optional + from typing import Optional from pydantic import BaseModel, Field @@ -3913,11 +3913,11 @@ code duplication in the output. name: Optional[str] = None animal: Optional[Animal] = 'dog' pet: Optional[Animal] = 'cat' - redistribute: Optional[List[RedistributeEnum]] = None + redistribute: Optional[list[RedistributeEnum]] = None class Redistribute(BaseModel): - __root__: List[RedistributeEnum] = Field( + __root__: list[RedistributeEnum] = Field( ..., description='Redistribute type for routes.' ) ``` @@ -4256,7 +4256,7 @@ The `--strict-nullable` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -4296,7 +4296,7 @@ The `--strict-nullable` flag configures the code generation behavior. class Apis(BaseModel): - __root__: Optional[List[Api]] = Field(...) + __root__: Optional[list[Api]] = Field(...) class EmailItem(BaseModel): @@ -4307,7 +4307,7 @@ The `--strict-nullable` flag configures the code generation behavior. class Email(BaseModel): - __root__: List[EmailItem] + __root__: list[EmailItem] class Id(BaseModel): @@ -4327,12 +4327,12 @@ The `--strict-nullable` flag configures the code generation behavior. class Notes(BaseModel): - comments: List[str] = Field(default_factory=list) + comments: list[str] = Field(default_factory=list) class Options(BaseModel): - comments: List[Optional[str]] - oneOfComments: List[Union[Optional[str], Optional[float]]] + comments: list[Optional[str]] + oneOfComments: list[Union[Optional[str], Optional[float]]] ``` --- @@ -4548,7 +4548,7 @@ default to None. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -4560,7 +4560,7 @@ default to None. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -4570,7 +4570,7 @@ default to None. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -4578,7 +4578,7 @@ default to None. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -4602,7 +4602,7 @@ default to None. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -4909,7 +4909,7 @@ default values. from __future__ import annotations - from typing import List, Literal, Optional, TypeAlias + from typing import Literal, Optional, TypeAlias from pydantic import BaseModel, Field @@ -4927,12 +4927,12 @@ default values. class A(BaseModel): field: String - listField: List[String] - listListField: List[List[String]] - listOptionalField: List[Optional[String]] + listField: list[String] + listListField: list[list[String]] + listOptionalField: list[Optional[String]] optionalField: Optional[String] = None - optionalListField: Optional[List[String]] = None - optionalListOptionalField: Optional[List[Optional[String]]] = None + optionalListField: Optional[list[String]] = None + optionalListOptionalField: Optional[list[Optional[String]]] = None typename__: Optional[Literal['A']] = Field(default='A', alias='__typename') ``` @@ -5244,7 +5244,7 @@ The `--use-one-literal-as-default` flag configures the code generation behavior. from __future__ import annotations from enum import Enum - from typing import List, Literal, Optional, Union + from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -5265,7 +5265,7 @@ The `--use-one-literal-as-default` flag configures the code generation behavior. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Kind1(Enum): @@ -5320,7 +5320,7 @@ The `--use-one-literal-as-default` flag configures the code generation behavior. class ArrayEnum(BaseModel): - __root__: List[Union[Literal['cat'], Literal['dog']]] + __root__: list[Union[Literal['cat'], Literal['dog']]] class NestedVersionEnum(Enum): @@ -5444,8 +5444,6 @@ polymorphic types and inheritance hierarchies. from __future__ import annotations - from typing import List - from pydantic import BaseModel, Field, SerializeAsAny @@ -5464,7 +5462,7 @@ polymorphic types and inheritance hierarchies. user_field: SerializeAsAny[User] = Field( ..., description='Field that should use SerializeAsAny' ) - user_list: List[SerializeAsAny[User]] = Field( + user_list: list[SerializeAsAny[User]] = Field( ..., description='List of users that should use SerializeAsAny' ) ``` diff --git a/docs/cli-reference/openapi-only-options.md b/docs/cli-reference/openapi-only-options.md index de3654ab6..ca003c9b6 100644 --- a/docs/cli-reference/openapi-only-options.md +++ b/docs/cli-reference/openapi-only-options.md @@ -507,7 +507,7 @@ The `--openapi-scopes` flag configures the code generation behavior. from __future__ import annotations from datetime import datetime - from typing import List, Optional + from typing import Optional from pydantic import BaseModel @@ -529,11 +529,11 @@ The `--openapi-scopes` flag configures the code generation behavior. class PetsGetResponse(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class FoodFoodIdGetResponse(BaseModel): - __root__: List[int] + __root__: list[int] class UserGetResponse(BaseModel): @@ -555,7 +555,7 @@ The `--openapi-scopes` flag configures the code generation behavior. class UsersGetResponse(BaseModel): - __root__: List[UsersGetResponseItem] + __root__: list[UsersGetResponseItem] class UsersPostRequestItem(BaseModel): @@ -565,7 +565,7 @@ The `--openapi-scopes` flag configures the code generation behavior. class UsersPostRequest(BaseModel): - __root__: List[UsersPostRequestItem] + __root__: list[UsersPostRequestItem] ``` --- @@ -864,7 +864,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -876,7 +876,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -886,7 +886,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -894,7 +894,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -918,7 +918,7 @@ The `--use-operation-id-as-name` flag configures the code generation behavior. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1242,7 +1242,7 @@ The `--validation` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1254,7 +1254,7 @@ The `--validation` flag configures the code generation behavior. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -1264,7 +1264,7 @@ The `--validation` flag configures the code generation behavior. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1272,7 +1272,7 @@ The `--validation` flag configures the code generation behavior. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1296,7 +1296,7 @@ The `--validation` flag configures the code generation behavior. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/docs/cli-reference/quick-reference.md b/docs/cli-reference/quick-reference.md index 2aca54ea0..22c9368f0 100644 --- a/docs/cli-reference/quick-reference.md +++ b/docs/cli-reference/quick-reference.md @@ -31,6 +31,7 @@ datamodel-codegen [OPTIONS] | [`--enum-field-as-literal`](typing-customization.md#enum-field-as-literal) | Convert all enum fields to Literal types instead of Enum classes. | | [`--ignore-enum-constraints`](typing-customization.md#ignore-enum-constraints) | Ignore enum constraints and use base string type instead of Enum classes. | | [`--no-use-specialized-enum`](typing-customization.md#no-use-specialized-enum) | Disable specialized Enum classes for Python 3.11+ code generation. | +| [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) | Use built-in dict/list instead of typing.Dict/List. | | [`--output-datetime-class`](typing-customization.md#output-datetime-class) | Specify datetime class type for date-time schema fields. | | [`--strict-types`](typing-customization.md#strict-types) | Enable strict type validation for specified Python types. | | [`--type-mappings`](typing-customization.md#type-mappings) | Override default type mappings for schema formats. | @@ -39,7 +40,6 @@ datamodel-codegen [OPTIONS] | [`--use-generic-container-types`](typing-customization.md#use-generic-container-types) | Use typing.Dict/List instead of dict/list for container types. | | [`--use-non-positive-negative-number-constrained-types`](typing-customization.md#use-non-positive-negative-number-constrained-types) | Use NonPositive/NonNegative types for number constraints. | | [`--use-pendulum`](typing-customization.md#use-pendulum) | Use pendulum types for date/time fields instead of datetime module. | -| [`--use-standard-collections`](typing-customization.md#use-standard-collections) | Use built-in dict/list instead of typing.Dict/List. | | [`--use-type-alias`](typing-customization.md#use-type-alias) | Use TypeAlias instead of root models for type definitions (experimental). | | [`--use-union-operator`](typing-customization.md#use-union-operator) | Test GraphQL annotated types with standard collections and union operator. | | [`--use-unique-items-as-set`](typing-customization.md#use-unique-items-as-set) | Generate set types for arrays with uniqueItems constraint. | @@ -222,6 +222,7 @@ All options sorted alphabetically: - [`--no-alias`](field-customization.md#no-alias) - Disable Field alias generation for non-Python-safe property ... - [`--no-color`](utility-options.md#no-color) - Disable colorized output - [`--no-use-specialized-enum`](typing-customization.md#no-use-specialized-enum) - Disable specialized Enum classes for Python 3.11+ code gener... +- [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) - Use built-in dict/list instead of typing.Dict/List. - [`--openapi-scopes`](openapi-only-options.md#openapi-scopes) - Specify OpenAPI scopes to generate (schemas, paths, paramete... - [`--original-field-name-delimiter`](field-customization.md#original-field-name-delimiter) - Specify delimiter for original field names when using snake-... - [`--output`](base-options.md#output) - Specify the destination path for generated Python code. @@ -264,7 +265,6 @@ All options sorted alphabetically: - [`--use-pendulum`](typing-customization.md#use-pendulum) - Use pendulum types for date/time fields instead of datetime ... - [`--use-schema-description`](field-customization.md#use-schema-description) - Use schema description as class docstring. - [`--use-serialize-as-any`](model-customization.md#use-serialize-as-any) - Wrap fields with subtypes in Pydantic's SerializeAsAny. -- [`--use-standard-collections`](typing-customization.md#use-standard-collections) - Use built-in dict/list instead of typing.Dict/List. - [`--use-status-code-in-response-name`](openapi-only-options.md#use-status-code-in-response-name) - Include HTTP status code in response model names. - [`--use-subclass-enum`](model-customization.md#use-subclass-enum) - Generate typed Enum subclasses for enums with specific field... - [`--use-title-as-name`](field-customization.md#use-title-as-name) - Use schema title as the generated class name. diff --git a/docs/cli-reference/template-customization.md b/docs/cli-reference/template-customization.md index 8814ac2cb..24a3d59e4 100644 --- a/docs/cli-reference/template-customization.md +++ b/docs/cli-reference/template-customization.md @@ -400,7 +400,7 @@ to be inserted at the top of generated Python files. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -412,7 +412,7 @@ to be inserted at the top of generated Python files. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -422,7 +422,7 @@ to be inserted at the top of generated Python files. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -430,7 +430,7 @@ to be inserted at the top of generated Python files. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -454,7 +454,7 @@ to be inserted at the top of generated Python files. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -823,7 +823,7 @@ to the templates. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -835,7 +835,7 @@ to the templates. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -845,7 +845,7 @@ to the templates. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -853,7 +853,7 @@ to the templates. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -869,7 +869,7 @@ to the templates. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1141,7 +1141,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi from __future__ import annotations - from typing import List, Optional, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -1153,7 +1153,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi class Pets(BaseModel): - __root__: List[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: list[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -1173,8 +1173,8 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[Fax]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[Fax]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) @@ -1182,7 +1182,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1190,7 +1190,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1214,7 +1214,7 @@ The `--disable-appending-item-suffix` flag configures the code generation behavi class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1512,7 +1512,7 @@ the file to the header, making it easy to reproduce the generation. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1524,7 +1524,7 @@ the file to the header, making it easy to reproduce the generation. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -1534,7 +1534,7 @@ the file to the header, making it easy to reproduce the generation. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1542,7 +1542,7 @@ the file to the header, making it easy to reproduce the generation. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1566,7 +1566,7 @@ the file to the header, making it easy to reproduce the generation. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -1789,7 +1789,7 @@ The `--enable-version-header` flag configures the code generation behavior. from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -1801,7 +1801,7 @@ The `--enable-version-header` flag configures the code generation behavior. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -1811,7 +1811,7 @@ The `--enable-version-header` flag configures the code generation behavior. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -1819,7 +1819,7 @@ The `--enable-version-header` flag configures the code generation behavior. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -1843,7 +1843,7 @@ The `--enable-version-header` flag configures the code generation behavior. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2071,7 +2071,7 @@ model settings like Config classes, enabling customization beyond standard optio from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, Field @@ -2086,7 +2086,7 @@ model settings like Config classes, enabling customization beyond standard optio class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -2096,7 +2096,7 @@ model settings like Config classes, enabling customization beyond standard optio class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -2104,7 +2104,7 @@ model settings like Config classes, enabling customization beyond standard optio class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -2128,7 +2128,7 @@ model settings like Config classes, enabling customization beyond standard optio class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2148,7 +2148,7 @@ model settings like Config classes, enabling customization beyond standard optio from __future__ import annotations - from typing import List, Optional + from typing import Optional from pydantic import AnyUrl, BaseModel, ConfigDict, Field, RootModel @@ -2163,8 +2163,8 @@ model settings like Config classes, enabling customization beyond standard optio tag: Optional[str] = None - class Pets(RootModel[List[Pet]]): - root: List[Pet] + class Pets(RootModel[list[Pet]]): + root: list[Pet] class User(BaseModel): @@ -2173,16 +2173,16 @@ model settings like Config classes, enabling customization beyond standard optio tag: Optional[str] = None - class Users(RootModel[List[User]]): - root: List[User] + class Users(RootModel[list[User]]): + root: list[User] class Id(RootModel[str]): root: str - class Rules(RootModel[List[str]]): - root: List[str] + class Rules(RootModel[list[str]]): + root: list[str] class Error(BaseModel): @@ -2205,8 +2205,8 @@ model settings like Config classes, enabling customization beyond standard optio ) - class Apis(RootModel[List[Api]]): - root: List[Api] + class Apis(RootModel[list[Api]]): + root: list[Api] class Event(BaseModel): diff --git a/docs/cli-reference/typing-customization.md b/docs/cli-reference/typing-customization.md index c6b582e63..1dc272668 100644 --- a/docs/cli-reference/typing-customization.md +++ b/docs/cli-reference/typing-customization.md @@ -9,6 +9,7 @@ | [`--enum-field-as-literal`](#enum-field-as-literal) | Convert all enum fields to Literal types instead of Enum cla... | | [`--ignore-enum-constraints`](#ignore-enum-constraints) | Ignore enum constraints and use base string type instead of ... | | [`--no-use-specialized-enum`](#no-use-specialized-enum) | Disable specialized Enum classes for Python 3.11+ code gener... | +| [`--no-use-standard-collections`](#no-use-standard-collections) | Use built-in dict/list instead of typing.Dict/List. | | [`--output-datetime-class`](#output-datetime-class) | Specify datetime class type for date-time schema fields. | | [`--strict-types`](#strict-types) | Enable strict type validation for specified Python types. | | [`--type-mappings`](#type-mappings) | Override default type mappings for schema formats. | @@ -17,7 +18,6 @@ | [`--use-generic-container-types`](#use-generic-container-types) | Use typing.Dict/List instead of dict/list for container type... | | [`--use-non-positive-negative-number-constrained-types`](#use-non-positive-negative-number-constrained-types) | Use NonPositive/NonNegative types for number constraints. | | [`--use-pendulum`](#use-pendulum) | Use pendulum types for date/time fields instead of datetime ... | -| [`--use-standard-collections`](#use-standard-collections) | Use built-in dict/list instead of typing.Dict/List. | | [`--use-type-alias`](#use-type-alias) | Use TypeAlias instead of root models for type definitions (e... | | [`--use-union-operator`](#use-union-operator) | Test GraphQL annotated types with standard collections and u... | | [`--use-unique-items-as-set`](#use-unique-items-as-set) | Generate set types for arrays with uniqueItems constraint. | @@ -328,7 +328,7 @@ other properties separate. from __future__ import annotations - from typing import Any, Dict, List, Optional + from typing import Any, Optional from pydantic import BaseModel, EmailStr, Field, conint, constr @@ -408,7 +408,7 @@ other properties separate. class ArrayDatatype(BaseModel): - __root__: List[str] + __root__: list[str] class RefToArrayAllOf(BaseModel): @@ -424,7 +424,7 @@ other properties separate. class PatternPropsDatatype(BaseModel): - __root__: Dict[constr(regex=r'^S_'), str] + __root__: dict[constr(regex=r'^S_'), str] class RefToPatternPropsAllOf(BaseModel): @@ -495,7 +495,7 @@ other properties separate. from __future__ import annotations - from typing import Any, Dict, List, Optional + from typing import Any, Optional from pydantic import BaseModel, EmailStr, Field, conint, constr @@ -575,7 +575,7 @@ other properties separate. class ArrayDatatype(BaseModel): - __root__: List[str] + __root__: list[str] class RefToArrayAllOf(BaseModel): @@ -591,7 +591,7 @@ other properties separate. class PatternPropsDatatype(BaseModel): - __root__: Dict[constr(regex=r'^S_'), str] + __root__: dict[constr(regex=r'^S_'), str] class RefToPatternPropsAllOf(BaseModel): @@ -712,7 +712,7 @@ postponed evaluation of annotations (PEP 563). # filename: keep_model_order_field_references.json # timestamp: 2019-07-26T00:00:00+00:00 - from typing import List, Optional + from typing import Optional from pydantic import BaseModel @@ -722,7 +722,7 @@ postponed evaluation of annotations (PEP 563). class DescriptionType(BaseModel): - metadata: Optional[List[Metadata]] = None + metadata: Optional[list[Metadata]] = None ``` --- @@ -916,7 +916,7 @@ of Enum classes for all enumerations. from __future__ import annotations from enum import Enum - from typing import List, Literal, Optional, Union + from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -937,7 +937,7 @@ of Enum classes for all enumerations. class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Kind1(Enum): @@ -992,7 +992,7 @@ of Enum classes for all enumerations. class ArrayEnum(BaseModel): - __root__: List[Union[Literal['cat'], Literal['dog']]] + __root__: list[Union[Literal['cat'], Literal['dog']]] class NestedVersionEnum(Enum): @@ -1068,14 +1068,14 @@ of Enum classes for all enumerations. from __future__ import annotations - from typing import List, Literal, Optional + from typing import Literal, Optional from pydantic import BaseModel, Field class Config(BaseModel): mode: Optional[Literal['fast', 'slow']] = Field(None, title='Mode') - modes: Optional[List[Literal['a', 'b']]] = None + modes: Optional[list[Literal['a', 'b']]] = None ``` === "GraphQL" @@ -1595,6 +1595,216 @@ Python 3.11+, falling back to standard Enum classes instead. --- +## `--no-use-standard-collections` {#no-use-standard-collections} + +Use built-in dict/list instead of typing.Dict/List. + +The `--use-standard-collections` flag generates built-in container types +(dict, list) instead of typing module equivalents. This produces cleaner +code for Python 3.10+ where built-in types support subscripting. + +**Related:** [`--use-generic-container-types`](typing-customization.md#use-generic-container-types) + +**See also:** [Python Version Compatibility](../python-version-compatibility.md) + +!!! tip "Usage" + + ```bash + datamodel-codegen --input schema.json --use-standard-collections # (1)! + ``` + + 1. :material-arrow-left: `--no-use-standard-collections` - the option documented here + +??? example "Examples" + + **Input Schema:** + + ```json + { + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "test.json", + "description": "test", + "type": "object", + "required": [ + "test_id", + "test_ip", + "result", + "nested_object_result", + "nested_enum_result" + ], + "properties": { + "test_id": { + "type": "string", + "description": "test ID" + }, + "test_ip": { + "type": "string", + "description": "test IP" + }, + "result": { + "type": "object", + "additionalProperties": { + "type": "integer" + } + }, + "nested_object_result": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "status":{ + "type": "integer" + } + }, + "required": ["status"] + } + }, + "nested_enum_result": { + "type": "object", + "additionalProperties": { + "enum": ["red", "green"] + } + }, + "all_of_result" :{ + "type" : "object", + "additionalProperties" : + { + "allOf" : [ + { "$ref" : "#/definitions/User" }, + { "type" : "object", + "properties": { + "description": {"type" : "string" } + } + } + ] + } + }, + "one_of_result" :{ + "type" : "object", + "additionalProperties" : + { + "oneOf" : [ + { "$ref" : "#/definitions/User" }, + { "type" : "object", + "properties": { + "description": {"type" : "string" } + } + } + ] + } + }, + "any_of_result" :{ + "type" : "object", + "additionalProperties" : + { + "anyOf" : [ + { "$ref" : "#/definitions/User" }, + { "type" : "object", + "properties": { + "description": {"type" : "string" } + } + } + ] + } + }, + "all_of_with_unknown_object" :{ + "type" : "object", + "additionalProperties" : + { + "allOf" : [ + { "$ref" : "#/definitions/User" }, + { "description": "TODO" } + ] + } + }, + "objectRef": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/User" + } + }, + "deepNestedObjectRef": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/User" + } + } + } + } + }, + "definitions": { + "User": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + ``` + + **Output:** + + ```python + # generated by datamodel-codegen: + # filename: root_model_with_additional_properties.json + # timestamp: 2019-07-26T00:00:00+00:00 + + from __future__ import annotations + + from enum import Enum + from typing import Optional, Union + + from pydantic import BaseModel, Field + + + class NestedObjectResult(BaseModel): + status: int + + + class NestedEnumResult(Enum): + red = 'red' + green = 'green' + + + class OneOfResult(BaseModel): + description: Optional[str] = None + + + class AnyOfResult(BaseModel): + description: Optional[str] = None + + + class User(BaseModel): + name: Optional[str] = None + + + class AllOfResult(User): + description: Optional[str] = None + + + class Model(BaseModel): + test_id: str = Field(..., description='test ID') + test_ip: str = Field(..., description='test IP') + result: dict[str, int] + nested_object_result: dict[str, NestedObjectResult] + nested_enum_result: dict[str, NestedEnumResult] + all_of_result: Optional[dict[str, AllOfResult]] = None + one_of_result: Optional[dict[str, Union[User, OneOfResult]]] = None + any_of_result: Optional[dict[str, Union[User, AnyOfResult]]] = None + all_of_with_unknown_object: Optional[dict[str, User]] = None + objectRef: Optional[dict[str, User]] = None + deepNestedObjectRef: Optional[dict[str, dict[str, dict[str, User]]]] = None + ``` + +--- + ## `--output-datetime-class` {#output-datetime-class} Specify datetime class type for date-time schema fields. @@ -1848,7 +2058,7 @@ The `--type-mappings` flag configures the code generation behavior. Test GraphQL annotated types with standard collections and union operator. -**Related:** [`--field-constraints`](field-customization.md#field-constraints), [`--use-standard-collections`](typing-customization.md#use-standard-collections) +**Related:** [`--field-constraints`](field-customization.md#field-constraints), [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) **See also:** [Python Version Compatibility](../python-version-compatibility.md) @@ -2107,7 +2317,7 @@ Test GraphQL annotated types with standard collections and union operator. from __future__ import annotations - from typing import Annotated, List, Optional, Union + from typing import Annotated, Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -2119,7 +2329,7 @@ Test GraphQL annotated types with standard collections and union operator. class Pets(BaseModel): - __root__: Annotated[List[Pet], Field(max_items=10, min_items=1, unique_items=True)] + __root__: Annotated[list[Pet], Field(max_items=10, min_items=1, unique_items=True)] class UID(BaseModel): @@ -2139,8 +2349,8 @@ Test GraphQL annotated types with standard collections and union operator. name: Annotated[str, Field(max_length=256)] tag: Annotated[Optional[str], Field(max_length=64)] = None uid: UID - phones: Annotated[Optional[List[Phone]], Field(max_items=10)] = None - fax: Optional[List[FaxItem]] = None + phones: Annotated[Optional[list[Phone]], Field(max_items=10)] = None + fax: Optional[list[FaxItem]] = None height: Annotated[Optional[Union[int, float]], Field(ge=1.0, le=300.0)] = None weight: Annotated[Optional[Union[float, int]], Field(ge=1.0, le=1000.0)] = None age: Annotated[Optional[int], Field(gt=0, le=200)] = None @@ -2148,7 +2358,7 @@ Test GraphQL annotated types with standard collections and union operator. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -2156,7 +2366,7 @@ Test GraphQL annotated types with standard collections and union operator. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -2180,7 +2390,7 @@ Test GraphQL annotated types with standard collections and union operator. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): @@ -2328,7 +2538,7 @@ The `--use-generic-container-types` flag generates typing module generic containers (Dict, List, etc.) instead of built-in types. This is useful for Python 3.8 compatibility or when explicit typing imports are preferred. -**Related:** [`--use-standard-collections`](typing-customization.md#use-standard-collections) +**Related:** [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) **See also:** [Python Version Compatibility](../python-version-compatibility.md) @@ -2483,8 +2693,9 @@ Python 3.8 compatibility or when explicit typing imports are preferred. from __future__ import annotations + from collections.abc import Mapping from enum import Enum - from typing import Mapping, Optional, Union + from typing import Optional, Union from pydantic import BaseModel, Field @@ -2691,216 +2902,6 @@ working with the pendulum library for enhanced timezone and date handling. --- -## `--use-standard-collections` {#use-standard-collections} - -Use built-in dict/list instead of typing.Dict/List. - -The `--use-standard-collections` flag generates built-in container types -(dict, list) instead of typing module equivalents. This produces cleaner -code for Python 3.10+ where built-in types support subscripting. - -**Related:** [`--use-generic-container-types`](typing-customization.md#use-generic-container-types) - -**See also:** [Python Version Compatibility](../python-version-compatibility.md) - -!!! tip "Usage" - - ```bash - datamodel-codegen --input schema.json --use-standard-collections # (1)! - ``` - - 1. :material-arrow-left: `--use-standard-collections` - the option documented here - -??? example "Examples" - - **Input Schema:** - - ```json - { - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "test.json", - "description": "test", - "type": "object", - "required": [ - "test_id", - "test_ip", - "result", - "nested_object_result", - "nested_enum_result" - ], - "properties": { - "test_id": { - "type": "string", - "description": "test ID" - }, - "test_ip": { - "type": "string", - "description": "test IP" - }, - "result": { - "type": "object", - "additionalProperties": { - "type": "integer" - } - }, - "nested_object_result": { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "status":{ - "type": "integer" - } - }, - "required": ["status"] - } - }, - "nested_enum_result": { - "type": "object", - "additionalProperties": { - "enum": ["red", "green"] - } - }, - "all_of_result" :{ - "type" : "object", - "additionalProperties" : - { - "allOf" : [ - { "$ref" : "#/definitions/User" }, - { "type" : "object", - "properties": { - "description": {"type" : "string" } - } - } - ] - } - }, - "one_of_result" :{ - "type" : "object", - "additionalProperties" : - { - "oneOf" : [ - { "$ref" : "#/definitions/User" }, - { "type" : "object", - "properties": { - "description": {"type" : "string" } - } - } - ] - } - }, - "any_of_result" :{ - "type" : "object", - "additionalProperties" : - { - "anyOf" : [ - { "$ref" : "#/definitions/User" }, - { "type" : "object", - "properties": { - "description": {"type" : "string" } - } - } - ] - } - }, - "all_of_with_unknown_object" :{ - "type" : "object", - "additionalProperties" : - { - "allOf" : [ - { "$ref" : "#/definitions/User" }, - { "description": "TODO" } - ] - } - }, - "objectRef": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/User" - } - }, - "deepNestedObjectRef": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/User" - } - } - } - } - }, - "definitions": { - "User": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - ``` - - **Output:** - - ```python - # generated by datamodel-codegen: - # filename: root_model_with_additional_properties.json - # timestamp: 2019-07-26T00:00:00+00:00 - - from __future__ import annotations - - from enum import Enum - from typing import Optional, Union - - from pydantic import BaseModel, Field - - - class NestedObjectResult(BaseModel): - status: int - - - class NestedEnumResult(Enum): - red = 'red' - green = 'green' - - - class OneOfResult(BaseModel): - description: Optional[str] = None - - - class AnyOfResult(BaseModel): - description: Optional[str] = None - - - class User(BaseModel): - name: Optional[str] = None - - - class AllOfResult(User): - description: Optional[str] = None - - - class Model(BaseModel): - test_id: str = Field(..., description='test ID') - test_ip: str = Field(..., description='test IP') - result: dict[str, int] - nested_object_result: dict[str, NestedObjectResult] - nested_enum_result: dict[str, NestedEnumResult] - all_of_result: Optional[dict[str, AllOfResult]] = None - one_of_result: Optional[dict[str, Union[User, OneOfResult]]] = None - any_of_result: Optional[dict[str, Union[User, AnyOfResult]]] = None - all_of_with_unknown_object: Optional[dict[str, User]] = None - objectRef: Optional[dict[str, User]] = None - deepNestedObjectRef: Optional[dict[str, dict[str, dict[str, User]]]] = None - ``` - ---- - ## `--use-type-alias` {#use-type-alias} Use TypeAlias instead of root models for type definitions (experimental). @@ -2973,7 +2974,7 @@ syntax. This feature is experimental. from __future__ import annotations - from typing import Annotated, Any, List, Optional, TypeAlias, Union + from typing import Annotated, Any, Optional, TypeAlias, Union from pydantic import BaseModel, Field @@ -2986,7 +2987,7 @@ syntax. This feature is experimental. UnionType: TypeAlias = Union[str, int] - ArrayType: TypeAlias = List[str] + ArrayType: TypeAlias = list[str] AnnotatedType: TypeAlias = Annotated[ @@ -3095,7 +3096,7 @@ syntax. This feature is experimental. Test GraphQL annotated types with standard collections and union operator. -**Related:** [`--use-standard-collections`](typing-customization.md#use-standard-collections) +**Related:** [`--no-use-standard-collections`](typing-customization.md#no-use-standard-collections) **See also:** [Python Version Compatibility](../python-version-compatibility.md) @@ -3423,7 +3424,7 @@ to true, enforcing uniqueness at the type level. from __future__ import annotations - from typing import List, Optional, Set, Union + from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field @@ -3435,7 +3436,7 @@ to true, enforcing uniqueness at the type level. class Pets(BaseModel): - __root__: Set[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) + __root__: set[Pet] = Field(..., max_items=10, min_items=1, unique_items=True) class UID(BaseModel): @@ -3455,8 +3456,8 @@ to true, enforcing uniqueness at the type level. name: str = Field(..., max_length=256) tag: Optional[str] = Field(None, max_length=64) uid: UID - phones: Optional[List[Phone]] = Field(None, max_items=10) - fax: Optional[List[FaxItem]] = None + phones: Optional[list[Phone]] = Field(None, max_items=10) + fax: Optional[list[FaxItem]] = None height: Optional[Union[int, float]] = Field(None, ge=1.0, le=300.0) weight: Optional[Union[float, int]] = Field(None, ge=1.0, le=1000.0) age: Optional[int] = Field(None, gt=0, le=200) @@ -3464,7 +3465,7 @@ to true, enforcing uniqueness at the type level. class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -3472,7 +3473,7 @@ to true, enforcing uniqueness at the type level. class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -3496,7 +3497,7 @@ to true, enforcing uniqueness at the type level. class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/jsonschema/combined_array.py b/tests/data/expected/main/jsonschema/combined_array.py index e955ffabd..21965c895 100644 --- a/tests/data/expected/main/jsonschema/combined_array.py +++ b/tests/data/expected/main/jsonschema/combined_array.py @@ -5,7 +5,7 @@ from __future__ import annotations from enum import Enum -from typing import List, Optional, Union +from typing import Optional, Union from pydantic import BaseModel, Field @@ -16,7 +16,7 @@ class Pet1(BaseModel): class Pet(BaseModel): - __root__: Union[List[Pet1], Pet1] = Field(..., title='Pet') + __root__: Union[list[Pet1], Pet1] = Field(..., title='Pet') class CombinedEnum1(Enum): @@ -38,7 +38,7 @@ class CombinedSelf1(BaseModel): class CombinedSelf(BaseModel): - __root__: Union[List[CombinedSelf1], CombinedSelf1] + __root__: Union[list[CombinedSelf1], CombinedSelf1] class CombinedSelfEnum1(BaseModel): @@ -52,7 +52,7 @@ class CombinedSelfEnum2(Enum): class CombinedSelfEnum(BaseModel): __root__: Union[ - List[Union[CombinedSelfEnum1, CombinedSelfEnum2]], + list[Union[CombinedSelfEnum1, CombinedSelfEnum2]], CombinedSelfEnum1, CombinedSelfEnum2, ] @@ -76,7 +76,7 @@ class CustomRootModel(BaseModel): class CombinedEnum(BaseModel): - __root__: Union[List[Kind], CombinedEnum1] + __root__: Union[list[Kind], CombinedEnum1] class CombinedAllOf1(Kind, Id): @@ -84,7 +84,7 @@ class CombinedAllOf1(Kind, Id): class CombinedAllOf(BaseModel): - __root__: Union[List[Kind], CombinedAllOf1] + __root__: Union[list[Kind], CombinedAllOf1] class CombinedAllOfField(Kind, Id): @@ -96,11 +96,11 @@ class CombinedAllOfObjectField(Kind, Id): class CombinedObjectField(BaseModel): - CombinedEnumField: Optional[Union[List[Kind], CombinedEnumField]] = None - CombinedAllOfField: Optional[Union[List[Kind], CombinedAllOfField]] = None - CombinedObjectField: Optional[Union[List[Kind], CombinedObjectField1]] = None + CombinedEnumField: Optional[Union[list[Kind], CombinedEnumField]] = None + CombinedAllOfField: Optional[Union[list[Kind], CombinedAllOfField]] = None + CombinedObjectField: Optional[Union[list[Kind], CombinedObjectField1]] = None CombinedAllOfObjectField: Optional[ - Union[List[Kind], CombinedAllOfObjectField] + Union[list[Kind], CombinedAllOfObjectField] ] = None @@ -110,7 +110,7 @@ class CombinedSelfAllOf1(Kind, Id): class CombinedSelfAllOf(BaseModel): __root__: Union[ - List[Union[CombinedSelfAllOf1, CombinedSelfAllOf2]], + list[Union[CombinedSelfAllOf1, CombinedSelfAllOf2]], CombinedSelfAllOf1, CombinedSelfAllOf2, ] diff --git a/tests/data/expected/main/openapi/enum_models/all.py b/tests/data/expected/main/openapi/enum_models/all.py index 40566d82b..c05faec72 100644 --- a/tests/data/expected/main/openapi/enum_models/all.py +++ b/tests/data/expected/main/openapi/enum_models/all.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Literal, Optional, Union +from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -20,7 +20,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Animal(BaseModel): @@ -57,7 +57,7 @@ class SingleEnum(BaseModel): class ArrayEnum(BaseModel): - __root__: List[Union[Literal['cat'], Literal['dog']]] + __root__: list[Union[Literal['cat'], Literal['dog']]] class NestedNullableEnum(BaseModel): diff --git a/tests/data/expected/main/openapi/enum_models/as_literal.py b/tests/data/expected/main/openapi/enum_models/as_literal.py index 40566d82b..c05faec72 100644 --- a/tests/data/expected/main/openapi/enum_models/as_literal.py +++ b/tests/data/expected/main/openapi/enum_models/as_literal.py @@ -4,7 +4,7 @@ from __future__ import annotations -from typing import List, Literal, Optional, Union +from typing import Literal, Optional, Union from pydantic import BaseModel, Field @@ -20,7 +20,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class Animal(BaseModel): @@ -57,7 +57,7 @@ class SingleEnum(BaseModel): class ArrayEnum(BaseModel): - __root__: List[Union[Literal['cat'], Literal['dog']]] + __root__: list[Union[Literal['cat'], Literal['dog']]] class NestedNullableEnum(BaseModel): diff --git a/tests/data/expected/main/openapi/pyproject.py b/tests/data/expected/main/openapi/pyproject.py index 0ad6508ae..348e2f25d 100644 --- a/tests/data/expected/main/openapi/pyproject.py +++ b/tests/data/expected/main/openapi/pyproject.py @@ -6,10 +6,7 @@ annotations, ) -from typing import ( - List, - Optional, -) +from typing import Optional from pydantic import ( AnyUrl, @@ -25,7 +22,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -35,7 +32,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -43,7 +40,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -83,7 +80,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): diff --git a/tests/data/expected/main/openapi/use_generic_container_types/_internal.py b/tests/data/expected/main/openapi/use_generic_container_types/_internal.py index 5d523a772..0e6512987 100644 --- a/tests/data/expected/main/openapi/use_generic_container_types/_internal.py +++ b/tests/data/expected/main/openapi/use_generic_container_types/_internal.py @@ -4,7 +4,8 @@ from __future__ import annotations -from typing import Optional, Sequence +from collections.abc import Sequence +from typing import Optional from pydantic import BaseModel diff --git a/tests/data/expected/main/openapi/use_generic_container_types/collections.py b/tests/data/expected/main/openapi/use_generic_container_types/collections.py index cc6b2d417..b75ba6c93 100644 --- a/tests/data/expected/main/openapi/use_generic_container_types/collections.py +++ b/tests/data/expected/main/openapi/use_generic_container_types/collections.py @@ -4,8 +4,9 @@ from __future__ import annotations +from collections.abc import Sequence from enum import Enum -from typing import Optional, Sequence +from typing import Optional from pydantic import AnyUrl, BaseModel, Field diff --git a/tests/data/expected/main/openapi/use_generic_container_types/foo/bar.py b/tests/data/expected/main/openapi/use_generic_container_types/foo/bar.py index c4a5ccd9e..b02ab60a7 100644 --- a/tests/data/expected/main/openapi/use_generic_container_types/foo/bar.py +++ b/tests/data/expected/main/openapi/use_generic_container_types/foo/bar.py @@ -4,7 +4,8 @@ from __future__ import annotations -from typing import Any, Mapping, Optional, Sequence +from collections.abc import Mapping, Sequence +from typing import Any, Optional from pydantic import BaseModel diff --git a/tests/data/expected/main/openapi/use_generic_container_types/models.py b/tests/data/expected/main/openapi/use_generic_container_types/models.py index 0a450c635..9e93649df 100644 --- a/tests/data/expected/main/openapi/use_generic_container_types/models.py +++ b/tests/data/expected/main/openapi/use_generic_container_types/models.py @@ -4,8 +4,9 @@ from __future__ import annotations +from collections.abc import Mapping, Sequence from enum import Enum -from typing import Any, Mapping, Optional, Sequence, Union +from typing import Any, Optional, Union from pydantic import BaseModel diff --git a/tests/data/expected/main_kr/pyproject/output.py b/tests/data/expected/main_kr/pyproject/output.py index e72d51142..2ac1a46ce 100644 --- a/tests/data/expected/main_kr/pyproject/output.py +++ b/tests/data/expected/main_kr/pyproject/output.py @@ -6,10 +6,7 @@ annotations, ) -from typing import ( - List, - Optional, -) +from typing import Optional from pydantic import ( AnyUrl, @@ -25,7 +22,7 @@ class Pet(BaseModel): class Pets(BaseModel): - __root__: List[Pet] + __root__: list[Pet] class User(BaseModel): @@ -35,7 +32,7 @@ class User(BaseModel): class Users(BaseModel): - __root__: List[User] + __root__: list[User] class Id(BaseModel): @@ -43,7 +40,7 @@ class Id(BaseModel): class Rules(BaseModel): - __root__: List[str] + __root__: list[str] class Error(BaseModel): @@ -79,7 +76,7 @@ class Api(BaseModel): class Apis(BaseModel): - __root__: List[Api] + __root__: list[Api] class Event(BaseModel): From e5e637f8e99d22bfc9b47f85d0406fabb7bd4b83 Mon Sep 17 00:00:00 2001 From: Koudai Aono Date: Sat, 20 Dec 2025 02:21:00 +0900 Subject: [PATCH 4/4] feat: Update type hints to use frozenset and remove unnecessary imports (#2701) --- src/datamodel_code_generator/types.py | 6 +++--- ...nstraints_pydantic_v2_use_generic_container_types_set.py | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/datamodel_code_generator/types.py b/src/datamodel_code_generator/types.py index a6dbea3e8..9f0ee0694 100644 --- a/src/datamodel_code_generator/types.py +++ b/src/datamodel_code_generator/types.py @@ -37,7 +37,6 @@ from datamodel_code_generator.imports import ( IMPORT_ABC_MAPPING, IMPORT_ABC_SEQUENCE, - IMPORT_ABC_SET, IMPORT_ANY, IMPORT_DICT, IMPORT_FROZEN_SET, @@ -77,6 +76,7 @@ STANDARD_DICT = "dict" STANDARD_LIST = "list" STANDARD_SET = "set" +STANDARD_FROZEN_SET = "frozenset" STR = "str" NOT_REQUIRED = "NotRequired" @@ -458,10 +458,10 @@ def imports(self) -> Iterator[Import]: if self.use_generic_container: if self.use_standard_collections: + # frozenset is builtin, no import needed for is_set imports = ( *imports, (self.is_list, IMPORT_ABC_SEQUENCE), - (self.is_set, IMPORT_ABC_SET), (self.is_dict, IMPORT_ABC_MAPPING), ) else: @@ -578,7 +578,7 @@ def type_hint(self) -> str: # noqa: PLR0912, PLR0915 type_ = f"{list_}[{type_}]" if type_ else list_ elif self.is_set: if self.use_generic_container: - set_ = FROZEN_SET + set_ = STANDARD_FROZEN_SET if self.use_standard_collections else FROZEN_SET elif self.use_standard_collections: set_ = STANDARD_SET else: diff --git a/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types_set.py b/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types_set.py index 762098665..6191029c7 100644 --- a/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types_set.py +++ b/tests/data/expected/main/openapi/with_field_constraints_pydantic_v2_use_generic_container_types_set.py @@ -4,7 +4,7 @@ from __future__ import annotations -from collections.abc import Sequence, Set +from collections.abc import Sequence from typing import Optional, Union from pydantic import AnyUrl, BaseModel, Field, RootModel @@ -16,8 +16,8 @@ class Pet(BaseModel): tag: Optional[str] = Field(None, max_length=64) -class Pets(RootModel[FrozenSet[Pet]]): - root: FrozenSet[Pet] = Field(..., max_length=10, min_length=1) +class Pets(RootModel[frozenset[Pet]]): + root: frozenset[Pet] = Field(..., max_length=10, min_length=1) class UID(RootModel[int]):