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.
Files changed (60) hide show
  1. toms_fast-0.2.1.dist-info/METADATA +467 -0
  2. toms_fast-0.2.1.dist-info/RECORD +60 -0
  3. toms_fast-0.2.1.dist-info/WHEEL +4 -0
  4. toms_fast-0.2.1.dist-info/entry_points.txt +2 -0
  5. tomskit/__init__.py +0 -0
  6. tomskit/celery/README.md +693 -0
  7. tomskit/celery/__init__.py +4 -0
  8. tomskit/celery/celery.py +306 -0
  9. tomskit/celery/config.py +377 -0
  10. tomskit/cli/__init__.py +207 -0
  11. tomskit/cli/__main__.py +8 -0
  12. tomskit/cli/scaffold.py +123 -0
  13. tomskit/cli/templates/__init__.py +42 -0
  14. tomskit/cli/templates/base.py +348 -0
  15. tomskit/cli/templates/celery.py +101 -0
  16. tomskit/cli/templates/extensions.py +213 -0
  17. tomskit/cli/templates/fastapi.py +400 -0
  18. tomskit/cli/templates/migrations.py +281 -0
  19. tomskit/cli/templates_config.py +122 -0
  20. tomskit/logger/README.md +466 -0
  21. tomskit/logger/__init__.py +4 -0
  22. tomskit/logger/config.py +106 -0
  23. tomskit/logger/logger.py +290 -0
  24. tomskit/py.typed +0 -0
  25. tomskit/redis/README.md +462 -0
  26. tomskit/redis/__init__.py +6 -0
  27. tomskit/redis/config.py +85 -0
  28. tomskit/redis/redis_pool.py +87 -0
  29. tomskit/redis/redis_sync.py +66 -0
  30. tomskit/server/__init__.py +47 -0
  31. tomskit/server/config.py +117 -0
  32. tomskit/server/exceptions.py +412 -0
  33. tomskit/server/middleware.py +371 -0
  34. tomskit/server/parser.py +312 -0
  35. tomskit/server/resource.py +464 -0
  36. tomskit/server/server.py +276 -0
  37. tomskit/server/type.py +263 -0
  38. tomskit/sqlalchemy/README.md +590 -0
  39. tomskit/sqlalchemy/__init__.py +20 -0
  40. tomskit/sqlalchemy/config.py +125 -0
  41. tomskit/sqlalchemy/database.py +125 -0
  42. tomskit/sqlalchemy/pagination.py +359 -0
  43. tomskit/sqlalchemy/property.py +19 -0
  44. tomskit/sqlalchemy/sqlalchemy.py +131 -0
  45. tomskit/sqlalchemy/types.py +32 -0
  46. tomskit/task/README.md +67 -0
  47. tomskit/task/__init__.py +4 -0
  48. tomskit/task/task_manager.py +124 -0
  49. tomskit/tools/README.md +63 -0
  50. tomskit/tools/__init__.py +18 -0
  51. tomskit/tools/config.py +70 -0
  52. tomskit/tools/warnings.py +37 -0
  53. tomskit/tools/woker.py +81 -0
  54. tomskit/utils/README.md +666 -0
  55. tomskit/utils/README_SERIALIZER.md +644 -0
  56. tomskit/utils/__init__.py +35 -0
  57. tomskit/utils/fields.py +434 -0
  58. tomskit/utils/marshal_utils.py +137 -0
  59. tomskit/utils/response_utils.py +13 -0
  60. 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,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ fastapi-cli = tomskit.cli:main
tomskit/__init__.py ADDED
File without changes