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.
Files changed (42) hide show
  1. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/PKG-INFO +35 -10
  2. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/README.md +16 -1
  3. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/__init__.py +1 -1
  4. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/model_client.py +4 -1
  5. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/sqlite_kit.py +6 -1
  6. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/doc_kit.py +9 -6
  7. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/mineru_kit.py +6 -1
  8. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/pyproject.toml +35 -15
  9. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/.gitignore +0 -0
  10. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/__init__.py +0 -0
  11. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/base_service.py +0 -0
  12. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/chat_service.py +0 -0
  13. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/embedding_service.py +0 -0
  14. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/exceptions.py +0 -0
  15. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/failover.py +0 -0
  16. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/image_service.py +0 -0
  17. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/model_builder.py +0 -0
  18. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/pool.py +0 -0
  19. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/profiles.py +0 -0
  20. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/rerank_service.py +0 -0
  21. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/runner.py +0 -0
  22. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/ai/types.py +0 -0
  23. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/common_kit.py +0 -0
  24. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/config/__init__.py +0 -0
  25. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/config/kit_config.py +0 -0
  26. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/config/log_config.py +0 -0
  27. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/__init__.py +0 -0
  28. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/base_db_kit.py +0 -0
  29. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/crud.py +0 -0
  30. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/engine.py +0 -0
  31. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/exceptions.py +0 -0
  32. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/models/__init__.py +0 -0
  33. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/models/base.py +0 -0
  34. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/mysql_kit.py +0 -0
  35. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/pg_kit.py +0 -0
  36. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/query.py +0 -0
  37. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/session.py +0 -0
  38. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/db/transaction.py +0 -0
  39. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/file_kit.py +0 -0
  40. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/mcp_kit.py +0 -0
  41. {sdpy_kit-0.1.4 → sdpy_kit-0.1.5}/kit/redis_kit.py +0 -0
  42. {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.4
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,7 @@ Author: Clark Chang
23
23
  数据库访问通过 kit.db 子包提供(基于 SQLModel)。
24
24
  """
25
25
 
26
- __version__ = "0.1.4"
26
+ __version__ = "0.1.5"
27
27
 
28
28
  from kit.db import (
29
29
  MYSQL,
@@ -23,7 +23,10 @@ import random
23
23
  from collections.abc import AsyncIterator
24
24
  from typing import Final
25
25
 
26
- import httpx
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
- import anydoc
45
- from fpdf import FPDF
46
- from markdown_it import MarkdownIt
47
- from markdown_it.token import Token
48
- from pimd import PiMD
49
- from pimd.exceptions import ConversionError
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
- import requests
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
- # 关键节点:可选后端按 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)。
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
- redis = ["redis>=5.0.0"]
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
- "redis>=5.0.0",
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