fastcodedog 2.0.6__tar.gz → 2.0.8__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.
Files changed (138) hide show
  1. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/PKG-INFO +2 -13
  2. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/README.md +2 -1
  3. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/README_zh.md +2 -1
  4. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/crud/query.py +1 -0
  5. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/crud/query_functions.py +11 -0
  6. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/pyproject.toml +1 -14
  7. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/__init__.py +0 -0
  8. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/cli.py +0 -0
  9. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/common/__init__.py +0 -0
  10. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/common/source_file_path.py +0 -0
  11. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/common/write_file.py +0 -0
  12. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/__init__.py +0 -0
  13. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/api/__init__.py +0 -0
  14. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/api/api.py +0 -0
  15. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/api/endpoint.py +0 -0
  16. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/api/oauth2.py +0 -0
  17. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/api/param.py +0 -0
  18. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/common/__init__.py +0 -0
  19. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/common/get_context_object.py +0 -0
  20. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/common/get_relationship.py +0 -0
  21. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/common/import_.py +0 -0
  22. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/context.py +0 -0
  23. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/contextbase.py +0 -0
  24. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/crud/__init__.py +0 -0
  25. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/crud/column.py +0 -0
  26. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/crud/crud.py +0 -0
  27. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/crud/join_relationship.py +0 -0
  28. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/model/__init__.py +0 -0
  29. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/model/column.py +0 -0
  30. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/model/computed_property.py +0 -0
  31. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/model/model.py +0 -0
  32. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/model/relationship.py +0 -0
  33. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/schema/__init__.py +0 -0
  34. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/schema/alias_generator.py +0 -0
  35. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/schema/field.py +0 -0
  36. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/schema/response_schema.py +0 -0
  37. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/schema/schema.py +0 -0
  38. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/schema/sub_object.py +0 -0
  39. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/setting/__init__.py +0 -0
  40. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/setting/config.py +0 -0
  41. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/setting/extend_app.py +0 -0
  42. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/setting/project.py +0 -0
  43. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/context/setting/source_directory.py +0 -0
  44. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/__init__.py +0 -0
  45. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/api/__init__.py +0 -0
  46. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/api/api.py +0 -0
  47. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/api/api_function.py +0 -0
  48. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/api/config.py +0 -0
  49. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/api/db.py +0 -0
  50. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/api/generation.py +0 -0
  51. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/api/main.py +0 -0
  52. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/api/oauth2.py +0 -0
  53. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/__init__.py +0 -0
  54. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/block.py +0 -0
  55. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/call.py +0 -0
  56. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/class_type.py +0 -0
  57. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/file.py +0 -0
  58. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/function.py +0 -0
  59. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/head_comment.py +0 -0
  60. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/line_break.py +0 -0
  61. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/location_finder.py +0 -0
  62. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/required_import.py +0 -0
  63. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/text.py +0 -0
  64. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/base/variable.py +0 -0
  65. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/commonfiles/__init__.py +0 -0
  66. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/commonfiles/configfiles/__init__.py +0 -0
  67. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/commonfiles/db.py +0 -0
  68. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/commonfiles/generation.py +0 -0
  69. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/commonfiles/main.py +0 -0
  70. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/commonfiles/oauthfiles/__init__.py +0 -0
  71. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/commonfiles/toolfiles/__init__.py +0 -0
  72. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/commonfiles/utilfiles/__init__.py +0 -0
  73. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/commonfiles/utilfiles/case_converter.py +0 -0
  74. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/crud/__init__.py +0 -0
  75. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/crud/crud.py +0 -0
  76. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/crud/crud_functions.py +0 -0
  77. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/crud/generation.py +0 -0
  78. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/crud/selectinload.py +0 -0
  79. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/__init__.py +0 -0
  80. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/base.py +0 -0
  81. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/column.py +0 -0
  82. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/computed_property.py +0 -0
  83. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/generation.py +0 -0
  84. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/init.py +0 -0
  85. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/model.py +0 -0
  86. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/relation_object.py +0 -0
  87. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/relationship.py +0 -0
  88. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/model/table_args.py +0 -0
  89. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/schema/__init__.py +0 -0
  90. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/schema/field.py +0 -0
  91. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/schema/generation.py +0 -0
  92. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/schema/response_schema.py +0 -0
  93. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/schema/schema.py +0 -0
  94. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/generation/schema/sub_object.py +0 -0
  95. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/__init__.py +0 -0
  96. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_and_schema_to_crud/__init__.py +0 -0
  97. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_and_schema_to_crud/prepare.py +0 -0
  98. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_and_schema_to_crud/queries.py +0 -0
  99. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_to_schema/__init__.py +0 -0
  100. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_to_schema/alias_generator.py +0 -0
  101. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_to_schema/no_input_fields.py +0 -0
  102. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_to_schema/no_response_fields.py +0 -0
  103. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_to_schema/prepare.py +0 -0
  104. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_to_schema/response_schemas.py +0 -0
  105. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/model_to_schema/specified_field_types.py +0 -0
  106. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/README.MD +0 -0
  107. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/__init__.py +0 -0
  108. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/after/__init__.py +0 -0
  109. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/after/computed_properties.py +0 -0
  110. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/after/disable_relationships.py +0 -0
  111. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/after/specified_class_names.py +0 -0
  112. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/before/__init__.py +0 -0
  113. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/before/additional_foreign_keys.py +0 -0
  114. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/before/specified_column_types.py +0 -0
  115. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/before/specified_relationship_names.py +0 -0
  116. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/column.py +0 -0
  117. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/pdm.py +0 -0
  118. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/prepare.py +0 -0
  119. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/reference.xml +0 -0
  120. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/table.py +0 -0
  121. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/pdm_to_model/table.xml +0 -0
  122. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/schema_and_crud_to_api/__init__.py +0 -0
  123. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/schema_and_crud_to_api/endpoint.py +0 -0
  124. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/schema_and_crud_to_api/prepare.py +0 -0
  125. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/schema_and_crud_to_api/schemas.py +0 -0
  126. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/prepare/schema_and_crud_to_api/validate_reponse_models.py +0 -0
  127. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/__init__.py +0 -0
  128. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/case_converter.py +0 -0
  129. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/deep_update.py +0 -0
  130. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/extractor.py +0 -0
  131. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/find_file.py +0 -0
  132. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/indent.py +0 -0
  133. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/inflect_wrapper.py +0 -0
  134. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/make_dirs.py +0 -0
  135. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/singleton.py +0 -0
  136. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/type_converter.py +0 -0
  137. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/valid_name.py +0 -0
  138. {fastcodedog-2.0.6 → fastcodedog-2.0.8}/fastcodedog/util/wrap_str_with_quotation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastcodedog
3
- Version: 2.0.6
3
+ Version: 2.0.8
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: taohoo
@@ -11,23 +11,12 @@ Classifier: Programming Language :: Python :: 3
11
11
  Classifier: Programming Language :: Python :: 3.10
12
12
  Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
- Requires-Dist: alembic (>=1.13.1)
15
14
  Requires-Dist: autopep8 (>=2.2.0)
16
- Requires-Dist: fastapi (>=0.100.0)
17
- Requires-Dist: fastapi-pagination (>=0.12.25)
18
- Requires-Dist: fastoauth (>=0.1.0)
19
15
  Requires-Dist: inflect (>=7.2.1)
20
16
  Requires-Dist: json5 (>=0.9.25)
21
- Requires-Dist: psycopg2[binary] (>=2.9.5)
22
- Requires-Dist: pydantic (>=1.10.10)
23
- Requires-Dist: pyopenssl (>=24.0.0)
24
- Requires-Dist: python-jose (>=3.3.0)
25
- Requires-Dist: python-multipart (>=0.0.9)
26
- Requires-Dist: redis (>=5.0.5)
27
- Requires-Dist: sqlalchemy (>=2.0.23)
28
- Requires-Dist: uvicorn (>=0.30.0)
29
17
  Description-Content-Type: text/markdown
30
18
 
31
19
  Based on the pdm file(sap powerdesigner), automatically generate a FastAPI project.
32
20
  Including SQLAlchemy models and CRUD operations.
33
21
  FastAPI schemas and APIs.
22
+ The database engine should be installed manually based on actual requirements.
@@ -1,3 +1,4 @@
1
1
  Based on the pdm file(sap powerdesigner), automatically generate a FastAPI project.
2
2
  Including SQLAlchemy models and CRUD operations.
3
- FastAPI schemas and APIs.
3
+ FastAPI schemas and APIs.
4
+ The database engine should be installed manually based on actual requirements.
@@ -1,4 +1,5 @@
1
1
  # 概述
2
2
  基于pdm文件(sap powerdesigner),自动生成fastapi工程。
3
3
  包括sqlalchemy的model,crud。
4
- fastapi的schema,api。
4
+ fastapi的schema,api。
5
+ 数据库引擎根据实际需要安装。
@@ -34,5 +34,6 @@ class Query(ContextBase):
34
34
  self._types['joins'] = str
35
35
  self.outerjoins = []
36
36
  self._types['outerjoins'] = str
37
+ self.distinct = ''
37
38
  self.orders = []
38
39
  self._types['orders'] = str
@@ -192,17 +192,21 @@ class Query(Crud):
192
192
  self.add_possible_imports(Import(model_name, self.get_package_by_model_name(model_name)))
193
193
  self.blocks.append(Text(f'{alias_name} = {alias_value}'))
194
194
  for join in self.context.joins:
195
+ self._check_join_condition(join)
195
196
  model_name = join.split('.')[0]
196
197
  if model_name not in self.context.aliases.keys():
197
198
  self.add_possible_imports(Import(model_name, self.get_package_by_model_name(model_name)))
198
199
  self.blocks.append(Text(f'query = query.join({join})'))
199
200
  for outerjoin in self.context.outerjoins:
201
+ self._check_join_condition(outerjoin)
200
202
  model_name = outerjoin.split('.')[0]
201
203
  if model_name not in self.context.aliases.keys():
202
204
  self.add_possible_imports(Import(model_name, self.get_package_by_model_name(model_name)))
203
205
  self.blocks.append(Text(f'query = query.outerjoin({outerjoin})'))
204
206
  for filter in self.context.filters:
205
207
  self.blocks.append(Query.Filter(filter, parameters=self.context.parameters, aliases=self.context.aliases))
208
+ if self.context.distinct:
209
+ self.blocks.append(Text(f'query = query.distinct({self.context.distinct})'))
206
210
  if self.context.orders:
207
211
  self.blocks.append(Text(f"""if order_by and order_by not in {self.context.orders}:
208
212
  raise Exception(f'未知的排序方式:{{order_by}},可选值:{", ".join(self.context.orders)}')"""))
@@ -210,3 +214,10 @@ class Query(Crud):
210
214
  query = eval(f'query.order_by({{order_by}})') # 采用eval,由上面的if语句确保不执行危险代码"""))
211
215
  self.blocks.append(Text(f'return query'))
212
216
 
217
+ def _check_join_condition(self, join):
218
+ if join in self.context.aliases.keys():
219
+ join = self.context.aliases[join]
220
+ if '.' not in join and ',' not in join:
221
+ raise Exception(f'''join参数{join}配置错误,需明确指定关联条件。如果你使用了别名,别名也需要明确指定关联条件。
222
+ 请参考https://docs.sqlalchemy.org/en/20/orm/queryguide/query.html#sqlalchemy.orm.Query.join。
223
+ 支持使用类似(User.addresses)和(Address, User.id==Address.user_id)两种写法明确指定关联条件''')
@@ -1,30 +1,17 @@
1
1
  [tool.poetry]
2
2
  name = "fastcodedog"
3
- version = "2.0.6"
3
+ version = "2.0.8"
4
4
  description = ""
5
5
  authors = ["taohoo <taohoo@163.com>"]
6
6
  license = "MIT"
7
7
  readme = "README.md"
8
-
9
8
  include = ["README*.md"]
10
9
 
11
10
  [tool.poetry.dependencies]
12
11
  python = ">=3.10"
13
- uvicorn = ">=0.30.0"
14
- fastapi = ">=0.100.0"
15
- pydantic = ">=1.10.10"
16
- python-jose = ">=3.3.0"
17
- pyopenssl = ">=24.0.0"
18
- redis = ">=5.0.5"
19
- python-multipart = ">=0.0.9"
20
- sqlalchemy = ">=2.0.23"
21
- psycopg2 = { version = ">=2.9.5", extras = ["binary"] } # 或使用 psycopg2-binary
22
12
  json5 = ">=0.9.25"
23
13
  inflect = ">=7.2.1"
24
14
  autopep8 = ">=2.2.0"
25
- fastoauth = ">=0.1.0"
26
- alembic = ">=1.13.1"
27
- fastapi-pagination = ">=0.12.25"
28
15
 
29
16
  [tool.poetry.dev-dependencies]
30
17
  setuptools = ">=70.0.0"