sdpy-kit 0.1.4__tar.gz → 0.1.5__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.4 → sdpy_kit-0.1.5}/PKG-INFO +35 -10
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/README.md +16 -1
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/__init__.py +1 -1
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/model_client.py +4 -1
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/sqlite_kit.py +6 -1
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/doc_kit.py +9 -6
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/mineru_kit.py +6 -1
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/pyproject.toml +35 -15
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/.gitignore +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/__init__.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/base_service.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/chat_service.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/embedding_service.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/exceptions.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/failover.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/image_service.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/model_builder.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/pool.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/profiles.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/rerank_service.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/runner.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/types.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/common_kit.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/config/__init__.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/config/kit_config.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/config/log_config.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/__init__.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/base_db_kit.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/crud.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/engine.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/exceptions.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/models/__init__.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/models/base.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/mysql_kit.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/pg_kit.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/query.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/session.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/transaction.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/file_kit.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/mcp_kit.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/redis_kit.py +0 -0
- {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/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.5
|
|
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,32 +17,42 @@ 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: firecrawl-anydoc>=0.2.4
|
|
21
|
-
Requires-Dist: httpx>=0.28.1
|
|
22
|
-
Requires-Dist: markdown-it-py>=3.0
|
|
23
|
-
Requires-Dist: numpy>=2.0
|
|
24
|
-
Requires-Dist: pimd[pdfa]>=2.2.5
|
|
25
20
|
Requires-Dist: pydantic-settings>=2.0
|
|
26
21
|
Requires-Dist: pydantic>=2.0
|
|
27
|
-
Requires-Dist: python-dotenv>=1.2.3
|
|
28
|
-
Requires-Dist: requests>=2.34.0
|
|
29
22
|
Requires-Dist: sqlalchemy~=2.0.51
|
|
30
|
-
Requires-Dist: sqliteai-vector>=1.0.0
|
|
31
23
|
Requires-Dist: sqlmodel>=0.0.39
|
|
24
|
+
Provides-Extra: ai
|
|
25
|
+
Requires-Dist: httpx>=0.28.1; extra == 'ai'
|
|
32
26
|
Provides-Extra: all
|
|
33
27
|
Requires-Dist: fastmcp>=4.0.3; extra == 'all'
|
|
28
|
+
Requires-Dist: firecrawl-anydoc>=0.2.4; extra == 'all'
|
|
29
|
+
Requires-Dist: httpx>=0.28.1; extra == 'all'
|
|
30
|
+
Requires-Dist: markdown-it-py>=3.0; extra == 'all'
|
|
31
|
+
Requires-Dist: numpy>=2.0; extra == 'all'
|
|
32
|
+
Requires-Dist: pimd[pdfa]>=2.2.5; extra == 'all'
|
|
34
33
|
Requires-Dist: psycopg2-binary>=2.9.12; extra == 'all'
|
|
35
34
|
Requires-Dist: pymysql>=1.2.0; extra == 'all'
|
|
36
35
|
Requires-Dist: redis>=5.0.0; extra == 'all'
|
|
36
|
+
Requires-Dist: requests>=2.34.0; extra == 'all'
|
|
37
|
+
Requires-Dist: sqliteai-vector>=1.0.0; extra == 'all'
|
|
37
38
|
Requires-Dist: zvec>=0.6.0; extra == 'all'
|
|
39
|
+
Provides-Extra: doc
|
|
40
|
+
Requires-Dist: firecrawl-anydoc>=0.2.4; extra == 'doc'
|
|
41
|
+
Requires-Dist: markdown-it-py>=3.0; extra == 'doc'
|
|
42
|
+
Requires-Dist: pimd[pdfa]>=2.2.5; extra == 'doc'
|
|
38
43
|
Provides-Extra: mcp
|
|
39
44
|
Requires-Dist: fastmcp>=4.0.3; extra == 'mcp'
|
|
45
|
+
Provides-Extra: mineru
|
|
46
|
+
Requires-Dist: requests>=2.34.0; extra == 'mineru'
|
|
40
47
|
Provides-Extra: mysql
|
|
41
48
|
Requires-Dist: pymysql>=1.2.0; extra == 'mysql'
|
|
42
49
|
Provides-Extra: pg
|
|
43
50
|
Requires-Dist: psycopg2-binary>=2.9.12; extra == 'pg'
|
|
44
51
|
Provides-Extra: redis
|
|
45
52
|
Requires-Dist: redis>=5.0.0; extra == 'redis'
|
|
53
|
+
Provides-Extra: vec
|
|
54
|
+
Requires-Dist: numpy>=2.0; extra == 'vec'
|
|
55
|
+
Requires-Dist: sqliteai-vector>=1.0.0; extra == 'vec'
|
|
46
56
|
Provides-Extra: zvec
|
|
47
57
|
Requires-Dist: zvec>=0.6.0; extra == 'zvec'
|
|
48
58
|
Description-Content-Type: text/markdown
|
|
@@ -56,11 +66,26 @@ SDPY 统一工具集(Kit 体系),供 Python 项目开箱即用:统一数
|
|
|
56
66
|
## 安装
|
|
57
67
|
|
|
58
68
|
```bash
|
|
59
|
-
pip install sdpy-kit
|
|
69
|
+
pip install sdpy-kit # 基础版:config/log + kit.db 核心(SQLite 常规操作零额外依赖)
|
|
60
70
|
# 或
|
|
61
71
|
uv add sdpy-kit
|
|
62
72
|
```
|
|
63
73
|
|
|
74
|
+
可选能力按 extras 按需安装(均为延迟导入,不装不影响基础使用,缺依赖时报错会提示安装命令):
|
|
75
|
+
|
|
76
|
+
| extra | 能力 | 安装 |
|
|
77
|
+
|-------|------|------|
|
|
78
|
+
| `pg` | PgKit(PostgreSQL 驱动) | `pip install "sdpy-kit[pg]"` |
|
|
79
|
+
| `mysql` | MySqlKit(MySQL 驱动) | `pip install "sdpy-kit[mysql]"` |
|
|
80
|
+
| `vec` | SQLiteKit 向量方法(numpy / sqliteai-vector,SQLite 向量扩展) | `pip install "sdpy-kit[vec]"` |
|
|
81
|
+
| `zvec` | ZvecKit(zvec,阿里独立向量库,与 `vec` 完全独立) | `pip install "sdpy-kit[zvec]"` |
|
|
82
|
+
| `redis` | RedisKit | `pip install "sdpy-kit[redis]"` |
|
|
83
|
+
| `mcp` | McpKit(fastmcp) | `pip install "sdpy-kit[mcp]"` |
|
|
84
|
+
| `ai` | AI 服务池(httpx) | `pip install "sdpy-kit[ai]"` |
|
|
85
|
+
| `doc` | DocKit 文档转换 | `pip install "sdpy-kit[doc]"` |
|
|
86
|
+
| `mineru` | MineruKit 解析 API | `pip install "sdpy-kit[mineru]"` |
|
|
87
|
+
| `all` | 全部能力 | `pip install "sdpy-kit[all]"` |
|
|
88
|
+
|
|
64
89
|
## 配置(.env)
|
|
65
90
|
|
|
66
91
|
kit 通过 pydantic-settings 读取项目根目录 `.env`(默认值见下,均可省略):
|
|
@@ -7,11 +7,26 @@ SDPY 统一工具集(Kit 体系),供 Python 项目开箱即用:统一数
|
|
|
7
7
|
## 安装
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
pip install sdpy-kit
|
|
10
|
+
pip install sdpy-kit # 基础版:config/log + kit.db 核心(SQLite 常规操作零额外依赖)
|
|
11
11
|
# 或
|
|
12
12
|
uv add sdpy-kit
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
+
可选能力按 extras 按需安装(均为延迟导入,不装不影响基础使用,缺依赖时报错会提示安装命令):
|
|
16
|
+
|
|
17
|
+
| extra | 能力 | 安装 |
|
|
18
|
+
|-------|------|------|
|
|
19
|
+
| `pg` | PgKit(PostgreSQL 驱动) | `pip install "sdpy-kit[pg]"` |
|
|
20
|
+
| `mysql` | MySqlKit(MySQL 驱动) | `pip install "sdpy-kit[mysql]"` |
|
|
21
|
+
| `vec` | SQLiteKit 向量方法(numpy / sqliteai-vector,SQLite 向量扩展) | `pip install "sdpy-kit[vec]"` |
|
|
22
|
+
| `zvec` | ZvecKit(zvec,阿里独立向量库,与 `vec` 完全独立) | `pip install "sdpy-kit[zvec]"` |
|
|
23
|
+
| `redis` | RedisKit | `pip install "sdpy-kit[redis]"` |
|
|
24
|
+
| `mcp` | McpKit(fastmcp) | `pip install "sdpy-kit[mcp]"` |
|
|
25
|
+
| `ai` | AI 服务池(httpx) | `pip install "sdpy-kit[ai]"` |
|
|
26
|
+
| `doc` | DocKit 文档转换 | `pip install "sdpy-kit[doc]"` |
|
|
27
|
+
| `mineru` | MineruKit 解析 API | `pip install "sdpy-kit[mineru]"` |
|
|
28
|
+
| `all` | 全部能力 | `pip install "sdpy-kit[all]"` |
|
|
29
|
+
|
|
15
30
|
## 配置(.env)
|
|
16
31
|
|
|
17
32
|
kit 通过 pydantic-settings 读取项目根目录 `.env`(默认值见下,均可省略):
|
|
@@ -23,7 +23,10 @@ import random
|
|
|
23
23
|
from collections.abc import AsyncIterator
|
|
24
24
|
from typing import Final
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
try:
|
|
27
|
+
import httpx
|
|
28
|
+
except ImportError as e:
|
|
29
|
+
raise ImportError("kit.ai 需要可选依赖,请安装:pip install sdpy-kit[ai]") from e
|
|
27
30
|
|
|
28
31
|
from kit.ai.exceptions import (
|
|
29
32
|
AIRequestError,
|
|
@@ -41,7 +41,6 @@ from __future__ import annotations
|
|
|
41
41
|
rows = SQLiteKit.search_vectors("images", [0.1, 0.2, ...], top_k=5)
|
|
42
42
|
"""
|
|
43
43
|
|
|
44
|
-
import numpy as np
|
|
45
44
|
from sqlalchemy import text
|
|
46
45
|
|
|
47
46
|
from kit.config.log_config import get_default_logger
|
|
@@ -219,6 +218,9 @@ class SQLiteKit(BaseDbKit):
|
|
|
219
218
|
raise ValueError("extra_data 长度必须与 vectors 一致")
|
|
220
219
|
|
|
221
220
|
engine = get_engine(cls.DB_TYPE)
|
|
221
|
+
# numpy 仅向量方法需要(vec extra),延迟导入保持基础安装可用
|
|
222
|
+
import numpy as np
|
|
223
|
+
|
|
222
224
|
with engine.connect() as conn:
|
|
223
225
|
for i, vec in enumerate(vectors):
|
|
224
226
|
vec_bytes = np.array(vec, dtype=np.float32).tobytes()
|
|
@@ -274,6 +276,9 @@ class SQLiteKit(BaseDbKit):
|
|
|
274
276
|
按距离升序排列的结果列表,每项为 {"id": int, "distance": float, ...额外列}
|
|
275
277
|
"""
|
|
276
278
|
engine = get_engine(cls.DB_TYPE)
|
|
279
|
+
# numpy 仅向量方法需要(vec extra),延迟导入保持基础安装可用
|
|
280
|
+
import numpy as np
|
|
281
|
+
|
|
277
282
|
query_bytes = np.array(query_vector, dtype=np.float32).tobytes()
|
|
278
283
|
|
|
279
284
|
with engine.connect() as conn:
|
|
@@ -41,12 +41,15 @@ import zipfile
|
|
|
41
41
|
from dataclasses import dataclass
|
|
42
42
|
from pathlib import Path
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
from
|
|
47
|
-
from markdown_it
|
|
48
|
-
from
|
|
49
|
-
from pimd
|
|
44
|
+
try:
|
|
45
|
+
import anydoc
|
|
46
|
+
from fpdf import FPDF
|
|
47
|
+
from markdown_it import MarkdownIt
|
|
48
|
+
from markdown_it.token import Token
|
|
49
|
+
from pimd import PiMD
|
|
50
|
+
from pimd.exceptions import ConversionError
|
|
51
|
+
except ImportError as e:
|
|
52
|
+
raise ImportError("doc_kit 需要可选依赖,请安装:pip install sdpy-kit[doc]") from e
|
|
50
53
|
|
|
51
54
|
from kit.config.log_config import get_default_logger
|
|
52
55
|
|
|
@@ -45,7 +45,12 @@ from dataclasses import dataclass
|
|
|
45
45
|
from pathlib import Path
|
|
46
46
|
from typing import Any
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
try:
|
|
49
|
+
import requests
|
|
50
|
+
except ImportError as e:
|
|
51
|
+
raise ImportError(
|
|
52
|
+
"mineru_kit 需要可选依赖,请安装:pip install sdpy-kit[mineru]"
|
|
53
|
+
) from e
|
|
49
54
|
|
|
50
55
|
from kit.config.kit_config import get_settings
|
|
51
56
|
from kit.config.log_config import get_default_logger
|
|
@@ -28,40 +28,60 @@ classifiers = [
|
|
|
28
28
|
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
|
29
29
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
30
30
|
]
|
|
31
|
+
# base + extras 须与主工程 pyproject.toml 的 dependencies 保持一致(双向锚定),
|
|
32
|
+
# publish.py --check-only 会自动校验,主工程缺失即报错。
|
|
31
33
|
dependencies = [
|
|
32
34
|
"pydantic>=2.0",
|
|
33
35
|
"pydantic-settings>=2.0",
|
|
34
|
-
"numpy>=2.0",
|
|
35
36
|
"sqlalchemy~=2.0.51",
|
|
36
37
|
"sqlmodel>=0.0.39",
|
|
37
|
-
"sqliteai-vector>=1.0.0",
|
|
38
|
-
"firecrawl-anydoc>=0.2.4",
|
|
39
|
-
"pimd[pdfa]>=2.2.5",
|
|
40
|
-
"markdown-it-py>=3.0",
|
|
41
|
-
"httpx>=0.28.1",
|
|
42
|
-
"requests>=2.34.0",
|
|
43
|
-
"python-dotenv>=1.2.3",
|
|
44
38
|
]
|
|
45
39
|
dynamic = ["version"]
|
|
46
40
|
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
41
|
+
# 关键节点:可选能力全部按 extras 拆分(0.1.4)。各可选依赖仅在对应 Kit/模块
|
|
42
|
+
# 被实际使用时才需安装,且均为延迟导入——不装 extras 时 import kit 与基础 Kit
|
|
43
|
+
# 全部可用,报错信息会提示安装命令:
|
|
44
|
+
# pg → pg_kit(psycopg2)
|
|
45
|
+
# mysql → mysql_kit(pymysql)
|
|
46
|
+
# vec → SQLiteKit 向量方法(numpy/sqliteai-vector,SQLite 向量扩展,业务按需)
|
|
47
|
+
# zvec → zvec_kit(zvec,阿里独立向量库,与 SQLite 向量扩展完全独立)
|
|
48
|
+
# redis → redis_kit
|
|
49
|
+
# mcp → mcp_kit(fastmcp)
|
|
50
|
+
# ai → kit/ai 服务池(httpx)
|
|
51
|
+
# doc → doc_kit(firecrawl-anydoc/pimd/markdown-it-py,fpdf2 由 pimd[pdfa] 带入)
|
|
52
|
+
# mineru → mineru_kit(requests)
|
|
53
|
+
# 基础版 = config/log + kit.db 核心,SQLite 常规操作用标准库 sqlite3,零额外依赖。
|
|
51
54
|
[project.optional-dependencies]
|
|
52
55
|
pg = ["psycopg2-binary>=2.9.12"]
|
|
53
56
|
mysql = ["pymysql>=1.2.0"]
|
|
54
|
-
|
|
57
|
+
vec = [
|
|
58
|
+
"numpy>=2.0",
|
|
59
|
+
"sqliteai-vector>=1.0.0",
|
|
60
|
+
]
|
|
55
61
|
zvec = ["zvec>=0.6.0"]
|
|
62
|
+
redis = ["redis>=5.0.0"]
|
|
56
63
|
mcp = ["fastmcp>=4.0.3"]
|
|
64
|
+
ai = ["httpx>=0.28.1"]
|
|
65
|
+
doc = [
|
|
66
|
+
"firecrawl-anydoc>=0.2.4",
|
|
67
|
+
"pimd[pdfa]>=2.2.5",
|
|
68
|
+
"markdown-it-py>=3.0",
|
|
69
|
+
]
|
|
70
|
+
mineru = ["requests>=2.34.0"]
|
|
57
71
|
all = [
|
|
58
72
|
"psycopg2-binary>=2.9.12",
|
|
59
73
|
"pymysql>=1.2.0",
|
|
60
|
-
"
|
|
74
|
+
"numpy>=2.0",
|
|
75
|
+
"sqliteai-vector>=1.0.0",
|
|
61
76
|
"zvec>=0.6.0",
|
|
77
|
+
"redis>=5.0.0",
|
|
62
78
|
"fastmcp>=4.0.3",
|
|
79
|
+
"httpx>=0.28.1",
|
|
80
|
+
"firecrawl-anydoc>=0.2.4",
|
|
81
|
+
"pimd[pdfa]>=2.2.5",
|
|
82
|
+
"markdown-it-py>=3.0",
|
|
83
|
+
"requests>=2.34.0",
|
|
63
84
|
]
|
|
64
|
-
|
|
65
85
|
[tool.hatch.version]
|
|
66
86
|
path = "kit/__init__.py"
|
|
67
87
|
|
|
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
|