sdpy-kit 0.1.0__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.
- kit/__init__.py +68 -0
- kit/ai/__init__.py +47 -0
- kit/ai/base_service.py +94 -0
- kit/ai/chat_service.py +110 -0
- kit/ai/embedding_service.py +133 -0
- kit/ai/exceptions.py +57 -0
- kit/ai/failover.py +244 -0
- kit/ai/image_service.py +99 -0
- kit/ai/model_builder.py +119 -0
- kit/ai/model_client.py +214 -0
- kit/ai/pool.py +411 -0
- kit/ai/profiles.py +373 -0
- kit/ai/rerank_service.py +93 -0
- kit/ai/runner.py +580 -0
- kit/ai/types.py +28 -0
- kit/common_kit.py +221 -0
- kit/config/__init__.py +44 -0
- kit/config/kit_config.py +147 -0
- kit/config/log_config.py +134 -0
- kit/db/__init__.py +70 -0
- kit/db/base_db_kit.py +406 -0
- kit/db/crud.py +361 -0
- kit/db/engine.py +230 -0
- kit/db/exceptions.py +34 -0
- kit/db/models/__init__.py +33 -0
- kit/db/models/base.py +56 -0
- kit/db/mysql_kit.py +89 -0
- kit/db/pg_kit.py +87 -0
- kit/db/session.py +85 -0
- kit/db/sqlite_kit.py +284 -0
- kit/db/transaction.py +109 -0
- kit/doc_kit.py +1502 -0
- kit/file_kit.py +429 -0
- kit/mcp_kit.py +547 -0
- kit/mineru_kit.py +918 -0
- kit/redis_kit.py +392 -0
- kit/zvec_kit.py +671 -0
- sdpy_kit-0.1.0.dist-info/METADATA +128 -0
- sdpy_kit-0.1.0.dist-info/RECORD +40 -0
- sdpy_kit-0.1.0.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: sdpy-kit
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: SDPY Kit——统一数据库访问层(PG/MySQL/SQLite)与 AI/MCP/Redis/文件/文档/向量工具集
|
|
5
|
+
Author-email: Clark <changhongyuan@126.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Classifier: Development Status :: 4 - Beta
|
|
8
|
+
Classifier: Intended Audience :: Developers
|
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
10
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
13
|
+
Requires-Python: >=3.13
|
|
14
|
+
Requires-Dist: fastmcp>=4.0.3
|
|
15
|
+
Requires-Dist: firecrawl-anydoc>=0.2.4
|
|
16
|
+
Requires-Dist: httpx>=0.28.1
|
|
17
|
+
Requires-Dist: markdown-it-py>=3.0
|
|
18
|
+
Requires-Dist: pimd[pdfa]>=2.2.5
|
|
19
|
+
Requires-Dist: psycopg2-binary>=2.9.12
|
|
20
|
+
Requires-Dist: pydantic-settings>=2.0
|
|
21
|
+
Requires-Dist: pydantic>=2.0
|
|
22
|
+
Requires-Dist: pymysql>=1.2.0
|
|
23
|
+
Requires-Dist: python-dotenv>=1.2.3
|
|
24
|
+
Requires-Dist: redis>=5.0.0
|
|
25
|
+
Requires-Dist: requests>=2.34.0
|
|
26
|
+
Requires-Dist: sqlalchemy~=2.0.51
|
|
27
|
+
Requires-Dist: sqliteai-vector>=1.0.0
|
|
28
|
+
Requires-Dist: sqlmodel>=0.0.39
|
|
29
|
+
Requires-Dist: zvec>=0.6.0
|
|
30
|
+
Description-Content-Type: text/markdown
|
|
31
|
+
|
|
32
|
+
# sdpy-kit
|
|
33
|
+
|
|
34
|
+
SDPY 统一工具集(Kit 体系),供 Python 项目开箱即用:统一数据库访问层(PostgreSQL / MySQL / SQLite,三个 Kit API 完全一致)+ AI 多模型服务池(chat / embedding / rerank / image,多厂商候选链与故障转移)+ MCP 客户端 + Redis / 文件 / 文档 / 向量库 / MinerU 工具。
|
|
35
|
+
|
|
36
|
+
> 要求 Python 3.13+
|
|
37
|
+
|
|
38
|
+
## 安装
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pip install sdpy-kit
|
|
42
|
+
# 或
|
|
43
|
+
uv add sdpy-kit
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 配置(.env)
|
|
47
|
+
|
|
48
|
+
kit 通过 pydantic-settings 读取项目根目录 `.env`(默认值见下,均可省略):
|
|
49
|
+
|
|
50
|
+
```dotenv
|
|
51
|
+
# 日志
|
|
52
|
+
LOG_LEVEL=INFO
|
|
53
|
+
LOG_TO_CONSOLE=true
|
|
54
|
+
LOG_TO_FILE=false
|
|
55
|
+
|
|
56
|
+
# 数据库(三选一,切换只改 DEFAULT_DB_TYPE)
|
|
57
|
+
DEFAULT_DB_TYPE=sqlite # postgresql / mysql / sqlite
|
|
58
|
+
DB_HOST=localhost
|
|
59
|
+
DB_PORT=5432
|
|
60
|
+
DB_DATABASE=postgres
|
|
61
|
+
DB_USER=admin
|
|
62
|
+
DB_PASSWORD=
|
|
63
|
+
MYSQL_PORT=3306
|
|
64
|
+
MYSQL_DATABASE=mydb
|
|
65
|
+
MYSQL_USER=root
|
|
66
|
+
SQLITE_DB_PATH=./data/app.db
|
|
67
|
+
|
|
68
|
+
# Redis
|
|
69
|
+
REDIS_HOST=localhost
|
|
70
|
+
REDIS_PORT=6379
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## AI / MCP 功能的档案文件
|
|
74
|
+
|
|
75
|
+
AI 与 MCP 功能需要在项目根目录提供两个 JSON 档案文件:
|
|
76
|
+
|
|
77
|
+
- `config/ai_models.json` —— chat / embedding / rerank / image 四类型多厂商模型档案
|
|
78
|
+
- `config/mcp_servers.json` —— MCP 服务器档案
|
|
79
|
+
|
|
80
|
+
文件缺失时,首次使用相应功能会报错,**报错信息中附带可直接复制的最小模板**;
|
|
81
|
+
其中 `api_key` / `token_env` 字段填写环境变量名,真实密钥配置在 `.env`。
|
|
82
|
+
|
|
83
|
+
## 快速开始
|
|
84
|
+
|
|
85
|
+
### 日志与配置
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
from kit.config import get_settings, get_default_logger
|
|
89
|
+
|
|
90
|
+
settings = get_settings()
|
|
91
|
+
logger = get_default_logger(__name__)
|
|
92
|
+
logger.info("hello %s", settings.APP_NAME)
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 数据库(SQLiteKit / PgKit / MySqlKit API 完全一致,切换只改 import)
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
from sqlmodel import SQLModel, Field
|
|
99
|
+
from kit.db.sqlite_kit import SQLiteKit
|
|
100
|
+
|
|
101
|
+
class Item(SQLModel, table=True):
|
|
102
|
+
id: int | None = Field(default=None, primary_key=True)
|
|
103
|
+
name: str
|
|
104
|
+
|
|
105
|
+
SQLiteKit.connect()
|
|
106
|
+
SQLiteKit.create_tables([Item])
|
|
107
|
+
item = SQLiteKit.create(Item, {"name": "demo"})
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
约定:`SQLiteKit/PgKit/MySqlKit` 方法自动提交;`CRUDBase`(配合 `session_scope`)不自动提交;事务用 `kit.transactional`。
|
|
111
|
+
|
|
112
|
+
## 模块总览
|
|
113
|
+
|
|
114
|
+
| 模块 | 内容 |
|
|
115
|
+
|------|------|
|
|
116
|
+
| `kit.db` | 统一数据库访问层:PgKit / MySqlKit / SQLiteKit、CRUDBase、transactional |
|
|
117
|
+
| `kit.ai` | AI 服务池:chat / embedding / rerank / image,多厂商候选链 + 故障转移 |
|
|
118
|
+
| `kit.mcp_kit` | 通用 MCP 客户端(streamable-http / sse,档案驱动多服务器) |
|
|
119
|
+
| `kit.redis_kit` | Redis 工具 |
|
|
120
|
+
| `kit.file_kit` | 文件工具 |
|
|
121
|
+
| `kit.doc_kit` | 文档转换(基于 firecrawl-anydoc / pimd) |
|
|
122
|
+
| `kit.zvec_kit` | zvec 本地向量库 |
|
|
123
|
+
| `kit.mineru_kit` | MinerU 文档精准解析 API |
|
|
124
|
+
| `kit.common_kit` | 通用工具 |
|
|
125
|
+
|
|
126
|
+
## License
|
|
127
|
+
|
|
128
|
+
MIT
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
kit/__init__.py,sha256=PlD5qs0jgcMUW-OOQBK6dBGjlm68iY691zaYOpHxK20,1517
|
|
2
|
+
kit/common_kit.py,sha256=2BOmbLh6onfeO94I3X1f3MtKLC3dJSBxg6JpDMi6Ivg,8112
|
|
3
|
+
kit/doc_kit.py,sha256=3RVZ9MpZlPYN-Un2DmZFUGjWYyUwgxSoeH3mOInHmTI,62475
|
|
4
|
+
kit/file_kit.py,sha256=_VCrpAKIODWaZ0jsKiPQORojkyzeTtsviz4L1Ynli8I,14233
|
|
5
|
+
kit/mcp_kit.py,sha256=hYg1nTD88cWP3bLwxsU98mI1bK5DUZAjGAxxxS0iF8E,21500
|
|
6
|
+
kit/mineru_kit.py,sha256=mlbJjez0wg7m6zjaFnJLp3zssrvsRvlX8Qenq-zcTjE,35878
|
|
7
|
+
kit/redis_kit.py,sha256=TikGj7ElSigu01KdV6Mwje0Eo2X6HdVJ1sXcerWX-gc,14521
|
|
8
|
+
kit/zvec_kit.py,sha256=tAdF4mBpFIetdWXzL9ri97AnokKkmmKCC4k_yjZcV_s,24151
|
|
9
|
+
kit/ai/__init__.py,sha256=ScrHFWSxPXqgZ8sNSKSEqS4SGOqKaNPgpoV6wQpj6Ak,1461
|
|
10
|
+
kit/ai/base_service.py,sha256=wjGCNFSTiCmF7_ZL34tEKjEqbEXeq4ZtCv5BFKhYdMQ,3362
|
|
11
|
+
kit/ai/chat_service.py,sha256=KPJjo2icIjRASKtX-xP5E0-5rpoZiNgTo-FwvTY3wvw,3710
|
|
12
|
+
kit/ai/embedding_service.py,sha256=PKUywblkk52LhLocY5QfcjeEKgIa-3uarvkbk93iBz4,4848
|
|
13
|
+
kit/ai/exceptions.py,sha256=wcwb_fJ_VWvvoDgGa5IBmynqkhHVJgrkwnK1m5Pl1FY,1948
|
|
14
|
+
kit/ai/failover.py,sha256=L1tobbZZfmFjuaOxg0mqnv1kWXMyAMf0svtsZVtKZhI,8477
|
|
15
|
+
kit/ai/image_service.py,sha256=adi0Vhs-UbiwKyP4uxXAlwxWGaLZ_ay8UEGg7L05ESA,3390
|
|
16
|
+
kit/ai/model_builder.py,sha256=JJWTKkgTHm8VDZM11isxWBOCaj4yu4IQhmwQp1M6W0A,4136
|
|
17
|
+
kit/ai/model_client.py,sha256=B7VwgDVwg_58lyGVmpzWsKmOqr83EuXi2pkQTTcpBMw,8067
|
|
18
|
+
kit/ai/pool.py,sha256=D7Pwdotj8Ka9zZI3GITW24D5JQRZFKpbBckFsGQqSAw,17042
|
|
19
|
+
kit/ai/profiles.py,sha256=x0g-MAGhVRvWQeJ9jfA-UIs5N467JOH_DHZrWI6c6KA,14476
|
|
20
|
+
kit/ai/rerank_service.py,sha256=G_PP2qFVqkecDaaBKsumxR7ruug5ckrLDfY8WZeMn0w,3138
|
|
21
|
+
kit/ai/runner.py,sha256=YQUwg50flii0RNS3gkla1gE8VbkQfR611fEk68eE3ic,22541
|
|
22
|
+
kit/ai/types.py,sha256=VeueJ5EJ25E4s_FxUy-HCF1cxC3xo2LjgKK6sSTYejI,1037
|
|
23
|
+
kit/config/__init__.py,sha256=yZLRzxZqzSXJQvhHpSRk1pbvV_yMIslhQxfHUjgNRyU,1068
|
|
24
|
+
kit/config/kit_config.py,sha256=jMBREQ2PgmMGdILk5jUsvFLCgqfPxog5HjqBt0Un1-k,5572
|
|
25
|
+
kit/config/log_config.py,sha256=4LBcwU-srHPx9XCHoPfkPtXx_aVvVQH6YfZX6UNF3NU,3739
|
|
26
|
+
kit/db/__init__.py,sha256=dKMFwbDgXVnS6VOs7VjhUR-dkH94n7qTDWF0Uet4zXo,1867
|
|
27
|
+
kit/db/base_db_kit.py,sha256=dSQ1CqSRwZ3BdqlPi8Xd-FZrzS1hY1REtLZl5kWeiXM,13136
|
|
28
|
+
kit/db/crud.py,sha256=OMbBTHb2yNr7m8HNOAxzc0HhC43hBnIvHmgYG2abTnQ,13799
|
|
29
|
+
kit/db/engine.py,sha256=BE-oWAfQoKCLbzRqB_QRXUZncnTcUT8KZbf_xCq1kro,7851
|
|
30
|
+
kit/db/exceptions.py,sha256=VgLTVK_-Zt_xxE7-IHshqWsKGsffGOO9CnJdWqsamaE,980
|
|
31
|
+
kit/db/mysql_kit.py,sha256=ZpJICgSNI3FNsSgj4qJDOAUrUCXnHPsluS40fJgek-4,2966
|
|
32
|
+
kit/db/pg_kit.py,sha256=sUQucjM9R-4FtS36dHCRD00BjQ_3v1mv6b3tZAcZr7k,2853
|
|
33
|
+
kit/db/session.py,sha256=CE5wsyZtrsH9qa7j8JLAuGXqqDdQ9B1GEigi4X_SoKU,2551
|
|
34
|
+
kit/db/sqlite_kit.py,sha256=wc_J_Floz8DPVSATJhd5wxRombqHUoxinvO5-ZQwSII,10628
|
|
35
|
+
kit/db/transaction.py,sha256=JJ5-cSTweI33411ofYaSkqj3trfbm9YcxelY_f7pon8,3808
|
|
36
|
+
kit/db/models/__init__.py,sha256=A2ypmeyWtNNLWHJ2VIGo8KCuFgoCCLf7vTbgxgdzo44,869
|
|
37
|
+
kit/db/models/base.py,sha256=q18o1wbYXyeDtxbGgYbvnuXg9-2mbSvRGsxCGY7AJk8,1855
|
|
38
|
+
sdpy_kit-0.1.0.dist-info/METADATA,sha256=gfr9xuPC2TGv7ziG9GD6WbnJtj1938jg-7g-8RwKA7M,3937
|
|
39
|
+
sdpy_kit-0.1.0.dist-info/WHEEL,sha256=zOwg4jB6zX2kU910N-cMawjivD6tO8NEWvE12je1bVk,87
|
|
40
|
+
sdpy_kit-0.1.0.dist-info/RECORD,,
|