fastgenerateapi 1.2.6__tar.gz → 1.2.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/PKG-INFO +1 -1
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/__version__.py +1 -1
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/create_schema_factory.py +36 -24
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/get_all_schema_factory.py +44 -29
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/get_one_schema_factory.py +44 -26
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/update_schema_factory.py +34 -24
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi.egg-info/PKG-INFO +1 -1
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/LICENSE +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/README.md +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/api_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/base_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/create_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/delete_filter_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/delete_tree_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/delete_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/get_all_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/get_one_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/get_relation_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/get_tree_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/base_mixin.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/get_mixin.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/response_mixin.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/save_mixin.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/tool_mixin.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/docx_util.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/file_util.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/pdf_util.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/zip_util.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/sql_get_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/switch_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/update_relation_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/update_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/cache/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/cache/cache_decorator.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/cache/key_builder.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/channel/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/channel/connection_manager.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/channel/consumer.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/channel/websocket_view.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/filter_controller.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/router_controller.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/rpc_controller.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/search_controller.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/ws_controller.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/data_type/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/data_type/data_type.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/data_type/mysql_data_type.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/deps/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/deps/filter_params_deps.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/deps/paginator_deps.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/deps/tree_params_deps.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/example/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/example/models.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/example/routers.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/example/schemas.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/example/views.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/all.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/param_utils.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/response_utils.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/tortoise_utils.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/model/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/model/base_model.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/aes_field.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/enum_field.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/pk_field.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/pwd_field.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/soft_delete_field.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/validator.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/base_model.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/base_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/json_encoders.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/common_function.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/common_schema_factory.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/filter_schema_factory.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/get_relation_schema_factory.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/get_tree_schema_factory.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/response_factory.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/all_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/app_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/db_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/etcd_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/file_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/jwt_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/otlp_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/redis_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/sms_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/settings/system_settings.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/aes.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/auto_discover.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/exception.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/file_utils.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/pwd_utils.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/ramdom_utils.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/snowflake.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/str_util.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/utils/swagger_to_js.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi.egg-info/SOURCES.txt +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi.egg-info/dependency_links.txt +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi.egg-info/top_level.txt +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/script/__init__.py +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/setup.cfg +0 -0
- {fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/setup.py +0 -0
|
@@ -17,6 +17,12 @@ def create_schema_factory(
|
|
|
17
17
|
extra_include: Union[list, tuple, set] = None,
|
|
18
18
|
exclude: Union[list, tuple, set] = None,
|
|
19
19
|
frozen_exclude: Union[list, tuple, set] = ("created_at", "updated_at", "modified_at"),
|
|
20
|
+
pydantic_meta_include: Union[list, tuple, set] = None,
|
|
21
|
+
pydantic_meta_exclude: Optional[bool] = True,
|
|
22
|
+
pydantic_meta_save_include: Optional[bool] = True,
|
|
23
|
+
pydantic_meta_save_exclude: Optional[bool] = True,
|
|
24
|
+
pydantic_meta_create_include: Optional[bool] = True,
|
|
25
|
+
pydantic_meta_create_exclude: Optional[bool] = True,
|
|
20
26
|
name: Optional[str] = None
|
|
21
27
|
) -> Type[T]:
|
|
22
28
|
"""
|
|
@@ -65,34 +71,40 @@ def create_schema_factory(
|
|
|
65
71
|
|
|
66
72
|
include_fields = set()
|
|
67
73
|
exclude_fields = set()
|
|
68
|
-
if hasattr(model_class, "PydanticMeta"):
|
|
69
|
-
if hasattr(model_class.PydanticMeta, "include"):
|
|
70
|
-
include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
|
|
71
|
-
all_fields_info.update(include_fields_dict)
|
|
72
|
-
include_fields.update(include_fields_dict.keys())
|
|
73
|
-
else:
|
|
74
|
-
include_fields.update(all_fields_info.keys())
|
|
75
|
-
if hasattr(model_class.PydanticMeta, "exclude"):
|
|
76
|
-
exclude_fields.update(model_class.PydanticMeta.exclude)
|
|
77
|
-
if hasattr(model_class.PydanticMeta, "save_include"):
|
|
78
|
-
save_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.save_include)
|
|
79
|
-
all_fields_info.update(save_include_fields_dict)
|
|
80
|
-
include_fields.update(save_include_fields_dict.keys())
|
|
81
|
-
if hasattr(model_class.PydanticMeta, "create_include"):
|
|
82
|
-
create_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.create_include)
|
|
83
|
-
all_fields_info.update(create_include_fields_dict)
|
|
84
|
-
include_fields.update(create_include_fields_dict.keys())
|
|
85
|
-
if hasattr(model_class.PydanticMeta, "save_exclude"):
|
|
86
|
-
exclude_fields.update(model_class.PydanticMeta.save_exclude)
|
|
87
|
-
if hasattr(model_class.PydanticMeta, "create_exclude"):
|
|
88
|
-
exclude_fields.update(model_class.PydanticMeta.create_exclude)
|
|
89
|
-
else:
|
|
90
|
-
include_fields.update(all_fields_info.keys())
|
|
91
|
-
|
|
92
74
|
if include:
|
|
93
75
|
include_fields_dict = get_dict_from_pydanticmeta(model_class, include)
|
|
94
76
|
all_fields_info.update(include_fields_dict)
|
|
95
77
|
include_fields.update(include_fields_dict.keys())
|
|
78
|
+
else:
|
|
79
|
+
if hasattr(model_class, "PydanticMeta"):
|
|
80
|
+
if pydantic_meta_include:
|
|
81
|
+
include_fields_dict = get_dict_from_pydanticmeta(model_class, pydantic_meta_include)
|
|
82
|
+
all_fields_info.update(include_fields_dict)
|
|
83
|
+
include_fields.update(include_fields_dict.keys())
|
|
84
|
+
else:
|
|
85
|
+
if hasattr(model_class.PydanticMeta, "include"):
|
|
86
|
+
include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
|
|
87
|
+
all_fields_info.update(include_fields_dict)
|
|
88
|
+
include_fields.update(include_fields_dict.keys())
|
|
89
|
+
else:
|
|
90
|
+
include_fields.update(all_fields_info.keys())
|
|
91
|
+
if pydantic_meta_exclude and hasattr(model_class.PydanticMeta, "exclude"):
|
|
92
|
+
exclude_fields.update(model_class.PydanticMeta.exclude)
|
|
93
|
+
if pydantic_meta_save_include and hasattr(model_class.PydanticMeta, "save_include"):
|
|
94
|
+
save_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.save_include)
|
|
95
|
+
all_fields_info.update(save_include_fields_dict)
|
|
96
|
+
include_fields.update(save_include_fields_dict.keys())
|
|
97
|
+
if pydantic_meta_create_include and hasattr(model_class.PydanticMeta, "create_include"):
|
|
98
|
+
create_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.create_include)
|
|
99
|
+
all_fields_info.update(create_include_fields_dict)
|
|
100
|
+
include_fields.update(create_include_fields_dict.keys())
|
|
101
|
+
if pydantic_meta_save_exclude and hasattr(model_class.PydanticMeta, "save_exclude"):
|
|
102
|
+
exclude_fields.update(model_class.PydanticMeta.save_exclude)
|
|
103
|
+
if pydantic_meta_create_exclude and hasattr(model_class.PydanticMeta, "create_exclude"):
|
|
104
|
+
exclude_fields.update(model_class.PydanticMeta.create_exclude)
|
|
105
|
+
else:
|
|
106
|
+
include_fields.update(all_fields_info.keys())
|
|
107
|
+
|
|
96
108
|
if extra_include:
|
|
97
109
|
include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
|
|
98
110
|
all_fields_info.update(include_fields_dict)
|
|
@@ -23,10 +23,22 @@ def get_all_schema_factory(
|
|
|
23
23
|
include: Union[list, tuple, set] = None,
|
|
24
24
|
extra_include: Union[list, tuple, set] = None,
|
|
25
25
|
exclude: Union[list, tuple, set] = None,
|
|
26
|
+
pydantic_meta_include: Union[list, tuple, set] = None,
|
|
27
|
+
pydantic_meta_exclude: Optional[bool] = True,
|
|
28
|
+
pydantic_meta_get_include: Optional[bool] = True,
|
|
29
|
+
pydantic_meta_get_exclude: Optional[bool] = True,
|
|
30
|
+
pydantic_meta_get_all_include: Optional[bool] = True,
|
|
31
|
+
pydantic_meta_get_all_exclude: Optional[bool] = True,
|
|
26
32
|
name: Optional[str] = None,
|
|
27
33
|
) -> Optional[Type[T]]:
|
|
28
34
|
"""
|
|
29
35
|
Is used to create a GetAllSchema
|
|
36
|
+
参数:
|
|
37
|
+
include:会覆盖所有的值
|
|
38
|
+
extra_include:会在原有的值上添加新值
|
|
39
|
+
exclude:排除值
|
|
40
|
+
pydantic_meta_include: 替换 PydanticMeta 下 include 的属性
|
|
41
|
+
|
|
30
42
|
固定排除 逻辑删除字段
|
|
31
43
|
会默认添加模型下 PydanticMeta 设置的相关属性
|
|
32
44
|
- include: 增改详情列表通用,指定包含字段,不指定默认包含所有字段
|
|
@@ -74,39 +86,42 @@ def get_all_schema_factory(
|
|
|
74
86
|
|
|
75
87
|
include_fields = set()
|
|
76
88
|
exclude_fields = set()
|
|
77
|
-
if hasattr(model_class, "PydanticMeta"):
|
|
78
|
-
if hasattr(model_class.PydanticMeta, "include"):
|
|
79
|
-
include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
|
|
80
|
-
all_fields_info.update(include_fields_dict)
|
|
81
|
-
include_fields.update(include_fields_dict.keys())
|
|
82
|
-
else:
|
|
83
|
-
include_fields.update(all_fields_info.keys())
|
|
84
|
-
if hasattr(model_class.PydanticMeta, "exclude"):
|
|
85
|
-
exclude_fields.update(model_class.PydanticMeta.exclude)
|
|
86
|
-
|
|
87
|
-
if hasattr(model_class.PydanticMeta, "get_include"):
|
|
88
|
-
get_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.get_include)
|
|
89
|
-
all_fields_info.update(get_include_fields_dict)
|
|
90
|
-
include_fields.update(get_include_fields_dict.keys())
|
|
91
|
-
if hasattr(model_class.PydanticMeta, "get_exclude"):
|
|
92
|
-
exclude_fields.update(model_class.PydanticMeta.get_exclude)
|
|
93
|
-
|
|
94
|
-
# get_all_include
|
|
95
|
-
if hasattr(model_class.PydanticMeta, "get_all_include"):
|
|
96
|
-
get_all_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.get_all_include)
|
|
97
|
-
all_fields_info.update(get_all_include_fields_dict)
|
|
98
|
-
include_fields.update(get_all_include_fields_dict.keys())
|
|
99
|
-
# get_all_exclude
|
|
100
|
-
if hasattr(model_class.PydanticMeta, "get_all_exclude"):
|
|
101
|
-
exclude_fields.update(model_class.PydanticMeta.get_all_exclude)
|
|
102
|
-
else:
|
|
103
|
-
include_fields.update(all_fields_info.keys())
|
|
104
|
-
|
|
105
|
-
# 参数处理
|
|
106
89
|
if include:
|
|
107
90
|
include_fields_dict = get_dict_from_pydanticmeta(model_class, include)
|
|
108
91
|
all_fields_info.update(include_fields_dict)
|
|
109
92
|
include_fields.update(include_fields_dict.keys())
|
|
93
|
+
else:
|
|
94
|
+
if hasattr(model_class, "PydanticMeta"):
|
|
95
|
+
if pydantic_meta_include:
|
|
96
|
+
include_fields_dict = get_dict_from_pydanticmeta(model_class, pydantic_meta_include)
|
|
97
|
+
all_fields_info.update(include_fields_dict)
|
|
98
|
+
include_fields.update(include_fields_dict.keys())
|
|
99
|
+
else:
|
|
100
|
+
if hasattr(model_class.PydanticMeta, "include"):
|
|
101
|
+
include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
|
|
102
|
+
all_fields_info.update(include_fields_dict)
|
|
103
|
+
include_fields.update(include_fields_dict.keys())
|
|
104
|
+
else:
|
|
105
|
+
include_fields.update(all_fields_info.keys())
|
|
106
|
+
if pydantic_meta_exclude and hasattr(model_class.PydanticMeta, "exclude"):
|
|
107
|
+
exclude_fields.update(model_class.PydanticMeta.exclude)
|
|
108
|
+
|
|
109
|
+
if pydantic_meta_get_include and hasattr(model_class.PydanticMeta, "get_include"):
|
|
110
|
+
get_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.get_include)
|
|
111
|
+
all_fields_info.update(get_include_fields_dict)
|
|
112
|
+
include_fields.update(get_include_fields_dict.keys())
|
|
113
|
+
if pydantic_meta_get_exclude and hasattr(model_class.PydanticMeta, "get_exclude"):
|
|
114
|
+
exclude_fields.update(model_class.PydanticMeta.get_exclude)
|
|
115
|
+
|
|
116
|
+
if pydantic_meta_get_all_include and hasattr(model_class.PydanticMeta, "get_all_include"):
|
|
117
|
+
get_all_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.get_all_include)
|
|
118
|
+
all_fields_info.update(get_all_include_fields_dict)
|
|
119
|
+
include_fields.update(get_all_include_fields_dict.keys())
|
|
120
|
+
if pydantic_meta_get_all_exclude and hasattr(model_class.PydanticMeta, "get_all_exclude"):
|
|
121
|
+
exclude_fields.update(model_class.PydanticMeta.get_all_exclude)
|
|
122
|
+
else:
|
|
123
|
+
include_fields.update(all_fields_info.keys())
|
|
124
|
+
|
|
110
125
|
if extra_include:
|
|
111
126
|
include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
|
|
112
127
|
all_fields_info.update(include_fields_dict)
|
|
@@ -16,10 +16,22 @@ def get_one_schema_factory(
|
|
|
16
16
|
include: Union[list, tuple, set] = None,
|
|
17
17
|
extra_include: Union[list, tuple, set] = None,
|
|
18
18
|
exclude: Union[list, tuple, set] = None,
|
|
19
|
+
pydantic_meta_include: Union[list, tuple, set] = None,
|
|
20
|
+
pydantic_meta_exclude: Optional[bool] = True,
|
|
21
|
+
pydantic_meta_get_include: Optional[bool] = True,
|
|
22
|
+
pydantic_meta_get_exclude: Optional[bool] = True,
|
|
23
|
+
pydantic_meta_get_one_include: Optional[bool] = True,
|
|
24
|
+
pydantic_meta_get_one_exclude: Optional[bool] = True,
|
|
19
25
|
name: Optional[str] = None
|
|
20
26
|
) -> Type[T]:
|
|
21
27
|
"""
|
|
22
28
|
Is used to create a GetOneSchema
|
|
29
|
+
参数:
|
|
30
|
+
include:会覆盖所有的值
|
|
31
|
+
extra_include:会在原有的值上添加新值
|
|
32
|
+
exclude:排除新值
|
|
33
|
+
pydantic_meta_include: 替换 PydanticMeta 下 include 的属性
|
|
34
|
+
|
|
23
35
|
固定排除 逻辑删除字段
|
|
24
36
|
会默认添加模型下 PydanticMeta 设置的相关属性
|
|
25
37
|
- include: 增改详情列表通用,指定包含字段,不指定默认包含所有字段
|
|
@@ -64,36 +76,42 @@ def get_one_schema_factory(
|
|
|
64
76
|
|
|
65
77
|
include_fields = set()
|
|
66
78
|
exclude_fields = set()
|
|
67
|
-
if hasattr(model_class, "PydanticMeta"):
|
|
68
|
-
if hasattr(model_class.PydanticMeta, "include"):
|
|
69
|
-
include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
|
|
70
|
-
all_fields_info.update(include_fields_dict)
|
|
71
|
-
include_fields.update(include_fields_dict.keys())
|
|
72
|
-
else:
|
|
73
|
-
include_fields.update(all_fields_info.keys())
|
|
74
|
-
if hasattr(model_class.PydanticMeta, "exclude"):
|
|
75
|
-
exclude_fields.update(model_class.PydanticMeta.exclude)
|
|
76
|
-
|
|
77
|
-
if hasattr(model_class.PydanticMeta, "get_include"):
|
|
78
|
-
get_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.get_include)
|
|
79
|
-
all_fields_info.update(get_include_fields_dict)
|
|
80
|
-
include_fields.update(get_include_fields_dict.keys())
|
|
81
|
-
if hasattr(model_class.PydanticMeta, "get_exclude"):
|
|
82
|
-
exclude_fields.update(model_class.PydanticMeta.get_exclude)
|
|
83
|
-
|
|
84
|
-
if hasattr(model_class.PydanticMeta, "get_one_include"):
|
|
85
|
-
get_one_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.get_one_include)
|
|
86
|
-
all_fields_info.update(get_one_include_fields_dict)
|
|
87
|
-
include_fields.update(get_one_include_fields_dict.keys())
|
|
88
|
-
if hasattr(model_class.PydanticMeta, "get_one_exclude"):
|
|
89
|
-
exclude_fields.update(model_class.PydanticMeta.get_one_exclude)
|
|
90
|
-
else:
|
|
91
|
-
include_fields.update(all_fields_info.keys())
|
|
92
|
-
|
|
93
79
|
if include:
|
|
94
80
|
include_fields_dict = get_dict_from_pydanticmeta(model_class, include)
|
|
95
81
|
all_fields_info.update(include_fields_dict)
|
|
96
82
|
include_fields.update(include_fields_dict.keys())
|
|
83
|
+
else:
|
|
84
|
+
if hasattr(model_class, "PydanticMeta"):
|
|
85
|
+
if pydantic_meta_include:
|
|
86
|
+
include_fields_dict = get_dict_from_pydanticmeta(model_class, pydantic_meta_include)
|
|
87
|
+
all_fields_info.update(include_fields_dict)
|
|
88
|
+
include_fields.update(include_fields_dict.keys())
|
|
89
|
+
else:
|
|
90
|
+
if hasattr(model_class.PydanticMeta, "include"):
|
|
91
|
+
include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
|
|
92
|
+
all_fields_info.update(include_fields_dict)
|
|
93
|
+
include_fields.update(include_fields_dict.keys())
|
|
94
|
+
else:
|
|
95
|
+
include_fields.update(all_fields_info.keys())
|
|
96
|
+
if pydantic_meta_exclude and hasattr(model_class.PydanticMeta, "exclude"):
|
|
97
|
+
exclude_fields.update(model_class.PydanticMeta.exclude)
|
|
98
|
+
|
|
99
|
+
if pydantic_meta_get_include and hasattr(model_class.PydanticMeta, "get_include"):
|
|
100
|
+
get_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.get_include)
|
|
101
|
+
all_fields_info.update(get_include_fields_dict)
|
|
102
|
+
include_fields.update(get_include_fields_dict.keys())
|
|
103
|
+
if pydantic_meta_get_exclude and hasattr(model_class.PydanticMeta, "get_exclude"):
|
|
104
|
+
exclude_fields.update(model_class.PydanticMeta.get_exclude)
|
|
105
|
+
|
|
106
|
+
if pydantic_meta_get_one_include and hasattr(model_class.PydanticMeta, "get_one_include"):
|
|
107
|
+
get_one_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.get_one_include)
|
|
108
|
+
all_fields_info.update(get_one_include_fields_dict)
|
|
109
|
+
include_fields.update(get_one_include_fields_dict.keys())
|
|
110
|
+
if pydantic_meta_get_one_exclude and hasattr(model_class.PydanticMeta, "get_one_exclude"):
|
|
111
|
+
exclude_fields.update(model_class.PydanticMeta.get_one_exclude)
|
|
112
|
+
else:
|
|
113
|
+
include_fields.update(all_fields_info.keys())
|
|
114
|
+
|
|
97
115
|
if extra_include:
|
|
98
116
|
include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
|
|
99
117
|
all_fields_info.update(include_fields_dict)
|
|
@@ -17,6 +17,12 @@ def update_schema_factory(
|
|
|
17
17
|
extra_include: Union[list, tuple, set] = None,
|
|
18
18
|
exclude: Union[list, tuple, set] = None,
|
|
19
19
|
frozen_exclude: Union[list, tuple, set] = ("created_at", "updated_at", "modified_at"),
|
|
20
|
+
pydantic_meta_include: Union[list, tuple, set] = None,
|
|
21
|
+
pydantic_meta_exclude: Optional[bool] = True,
|
|
22
|
+
pydantic_meta_save_include: Optional[bool] = True,
|
|
23
|
+
pydantic_meta_save_exclude: Optional[bool] = True,
|
|
24
|
+
pydantic_meta_update_include: Optional[bool] = True,
|
|
25
|
+
pydantic_meta_update_exclude: Optional[bool] = True,
|
|
20
26
|
name: Optional[str] = None
|
|
21
27
|
) -> Type[T]:
|
|
22
28
|
"""
|
|
@@ -65,34 +71,38 @@ def update_schema_factory(
|
|
|
65
71
|
|
|
66
72
|
include_fields = set()
|
|
67
73
|
exclude_fields = set()
|
|
68
|
-
if hasattr(model_class, "PydanticMeta"):
|
|
69
|
-
if hasattr(model_class.PydanticMeta, "include"):
|
|
70
|
-
include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
|
|
71
|
-
all_fields_info.update(include_fields_dict)
|
|
72
|
-
include_fields.update(include_fields_dict.keys())
|
|
73
|
-
else:
|
|
74
|
-
include_fields.update(all_fields_info.keys())
|
|
75
|
-
if hasattr(model_class.PydanticMeta, "exclude"):
|
|
76
|
-
exclude_fields.update(model_class.PydanticMeta.exclude)
|
|
77
|
-
if hasattr(model_class.PydanticMeta, "save_include"):
|
|
78
|
-
save_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.save_include)
|
|
79
|
-
all_fields_info.update(save_include_fields_dict)
|
|
80
|
-
include_fields.update(save_include_fields_dict.keys())
|
|
81
|
-
if hasattr(model_class.PydanticMeta, "update_include"):
|
|
82
|
-
update_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.update_include)
|
|
83
|
-
all_fields_info.update(update_include_fields_dict)
|
|
84
|
-
include_fields.update(update_include_fields_dict.keys())
|
|
85
|
-
if hasattr(model_class.PydanticMeta, "save_exclude"):
|
|
86
|
-
exclude_fields.update(model_class.PydanticMeta.save_exclude)
|
|
87
|
-
if hasattr(model_class.PydanticMeta, "update_exclude"):
|
|
88
|
-
exclude_fields.update(model_class.PydanticMeta.update_exclude)
|
|
89
|
-
else:
|
|
90
|
-
include_fields.update(all_fields_info.keys())
|
|
91
|
-
|
|
92
74
|
if include:
|
|
93
75
|
include_fields_dict = get_dict_from_pydanticmeta(model_class, include)
|
|
94
76
|
all_fields_info.update(include_fields_dict)
|
|
95
77
|
include_fields.update(include_fields_dict.keys())
|
|
78
|
+
else:
|
|
79
|
+
if hasattr(model_class, "PydanticMeta"):
|
|
80
|
+
if pydantic_meta_include:
|
|
81
|
+
include_fields_dict = get_dict_from_pydanticmeta(model_class, pydantic_meta_include)
|
|
82
|
+
all_fields_info.update(include_fields_dict)
|
|
83
|
+
include_fields.update(include_fields_dict.keys())
|
|
84
|
+
else:
|
|
85
|
+
if hasattr(model_class.PydanticMeta, "include"):
|
|
86
|
+
include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
|
|
87
|
+
all_fields_info.update(include_fields_dict)
|
|
88
|
+
include_fields.update(include_fields_dict.keys())
|
|
89
|
+
else:
|
|
90
|
+
include_fields.update(all_fields_info.keys())
|
|
91
|
+
if pydantic_meta_exclude and hasattr(model_class.PydanticMeta, "exclude"):
|
|
92
|
+
exclude_fields.update(model_class.PydanticMeta.exclude)
|
|
93
|
+
if pydantic_meta_save_include and hasattr(model_class.PydanticMeta, "save_include"):
|
|
94
|
+
save_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.save_include)
|
|
95
|
+
all_fields_info.update(save_include_fields_dict)
|
|
96
|
+
include_fields.update(save_include_fields_dict.keys())
|
|
97
|
+
if pydantic_meta_update_include and hasattr(model_class.PydanticMeta, "update_include"):
|
|
98
|
+
update_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.update_include)
|
|
99
|
+
all_fields_info.update(update_include_fields_dict)
|
|
100
|
+
include_fields.update(update_include_fields_dict.keys())
|
|
101
|
+
if pydantic_meta_save_exclude and hasattr(model_class.PydanticMeta, "save_exclude"):
|
|
102
|
+
exclude_fields.update(model_class.PydanticMeta.save_exclude)
|
|
103
|
+
if pydantic_meta_update_exclude and hasattr(model_class.PydanticMeta, "update_exclude"):
|
|
104
|
+
exclude_fields.update(model_class.PydanticMeta.update_exclude)
|
|
105
|
+
|
|
96
106
|
if extra_include:
|
|
97
107
|
include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
|
|
98
108
|
all_fields_info.update(include_fields_dict)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/delete_filter_view.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/delete_tree_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/get_relation_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/base_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/response_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/save_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/tool_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/__init__.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/docx_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/file_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/pdf_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/mixin/utils/zip_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/api_view/update_relation_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/channel/connection_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/filter_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/router_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/rpc_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/controller/search_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/data_type/mysql_data_type.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/param_utils.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/response_utils.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/fastapi_utils/tortoise_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/my_fields/soft_delete_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/base_model.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/base_settings.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/pydantic_utils/json_encoders.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/common_function.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi/schemas_factory/response_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.6 → fastgenerateapi-1.2.7}/fastgenerateapi.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|