toms-fast 0.2.1__py3-none-any.whl
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.
- toms_fast-0.2.1.dist-info/METADATA +467 -0
- toms_fast-0.2.1.dist-info/RECORD +60 -0
- toms_fast-0.2.1.dist-info/WHEEL +4 -0
- toms_fast-0.2.1.dist-info/entry_points.txt +2 -0
- tomskit/__init__.py +0 -0
- tomskit/celery/README.md +693 -0
- tomskit/celery/__init__.py +4 -0
- tomskit/celery/celery.py +306 -0
- tomskit/celery/config.py +377 -0
- tomskit/cli/__init__.py +207 -0
- tomskit/cli/__main__.py +8 -0
- tomskit/cli/scaffold.py +123 -0
- tomskit/cli/templates/__init__.py +42 -0
- tomskit/cli/templates/base.py +348 -0
- tomskit/cli/templates/celery.py +101 -0
- tomskit/cli/templates/extensions.py +213 -0
- tomskit/cli/templates/fastapi.py +400 -0
- tomskit/cli/templates/migrations.py +281 -0
- tomskit/cli/templates_config.py +122 -0
- tomskit/logger/README.md +466 -0
- tomskit/logger/__init__.py +4 -0
- tomskit/logger/config.py +106 -0
- tomskit/logger/logger.py +290 -0
- tomskit/py.typed +0 -0
- tomskit/redis/README.md +462 -0
- tomskit/redis/__init__.py +6 -0
- tomskit/redis/config.py +85 -0
- tomskit/redis/redis_pool.py +87 -0
- tomskit/redis/redis_sync.py +66 -0
- tomskit/server/__init__.py +47 -0
- tomskit/server/config.py +117 -0
- tomskit/server/exceptions.py +412 -0
- tomskit/server/middleware.py +371 -0
- tomskit/server/parser.py +312 -0
- tomskit/server/resource.py +464 -0
- tomskit/server/server.py +276 -0
- tomskit/server/type.py +263 -0
- tomskit/sqlalchemy/README.md +590 -0
- tomskit/sqlalchemy/__init__.py +20 -0
- tomskit/sqlalchemy/config.py +125 -0
- tomskit/sqlalchemy/database.py +125 -0
- tomskit/sqlalchemy/pagination.py +359 -0
- tomskit/sqlalchemy/property.py +19 -0
- tomskit/sqlalchemy/sqlalchemy.py +131 -0
- tomskit/sqlalchemy/types.py +32 -0
- tomskit/task/README.md +67 -0
- tomskit/task/__init__.py +4 -0
- tomskit/task/task_manager.py +124 -0
- tomskit/tools/README.md +63 -0
- tomskit/tools/__init__.py +18 -0
- tomskit/tools/config.py +70 -0
- tomskit/tools/warnings.py +37 -0
- tomskit/tools/woker.py +81 -0
- tomskit/utils/README.md +666 -0
- tomskit/utils/README_SERIALIZER.md +644 -0
- tomskit/utils/__init__.py +35 -0
- tomskit/utils/fields.py +434 -0
- tomskit/utils/marshal_utils.py +137 -0
- tomskit/utils/response_utils.py +13 -0
- tomskit/utils/serializers.py +447 -0
|
@@ -0,0 +1,467 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: toms-fast
|
|
3
|
+
Version: 0.2.1
|
|
4
|
+
Summary: 基于 FastAPI 的异步基础工具库,提供 Redis、SQLAlchemy、Celery、日志管理等企业级基础设施的统一封装,简化异步 API 与服务端应用开发(import 包名:tomskit)
|
|
5
|
+
Author-email: AllinOneAI Team <ai@aioai.cc>
|
|
6
|
+
Requires-Python: >=3.11
|
|
7
|
+
Requires-Dist: alembic>=1.13.0
|
|
8
|
+
Requires-Dist: celery>=5.5.2
|
|
9
|
+
Requires-Dist: fastapi>=0.115.12
|
|
10
|
+
Requires-Dist: pydantic-settings>=2.9.1
|
|
11
|
+
Requires-Dist: redis>=6.0.0
|
|
12
|
+
Requires-Dist: sqlalchemy>=2.0.40
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
|
|
15
|
+
# toms-fast
|
|
16
|
+
|
|
17
|
+
**toms-fast** 是一个基于 **FastAPI** 的异步基础工具库(Async Infrastructure Toolkit),
|
|
18
|
+
用于简化和规范企业级异步 API 与服务端应用的开发。
|
|
19
|
+
|
|
20
|
+
> **PyPI 名称**:`toms-fast`
|
|
21
|
+
> **Python import 包名**:`tomskit`
|
|
22
|
+
> **Python 版本要求**:`>=3.11`
|
|
23
|
+
|
|
24
|
+
该项目沉淀了在实际生产环境中反复验证的工程实践,
|
|
25
|
+
将 **Redis、SQLAlchemy、Celery、FastAPI** 等常用组件进行统一封装,
|
|
26
|
+
帮助开发者专注于业务逻辑,而不是基础设施细节。
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## ✨ 特性(Features)
|
|
31
|
+
|
|
32
|
+
- ⚡ **完全异步**:基于 FastAPI / ASGI 的异步架构,支持高并发场景
|
|
33
|
+
- 🧠 **模块化设计**:清晰的模块边界,适合中大型项目
|
|
34
|
+
- 🧩 **开箱即用**:内置常用基础能力,无需重复造轮子
|
|
35
|
+
- 🔒 **生产就绪**:经过生产环境验证,稳定可靠
|
|
36
|
+
- 📦 **类型安全**:完整的类型注解支持,提升开发体验
|
|
37
|
+
- 🛠️ **配置管理**:基于 Pydantic Settings 的统一配置管理
|
|
38
|
+
- 📚 **完整文档**:每个模块都有详细的 README 和使用示例
|
|
39
|
+
|
|
40
|
+
### 内置能力
|
|
41
|
+
|
|
42
|
+
- **Redis**:异步/同步客户端,支持单机、Sentinel、Cluster 模式
|
|
43
|
+
- **SQLAlchemy**:异步数据库集成,支持连接池管理和分页查询
|
|
44
|
+
- **Celery**:异步任务队列封装,支持在任务中运行异步函数
|
|
45
|
+
- **Logger**:结构化日志配置,支持追踪 ID 和多类型日志分离
|
|
46
|
+
- **Server**:FastAPI 扩展,提供资源管理、异常处理、中间件等
|
|
47
|
+
- **Utils**:数据序列化工具,支持异步数据源
|
|
48
|
+
- **Task**:异步任务管理器,支持批量任务执行
|
|
49
|
+
- **Tools**:Worker 管理工具,支持 Gunicorn/Uvicorn 监控
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 📦 安装(Installation)
|
|
54
|
+
|
|
55
|
+
> **💡 推荐使用虚拟环境**:为了避免依赖冲突和保持环境隔离,强烈建议在虚拟环境中安装和使用 `toms-fast`。
|
|
56
|
+
|
|
57
|
+
### 创建虚拟环境
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# 使用 uv 创建虚拟环境(推荐)
|
|
61
|
+
uv venv
|
|
62
|
+
source .venv/bin/activate # Linux/Mac
|
|
63
|
+
# 或 .venv\Scripts\activate # Windows
|
|
64
|
+
|
|
65
|
+
# 或使用 Python 内置 venv
|
|
66
|
+
python -m venv .venv
|
|
67
|
+
source .venv/bin/activate # Linux/Mac
|
|
68
|
+
# 或 .venv\Scripts\activate # Windows
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 使用 pip
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install toms-fast
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 使用 uv(推荐)
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
uv pip install toms-fast
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 使用 poetry
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
poetry add toms-fast
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 🚀 快速开始(Quick Start)
|
|
92
|
+
|
|
93
|
+
### 使用脚手架创建新项目(推荐)
|
|
94
|
+
|
|
95
|
+
使用 `toms-fast` 提供的脚手架工具,可以快速创建一个完整的项目结构:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# 1. 创建虚拟环境(如果还没有)
|
|
99
|
+
uv venv
|
|
100
|
+
source .venv/bin/activate # Linux/Mac
|
|
101
|
+
# 或 .venv\Scripts\activate # Windows
|
|
102
|
+
|
|
103
|
+
# 2. 安装 toms-fast
|
|
104
|
+
uv pip install toms-fast
|
|
105
|
+
|
|
106
|
+
# 3. 使用脚手架创建新项目
|
|
107
|
+
fastapi-cli init my_project --type full
|
|
108
|
+
|
|
109
|
+
# 4. 进入项目目录
|
|
110
|
+
cd my_project
|
|
111
|
+
|
|
112
|
+
# 5. 安装项目依赖
|
|
113
|
+
uv sync
|
|
114
|
+
|
|
115
|
+
# 6. 配置环境变量
|
|
116
|
+
cp .env.example .env
|
|
117
|
+
# 编辑 .env 文件,配置数据库和 Redis 连接信息
|
|
118
|
+
|
|
119
|
+
# 7. 初始化数据库迁移(FastAPI 项目)
|
|
120
|
+
uv run alembic revision --autogenerate -m 'Initial migration'
|
|
121
|
+
uv run alembic upgrade head
|
|
122
|
+
|
|
123
|
+
# 8. 运行应用
|
|
124
|
+
uv run uvicorn main:app --reload
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**项目类型说明:**
|
|
128
|
+
- `full`(默认):包含 FastAPI 和 Celery 的完整项目
|
|
129
|
+
- `fastapi`:仅 FastAPI 项目
|
|
130
|
+
- `celery`:仅 Celery 项目
|
|
131
|
+
|
|
132
|
+
**更多脚手架选项:**
|
|
133
|
+
```bash
|
|
134
|
+
# 查看帮助
|
|
135
|
+
fastapi-cli init --help
|
|
136
|
+
|
|
137
|
+
# 指定目标目录
|
|
138
|
+
fastapi-cli init my_project -d /path/to/target
|
|
139
|
+
|
|
140
|
+
# 创建仅 FastAPI 项目
|
|
141
|
+
fastapi-cli init my_project --type fastapi
|
|
142
|
+
|
|
143
|
+
# 创建仅 Celery 项目
|
|
144
|
+
fastapi-cli init my_project --type celery
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 基础示例
|
|
148
|
+
|
|
149
|
+
```python
|
|
150
|
+
from fastapi import FastAPI
|
|
151
|
+
from tomskit.logger import setup_logging, LoggerConfig
|
|
152
|
+
from tomskit.redis import RedisClientWrapper, RedisConfig
|
|
153
|
+
from tomskit.sqlalchemy import db, DatabaseConfig
|
|
154
|
+
|
|
155
|
+
# 初始化日志
|
|
156
|
+
log_config = LoggerConfig()
|
|
157
|
+
setup_logging(log_config)
|
|
158
|
+
|
|
159
|
+
# 初始化 Redis
|
|
160
|
+
redis_config = RedisConfig()
|
|
161
|
+
RedisClientWrapper.initialize(redis_config.model_dump())
|
|
162
|
+
|
|
163
|
+
# 初始化数据库
|
|
164
|
+
db_config = DatabaseConfig()
|
|
165
|
+
db.initialize_session_pool(
|
|
166
|
+
db_config.SQLALCHEMY_DATABASE_URI,
|
|
167
|
+
db_config.SQLALCHEMY_ENGINE_OPTIONS
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
app = FastAPI()
|
|
171
|
+
|
|
172
|
+
@app.get("/")
|
|
173
|
+
async def root():
|
|
174
|
+
return {"message": "Hello from toms-fast!"}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### 使用 Server 模块创建 RESTful API
|
|
178
|
+
|
|
179
|
+
```python
|
|
180
|
+
from tomskit.server import FastApp, FastModule, register_resource, Resource, api_doc
|
|
181
|
+
from fastapi import Request
|
|
182
|
+
from pydantic import BaseModel
|
|
183
|
+
|
|
184
|
+
# 创建主应用
|
|
185
|
+
app = FastApp(title="My API")
|
|
186
|
+
|
|
187
|
+
# 创建模块
|
|
188
|
+
user_module = FastModule(name="users")
|
|
189
|
+
user_module.create_router(prefix="/api/v1")
|
|
190
|
+
|
|
191
|
+
# 定义响应模型
|
|
192
|
+
class UserResponse(BaseModel):
|
|
193
|
+
id: int
|
|
194
|
+
name: str
|
|
195
|
+
email: str
|
|
196
|
+
|
|
197
|
+
# 注册资源
|
|
198
|
+
@register_resource(module="users", path="/users", tags=["User Management"])
|
|
199
|
+
class UserResource(Resource):
|
|
200
|
+
@api_doc(
|
|
201
|
+
summary="获取用户列表",
|
|
202
|
+
response_model=list[UserResponse]
|
|
203
|
+
)
|
|
204
|
+
async def get(self, request: Request):
|
|
205
|
+
return [
|
|
206
|
+
{"id": 1, "name": "Alice", "email": "alice@example.com"},
|
|
207
|
+
{"id": 2, "name": "Bob", "email": "bob@example.com"}
|
|
208
|
+
]
|
|
209
|
+
|
|
210
|
+
# 自动注册资源
|
|
211
|
+
user_module.auto_register_resources()
|
|
212
|
+
|
|
213
|
+
# 挂载模块
|
|
214
|
+
app.mount("/api", user_module)
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 📁 项目结构(Project Structure)
|
|
220
|
+
|
|
221
|
+
```
|
|
222
|
+
src/tomskit/
|
|
223
|
+
├── server/ # FastAPI 扩展:资源管理、异常处理、中间件
|
|
224
|
+
├── redis/ # Redis 客户端:异步/同步,支持多种模式
|
|
225
|
+
├── sqlalchemy/ # SQLAlchemy 集成:异步数据库操作和分页
|
|
226
|
+
├── celery/ # Celery 封装:异步任务队列支持
|
|
227
|
+
├── logger/ # 日志管理:结构化日志和追踪 ID
|
|
228
|
+
├── task/ # 异步任务管理:批量任务执行
|
|
229
|
+
├── tools/ # 工具模块:Worker 管理等
|
|
230
|
+
└── utils/ # 工具函数:数据序列化、响应处理
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 📖 模块文档
|
|
236
|
+
|
|
237
|
+
每个模块都有详细的 README 文档,包含完整的使用示例:
|
|
238
|
+
|
|
239
|
+
- [**Server 模块**](src/tomskit/server/) - FastAPI 扩展,资源管理、异常处理
|
|
240
|
+
- [**Redis 模块**](src/tomskit/redis/README.md) - Redis 客户端使用指南
|
|
241
|
+
- [**SQLAlchemy 模块**](src/tomskit/sqlalchemy/README.md) - 数据库操作指南
|
|
242
|
+
- [**Celery 模块**](src/tomskit/celery/README.md) - 异步任务队列指南
|
|
243
|
+
- [**Logger 模块**](src/tomskit/logger/README.md) - 日志配置指南
|
|
244
|
+
- [**Utils 模块**](src/tomskit/utils/README.md) - 数据序列化指南
|
|
245
|
+
- [**Task 模块**](src/tomskit/task/README.md) - 异步任务管理指南
|
|
246
|
+
- [**Tools 模块**](src/tomskit/tools/README.md) - Worker 管理指南
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 🔧 核心模块使用示例
|
|
251
|
+
|
|
252
|
+
### Redis 使用
|
|
253
|
+
|
|
254
|
+
```python
|
|
255
|
+
from tomskit.redis import RedisClientWrapper, redis_client, RedisConfig
|
|
256
|
+
|
|
257
|
+
# 初始化
|
|
258
|
+
config = RedisConfig()
|
|
259
|
+
RedisClientWrapper.initialize(config.model_dump())
|
|
260
|
+
|
|
261
|
+
# 使用
|
|
262
|
+
await redis_client.set("key", "value")
|
|
263
|
+
value = await redis_client.get("key")
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
### 数据库使用
|
|
267
|
+
|
|
268
|
+
```python
|
|
269
|
+
from tomskit.sqlalchemy import db, DatabaseConfig
|
|
270
|
+
|
|
271
|
+
# 初始化
|
|
272
|
+
config = DatabaseConfig()
|
|
273
|
+
db.initialize_session_pool(
|
|
274
|
+
config.SQLALCHEMY_DATABASE_URI,
|
|
275
|
+
config.SQLALCHEMY_ENGINE_OPTIONS
|
|
276
|
+
)
|
|
277
|
+
|
|
278
|
+
# 使用
|
|
279
|
+
session = db.create_session()
|
|
280
|
+
user = await session.get(User, user_id)
|
|
281
|
+
await db.close_session(session)
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### Celery 任务
|
|
285
|
+
|
|
286
|
+
```python
|
|
287
|
+
from tomskit.celery import AsyncCelery, AsyncTaskRunner
|
|
288
|
+
from celery import shared_task
|
|
289
|
+
|
|
290
|
+
celery_app = AsyncCelery('myapp', broker='redis://localhost:6379/0')
|
|
291
|
+
|
|
292
|
+
@celery_app.task
|
|
293
|
+
def my_task():
|
|
294
|
+
runner = AsyncTaskRunner(async_my_task)
|
|
295
|
+
return runner.run()
|
|
296
|
+
|
|
297
|
+
async def async_my_task():
|
|
298
|
+
# 异步任务逻辑
|
|
299
|
+
return "done"
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 日志配置
|
|
303
|
+
|
|
304
|
+
```python
|
|
305
|
+
from tomskit.logger import setup_logging, LoggerConfig, set_app_trace_id
|
|
306
|
+
import uuid
|
|
307
|
+
|
|
308
|
+
# 初始化
|
|
309
|
+
config = LoggerConfig(LOG_LEVEL="INFO")
|
|
310
|
+
setup_logging(config)
|
|
311
|
+
|
|
312
|
+
# 在请求中设置追踪 ID
|
|
313
|
+
trace_id = str(uuid.uuid4())
|
|
314
|
+
set_app_trace_id(trace_id)
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## ⚙️ 环境变量配置
|
|
320
|
+
|
|
321
|
+
`toms-fast` 通过环境变量进行配置,应用需要显式加载 `.env` 文件(如使用 `python-dotenv`)。
|
|
322
|
+
|
|
323
|
+
### Redis 配置
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
REDIS_HOST=localhost
|
|
327
|
+
REDIS_PORT=6379
|
|
328
|
+
REDIS_DB=0
|
|
329
|
+
REDIS_PASSWORD=
|
|
330
|
+
REDIS_USE_SENTINEL=false
|
|
331
|
+
REDIS_USE_CLUSTERS=false
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### 数据库配置
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
DB_HOST=localhost
|
|
338
|
+
DB_PORT=3306
|
|
339
|
+
DB_USERNAME=user
|
|
340
|
+
DB_PASSWORD=password
|
|
341
|
+
DB_DATABASE=mydb
|
|
342
|
+
DB_CHARSET=utf8mb4
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### 日志配置
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
LOG_PREFIX=[MyApp]
|
|
349
|
+
LOG_LEVEL=INFO
|
|
350
|
+
LOG_DIR=logs
|
|
351
|
+
LOG_NAME=apps
|
|
352
|
+
LOG_USE_UTC=false
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### SQLAlchemy 配置
|
|
356
|
+
|
|
357
|
+
```bash
|
|
358
|
+
SQLALCHEMY_POOL_SIZE=300
|
|
359
|
+
SQLALCHEMY_MAX_OVERFLOW=10
|
|
360
|
+
SQLALCHEMY_POOL_RECYCLE=3600
|
|
361
|
+
SQLALCHEMY_POOL_PRE_PING=false
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
更多配置项请参考各模块的 README 文档。
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 🛠️ 开发环境(Development)
|
|
369
|
+
|
|
370
|
+
### 克隆仓库
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
git clone https://github.com/tomszhou/toms-fast.git
|
|
374
|
+
cd toms-fast
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### 安装开发依赖
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
# 使用 uv(推荐)
|
|
381
|
+
uv venv
|
|
382
|
+
source .venv/bin/activate
|
|
383
|
+
uv pip install -e ".[dev]"
|
|
384
|
+
|
|
385
|
+
# 或使用 pip
|
|
386
|
+
pip install -e ".[dev]"
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### 运行测试
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
pytest
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### 代码格式化
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
ruff format .
|
|
399
|
+
ruff check .
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## 📋 适用场景(Use Cases)
|
|
405
|
+
|
|
406
|
+
- ✅ 企业级 FastAPI 后端服务
|
|
407
|
+
- ✅ 高并发异步 API 开发
|
|
408
|
+
- ✅ 需要统一基础设施规范的团队
|
|
409
|
+
- ✅ 中大型 Python 服务端项目
|
|
410
|
+
- ✅ 微服务架构应用
|
|
411
|
+
- ✅ 需要异步任务处理的系统
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## 🤝 贡献(Contributing)
|
|
416
|
+
|
|
417
|
+
欢迎贡献代码!🎉
|
|
418
|
+
|
|
419
|
+
在提交 PR 前,请确保:
|
|
420
|
+
|
|
421
|
+
- ✅ 代码风格一致(遵循项目规范)
|
|
422
|
+
- ✅ 所有测试通过
|
|
423
|
+
- ✅ 遵循现有模块设计约定
|
|
424
|
+
- ✅ 添加必要的文档和示例
|
|
425
|
+
- ✅ 更新相关的 README 文件
|
|
426
|
+
|
|
427
|
+
### 贡献流程
|
|
428
|
+
|
|
429
|
+
1. Fork 本仓库
|
|
430
|
+
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
|
|
431
|
+
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
|
|
432
|
+
4. 推送到分支 (`git push origin feature/AmazingFeature`)
|
|
433
|
+
5. 开启 Pull Request
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
## 📄 许可证(License)
|
|
438
|
+
|
|
439
|
+
本项目采用 **MIT License**。
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## 🔗 相关链接
|
|
444
|
+
|
|
445
|
+
- [FastAPI 官方文档](https://fastapi.tiangolo.com/)
|
|
446
|
+
- [SQLAlchemy 官方文档](https://docs.sqlalchemy.org/)
|
|
447
|
+
- [Celery 官方文档](https://docs.celeryq.dev/)
|
|
448
|
+
- [Redis 官方文档](https://redis.io/docs/)
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## 📝 更新日志
|
|
453
|
+
|
|
454
|
+
查看 [GIT_SUMMARY.md](GIT_SUMMARY.md) 了解详细的提交历史。
|
|
455
|
+
|
|
456
|
+
---
|
|
457
|
+
|
|
458
|
+
## 💬 支持
|
|
459
|
+
|
|
460
|
+
如有问题或建议,请通过以下方式联系:
|
|
461
|
+
|
|
462
|
+
- 提交 [Issue](https://github.com/tomszhou/toms-fast/issues)
|
|
463
|
+
- 发送邮件至项目维护者
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
**Made with ❤️ by AllinOneAI Team**
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
tomskit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
tomskit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
tomskit/celery/README.md,sha256=ruFKbW41mYpS92Z4GUgewEh6tSznIm7OGCCZzTUnOE4,22426
|
|
4
|
+
tomskit/celery/__init__.py,sha256=1LzaZEuIsWWABlslVgNtgZeQ95XbGiCbqSFaH98kzt4,206
|
|
5
|
+
tomskit/celery/celery.py,sha256=F88DfrlYxJS9swOGI0-8Vb8adnSU3PijocZwe2sweRA,11079
|
|
6
|
+
tomskit/celery/config.py,sha256=5V6zwYJ3BgCwfTTWj8gvXYdr3yNgwnDALAmyR7PqlrI,13267
|
|
7
|
+
tomskit/cli/__init__.py,sha256=_QSzPGmbrY4WhQJqJY0JxHpQLrLtO1H2dT2dJgJka1M,7653
|
|
8
|
+
tomskit/cli/__main__.py,sha256=O1mjT1vhKNY0-Q5wAfJsDiyiAq4WJ9y_5AsHBFFh6sA,115
|
|
9
|
+
tomskit/cli/scaffold.py,sha256=wuvy5J-Ktcg07GnBSpEoWVm7zJw5JvD7OvPaAu2B2rs,5263
|
|
10
|
+
tomskit/cli/templates_config.py,sha256=SRv8MuAv2IELPAVGyMuihqx1hmM9Gk51vEjEJlmyVJ4,3856
|
|
11
|
+
tomskit/cli/templates/__init__.py,sha256=NKaJeX1GrcO8Jwra3Z_XTWNtKJfaR1cmjRdf1H0nric,1237
|
|
12
|
+
tomskit/cli/templates/base.py,sha256=gv4Q8OaLlUKDFKqF6TLmLF3VdzU7_l_mBsemLF2eXBY,7460
|
|
13
|
+
tomskit/cli/templates/celery.py,sha256=rRx8uAXe2tmsGbX_iO5UHGJjS55r2leBuB2HNj2bH4c,2505
|
|
14
|
+
tomskit/cli/templates/extensions.py,sha256=YIYSycGdFduhrr3jytGxbUAHII9b8chFxZozZ6ZdkQE,5194
|
|
15
|
+
tomskit/cli/templates/fastapi.py,sha256=H6xzdmfD-ntQagh6-u08J_kIBjNjtlu_fEySLtVPwww,9913
|
|
16
|
+
tomskit/cli/templates/migrations.py,sha256=DdovFsmJZ2NtvrRZbyjMdwSL8A-sg-xusi_5jRIIpqw,7929
|
|
17
|
+
tomskit/logger/README.md,sha256=qam61LnmMauljcNK-OsVqUuSYd7EqYPpqsHY0wi0vdA,14872
|
|
18
|
+
tomskit/logger/__init__.py,sha256=xdPo7dLn1_OqB1_wTh1hIVZTZRL4mko8Mw5VPcIpRBg,216
|
|
19
|
+
tomskit/logger/config.py,sha256=ULLkCiK9wSh64Ym2bhiUowb7pM3RPIIYgljDI-YqbkM,2943
|
|
20
|
+
tomskit/logger/logger.py,sha256=kDSz55D2-oI9u74VqeQWAplVdK-2mk1kck2KL6ydoxA,11766
|
|
21
|
+
tomskit/redis/README.md,sha256=yXDMF4UXv1FyJaVDT7HmGg9EYBR3ZJBT5XsEkxAdgAE,13888
|
|
22
|
+
tomskit/redis/__init__.py,sha256=bgdv7pzs-vscj6yZh82WyKQ0z5bOH7SB-l_rSigiyJA,257
|
|
23
|
+
tomskit/redis/config.py,sha256=FHmrYLo1eg-isiva0i_apzJI86heU_I7nvoYdOCulR4,2456
|
|
24
|
+
tomskit/redis/redis_pool.py,sha256=nby0JLIbxxgveB5dUEAY2jGjSLN5Vcalnli1q534iMI,3345
|
|
25
|
+
tomskit/redis/redis_sync.py,sha256=icxDMXI-ZPIxgIfIRqKLYVk8YzqybUCYd4pGbZPSJC8,2225
|
|
26
|
+
tomskit/server/__init__.py,sha256=wpwtGeahZjhWqFteULiUg-B2Vltc5-cm4fYHqDmSGMk,1104
|
|
27
|
+
tomskit/server/config.py,sha256=qvw1r7nDI4_24HS_OSMlTZuFxyDWleiX1569SubMkiU,4231
|
|
28
|
+
tomskit/server/exceptions.py,sha256=uNufXWOYzK_50Bx5-cpB6NnD0aQXnfvLP0mGjegwIO8,14332
|
|
29
|
+
tomskit/server/middleware.py,sha256=5s8iNLYyYZvTX2qZjOUTDIVHY-XGLMASK2L0lWXBlfA,13543
|
|
30
|
+
tomskit/server/parser.py,sha256=va8hMrvosxhOPfio7L9Tofv-uXSMka7GaUCs2q1Sx9A,11822
|
|
31
|
+
tomskit/server/resource.py,sha256=wnzFhZmEWekr6nDbyCh-ituta4MJXjxPpnjIInWJhGY,18166
|
|
32
|
+
tomskit/server/server.py,sha256=e6bT7EXKL_h-eUFGHoVjBMXRBl8Hs0cu78cBXayl-V0,10273
|
|
33
|
+
tomskit/server/type.py,sha256=DiFY2IqKyrndh9_F7sEkyemwhQuROM2l-iPSIH4hBs4,9006
|
|
34
|
+
tomskit/sqlalchemy/README.md,sha256=UIkOES4bhhR_Hh3RXxj168C3uxVtlKyDGbbhiNDhhTM,16886
|
|
35
|
+
tomskit/sqlalchemy/__init__.py,sha256=uSW-bU_wsQdilgRgTfWPyNgmep61tXHO8NulH-gkrGA,567
|
|
36
|
+
tomskit/sqlalchemy/config.py,sha256=hurSCfyeas_a42ZhfQWqu9LTJ3J-Okr5rd-D8tzOp0s,3625
|
|
37
|
+
tomskit/sqlalchemy/database.py,sha256=ptTjRAS5dzqYpbxp6BlzBZSwcolQtSWNwNzNMueSkv0,4462
|
|
38
|
+
tomskit/sqlalchemy/pagination.py,sha256=PxkFlgEcbSiu1ogouBqUEiTTSRQXvVr3xrc16Nqpv1U,10912
|
|
39
|
+
tomskit/sqlalchemy/property.py,sha256=wHcjDXBbA9Ci_v8Y44uXwFNxEuekGcXEtN-tASU5wIY,563
|
|
40
|
+
tomskit/sqlalchemy/sqlalchemy.py,sha256=yBXgFLhFYwfogO7NRv5VuPjz8QNzr-if68ErGN0S4mg,4291
|
|
41
|
+
tomskit/sqlalchemy/types.py,sha256=MHaa5c5jwRWo9D-EXlgS3TyDEMoUcQQIraSg2RXGP10,779
|
|
42
|
+
tomskit/task/README.md,sha256=lMnFuDqS2ZqmTXbwAeJtA4dECl3yfYx1yKc0wl6svWQ,2069
|
|
43
|
+
tomskit/task/__init__.py,sha256=yRPwicyaflVW6PgS2GEFB2xs1zC16pW0aNA69crlLJQ,76
|
|
44
|
+
tomskit/task/task_manager.py,sha256=5hHWrYql8thV7FRn9tDe9UBwGRBjROytVBrzkslRVOg,4010
|
|
45
|
+
tomskit/tools/README.md,sha256=t63J8jqqbHl8FjO1eog-QNLRnX_NJkzbEbnCBQ4KYWg,1916
|
|
46
|
+
tomskit/tools/__init__.py,sha256=GutxBG9Jn4QhM4ySWdvjix0nuMennQnZHvLamFjuGew,479
|
|
47
|
+
tomskit/tools/config.py,sha256=u0HtNm67ukeiEUzgZMJuDlROe-c6Bw_fFyqhK2bI6cU,1938
|
|
48
|
+
tomskit/tools/warnings.py,sha256=3IlZFW4zPpyyZx_5c0S0KCOh-Z4DR8HbXa-46p5f74Y,1107
|
|
49
|
+
tomskit/tools/woker.py,sha256=L7vQ5ZeHcWqfN-wmddne6AYbRUzPAxZZTOLFTfwhAac,2747
|
|
50
|
+
tomskit/utils/README.md,sha256=XxWJ1-e4XOG9-Vf8xGTZEsFBmXnLgjPPpmiDA-2nQO8,15833
|
|
51
|
+
tomskit/utils/README_SERIALIZER.md,sha256=3MnE-BUL5v-RKJk7E5qZpBf4peKuL5um2Oiqab9_4Ms,15916
|
|
52
|
+
tomskit/utils/__init__.py,sha256=zaVS-h0jM7di9j-JajRYz5XirmaBqX1nhVC4W6dQV2Y,577
|
|
53
|
+
tomskit/utils/fields.py,sha256=hpuBkYs6fDqpHmTuhQalUcDew9oWznwYnja48b-X0ow,13476
|
|
54
|
+
tomskit/utils/marshal_utils.py,sha256=n0q88Kx7TtOgwa3BkizEq-rkx13tM8UlngvTKwv1Lfs,4635
|
|
55
|
+
tomskit/utils/response_utils.py,sha256=a2nig5UZ6542SfgSPiqug6lgj-5O_suhKAYCbuevU9U,312
|
|
56
|
+
tomskit/utils/serializers.py,sha256=T_V0U7DFUWz2z10sT_DpLcPmVu1wjdC4_m-45ABW22A,17368
|
|
57
|
+
toms_fast-0.2.1.dist-info/METADATA,sha256=KTOooK4EOJiMxcnlGEqV3T6csp1MkPRApAdJ-Wy8SIA,11115
|
|
58
|
+
toms_fast-0.2.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
59
|
+
toms_fast-0.2.1.dist-info/entry_points.txt,sha256=_atR7y2awl5n-wASsJXI1FkdSeKo0_m8QwJFMFLc4k0,49
|
|
60
|
+
toms_fast-0.2.1.dist-info/RECORD,,
|
tomskit/__init__.py
ADDED
|
File without changes
|