sdpy-kit 0.1.3__tar.gz → 0.1.4__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.
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/PKG-INFO +17 -6
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/__init__.py +1 -1
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/base_service.py +1 -1
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/chat_service.py +4 -1
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/embedding_service.py +2 -1
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/pyproject.toml +18 -5
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/.gitignore +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/README.md +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/__init__.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/exceptions.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/failover.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/image_service.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/model_builder.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/model_client.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/pool.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/profiles.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/rerank_service.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/runner.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/ai/types.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/common_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/config/__init__.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/config/kit_config.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/config/log_config.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/__init__.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/base_db_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/crud.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/engine.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/exceptions.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/models/__init__.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/models/base.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/mysql_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/pg_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/query.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/session.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/sqlite_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/db/transaction.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/doc_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/file_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/mcp_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/mineru_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/redis_kit.py +0 -0
- {sdpy_kit-0.1.3 → sdpy_kit-0.1.4}/kit/zvec_kit.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sdpy-kit
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: SDPY Kit——统一数据库访问层(PG/MySQL/SQLite)与 AI/MCP/Redis/文件/文档/向量工具集
|
|
5
5
|
Author-email: Clark <changhongyuan@126.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -17,23 +17,34 @@ Classifier: Topic :: Database
|
|
|
17
17
|
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
18
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
19
|
Requires-Python: >=3.13
|
|
20
|
-
Requires-Dist: fastmcp>=4.0.3
|
|
21
20
|
Requires-Dist: firecrawl-anydoc>=0.2.4
|
|
22
21
|
Requires-Dist: httpx>=0.28.1
|
|
23
22
|
Requires-Dist: markdown-it-py>=3.0
|
|
24
23
|
Requires-Dist: numpy>=2.0
|
|
25
24
|
Requires-Dist: pimd[pdfa]>=2.2.5
|
|
26
|
-
Requires-Dist: psycopg2-binary>=2.9.12
|
|
27
25
|
Requires-Dist: pydantic-settings>=2.0
|
|
28
26
|
Requires-Dist: pydantic>=2.0
|
|
29
|
-
Requires-Dist: pymysql>=1.2.0
|
|
30
27
|
Requires-Dist: python-dotenv>=1.2.3
|
|
31
|
-
Requires-Dist: redis>=5.0.0
|
|
32
28
|
Requires-Dist: requests>=2.34.0
|
|
33
29
|
Requires-Dist: sqlalchemy~=2.0.51
|
|
34
30
|
Requires-Dist: sqliteai-vector>=1.0.0
|
|
35
31
|
Requires-Dist: sqlmodel>=0.0.39
|
|
36
|
-
|
|
32
|
+
Provides-Extra: all
|
|
33
|
+
Requires-Dist: fastmcp>=4.0.3; extra == 'all'
|
|
34
|
+
Requires-Dist: psycopg2-binary>=2.9.12; extra == 'all'
|
|
35
|
+
Requires-Dist: pymysql>=1.2.0; extra == 'all'
|
|
36
|
+
Requires-Dist: redis>=5.0.0; extra == 'all'
|
|
37
|
+
Requires-Dist: zvec>=0.6.0; extra == 'all'
|
|
38
|
+
Provides-Extra: mcp
|
|
39
|
+
Requires-Dist: fastmcp>=4.0.3; extra == 'mcp'
|
|
40
|
+
Provides-Extra: mysql
|
|
41
|
+
Requires-Dist: pymysql>=1.2.0; extra == 'mysql'
|
|
42
|
+
Provides-Extra: pg
|
|
43
|
+
Requires-Dist: psycopg2-binary>=2.9.12; extra == 'pg'
|
|
44
|
+
Provides-Extra: redis
|
|
45
|
+
Requires-Dist: redis>=5.0.0; extra == 'redis'
|
|
46
|
+
Provides-Extra: zvec
|
|
47
|
+
Requires-Dist: zvec>=0.6.0; extra == 'zvec'
|
|
37
48
|
Description-Content-Type: text/markdown
|
|
38
49
|
|
|
39
50
|
# sdpy-kit
|
|
@@ -127,7 +127,7 @@ class BaseAIService[RequestT, ResponseT](ABC):
|
|
|
127
127
|
data = await self._client.post_json(payload)
|
|
128
128
|
result = self._parse_response(data)
|
|
129
129
|
except AIError as exc:
|
|
130
|
-
logger.
|
|
130
|
+
logger.error(
|
|
131
131
|
f"********** {desc} ********** "
|
|
132
132
|
f"耗时 {time.perf_counter() - start:.1f}秒(失败:{exc})"
|
|
133
133
|
)
|
|
@@ -116,6 +116,7 @@ class ChatService(BaseAIService[ChatRequest, str]):
|
|
|
116
116
|
logger.info(f"请求参数: {params}")
|
|
117
117
|
start = time.perf_counter()
|
|
118
118
|
note = ""
|
|
119
|
+
failed = False
|
|
119
120
|
try:
|
|
120
121
|
async for parsed in self._client.stream_json(payload):
|
|
121
122
|
if parsed is None:
|
|
@@ -130,12 +131,14 @@ class ChatService(BaseAIService[ChatRequest, str]):
|
|
|
130
131
|
yield delta
|
|
131
132
|
except AIError as exc:
|
|
132
133
|
note = f"(失败:{exc})"
|
|
134
|
+
failed = True
|
|
133
135
|
raise
|
|
134
136
|
except BaseException: # noqa: BLE001 - 中断路径(提前 break/取消)也需收尾日志
|
|
135
137
|
note = "(中断)"
|
|
136
138
|
raise
|
|
137
139
|
finally:
|
|
138
|
-
logger.info
|
|
140
|
+
log = logger.error if failed else logger.info
|
|
141
|
+
log(
|
|
139
142
|
f"********** {desc} ********** "
|
|
140
143
|
f"耗时 {time.perf_counter() - start:.1f}秒{note}"
|
|
141
144
|
)
|
|
@@ -146,7 +146,8 @@ class EmbeddingService(BaseAIService[EmbeddingRequest, list[list[float]]]):
|
|
|
146
146
|
|
|
147
147
|
return [vec for vec in results if vec is not None]
|
|
148
148
|
finally:
|
|
149
|
-
logger.info
|
|
149
|
+
log = logger.error if failures else logger.info
|
|
150
|
+
log(
|
|
150
151
|
f"********** {desc} ********** "
|
|
151
152
|
f"耗时 {time.perf_counter() - start:.1f}秒{note}"
|
|
152
153
|
)
|
|
@@ -34,21 +34,34 @@ dependencies = [
|
|
|
34
34
|
"numpy>=2.0",
|
|
35
35
|
"sqlalchemy~=2.0.51",
|
|
36
36
|
"sqlmodel>=0.0.39",
|
|
37
|
-
"pymysql>=1.2.0",
|
|
38
|
-
"psycopg2-binary>=2.9.12",
|
|
39
|
-
"redis>=5.0.0",
|
|
40
|
-
"zvec>=0.6.0",
|
|
41
37
|
"sqliteai-vector>=1.0.0",
|
|
42
38
|
"firecrawl-anydoc>=0.2.4",
|
|
43
39
|
"pimd[pdfa]>=2.2.5",
|
|
44
40
|
"markdown-it-py>=3.0",
|
|
45
|
-
"fastmcp>=4.0.3",
|
|
46
41
|
"httpx>=0.28.1",
|
|
47
42
|
"requests>=2.34.0",
|
|
48
43
|
"python-dotenv>=1.2.3",
|
|
49
44
|
]
|
|
50
45
|
dynamic = ["version"]
|
|
51
46
|
|
|
47
|
+
# 关键节点:可选后端按 extras 拆分(0.1.4)。fastmcp/zvec/redis/psycopg2/pymysql
|
|
48
|
+
# 仅在对应 Kit(mcp_kit/zvec_kit/redis_kit/pg_kit/mysql_kit)被实际使用时才需
|
|
49
|
+
# 安装,且均为延迟导入——不装 extras 时 import kit 与基础 Kit 全部可用。
|
|
50
|
+
# 单机 SQLite 场景安装基础版即可,避免拖入重依赖(原全量安装多占约 60MB)。
|
|
51
|
+
[project.optional-dependencies]
|
|
52
|
+
pg = ["psycopg2-binary>=2.9.12"]
|
|
53
|
+
mysql = ["pymysql>=1.2.0"]
|
|
54
|
+
redis = ["redis>=5.0.0"]
|
|
55
|
+
zvec = ["zvec>=0.6.0"]
|
|
56
|
+
mcp = ["fastmcp>=4.0.3"]
|
|
57
|
+
all = [
|
|
58
|
+
"psycopg2-binary>=2.9.12",
|
|
59
|
+
"pymysql>=1.2.0",
|
|
60
|
+
"redis>=5.0.0",
|
|
61
|
+
"zvec>=0.6.0",
|
|
62
|
+
"fastmcp>=4.0.3",
|
|
63
|
+
]
|
|
64
|
+
|
|
52
65
|
[tool.hatch.version]
|
|
53
66
|
path = "kit/__init__.py"
|
|
54
67
|
|
|
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
|
|
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
|