sdwk 0.1.0__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 (39) hide show
  1. sdwk-0.1.0/PKG-INFO +176 -0
  2. sdwk-0.1.0/README.md +161 -0
  3. sdwk-0.1.0/pyproject.toml +182 -0
  4. sdwk-0.1.0/src/sdwk/__init__.py +2 -0
  5. sdwk-0.1.0/src/sdwk/cli.py +27 -0
  6. sdwk-0.1.0/src/sdwk/commands/__init__.py +1 -0
  7. sdwk-0.1.0/src/sdwk/commands/check.py +192 -0
  8. sdwk-0.1.0/src/sdwk/commands/create.py +96 -0
  9. sdwk-0.1.0/src/sdwk/commands/dev.py +107 -0
  10. sdwk-0.1.0/src/sdwk/commands/publish.py +240 -0
  11. sdwk-0.1.0/src/sdwk/core/__init__.py +1 -0
  12. sdwk-0.1.0/src/sdwk/core/exceptions.py +70 -0
  13. sdwk-0.1.0/src/sdwk/core/project_config.py +70 -0
  14. sdwk-0.1.0/src/sdwk/core/template_manager.py +137 -0
  15. sdwk-0.1.0/src/sdwk/py.typed +0 -0
  16. sdwk-0.1.0/src/sdwk/templates/graph/.gitignore +192 -0
  17. sdwk-0.1.0/src/sdwk/templates/graph/.pre-commit-config.yaml +28 -0
  18. sdwk-0.1.0/src/sdwk/templates/graph/.python-version +1 -0
  19. sdwk-0.1.0/src/sdwk/templates/graph/README.md +129 -0
  20. sdwk-0.1.0/src/sdwk/templates/graph/pyproject.toml +176 -0
  21. sdwk-0.1.0/src/sdwk/templates/graph/sdw.json +48 -0
  22. sdwk-0.1.0/src/sdwk/templates/graph/src/graph.py +367 -0
  23. sdwk-0.1.0/src/sdwk/templates/graph/src/main.py +222 -0
  24. sdwk-0.1.0/src/sdwk/templates/graph/src/models.py +158 -0
  25. sdwk-0.1.0/src/sdwk/templates/graph/src/nodes/__init__.py +60 -0
  26. sdwk-0.1.0/src/sdwk/templates/graph/src/nodes/base.py +178 -0
  27. sdwk-0.1.0/src/sdwk/templates/graph/src/nodes/custom.py +337 -0
  28. sdwk-0.1.0/src/sdwk/templates/graph/tests/test_graph.py +338 -0
  29. sdwk-0.1.0/src/sdwk/templates/graph/workflow.json +135 -0
  30. sdwk-0.1.0/src/sdwk/templates/node/.gitignore +186 -0
  31. sdwk-0.1.0/src/sdwk/templates/node/.pre-commit-config.yaml +28 -0
  32. sdwk-0.1.0/src/sdwk/templates/node/.python-version +1 -0
  33. sdwk-0.1.0/src/sdwk/templates/node/README.md +82 -0
  34. sdwk-0.1.0/src/sdwk/templates/node/pyproject.toml +173 -0
  35. sdwk-0.1.0/src/sdwk/templates/node/sdw.json +61 -0
  36. sdwk-0.1.0/src/sdwk/templates/node/src/main.py +94 -0
  37. sdwk-0.1.0/src/sdwk/templates/node/src/models.py +53 -0
  38. sdwk-0.1.0/src/sdwk/templates/node/src/node.py +122 -0
  39. sdwk-0.1.0/src/sdwk/templates/node/tests/test_node.py +172 -0
sdwk-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,176 @@
1
+ Metadata-Version: 2.3
2
+ Name: sdwk
3
+ Version: 0.1.0
4
+ Summary: SDW Platform SDK
5
+ Author: 徐侨
6
+ Author-email: 徐侨 <xu.qiao@kotei.com.cn>
7
+ Requires-Dist: click>=8.0.0
8
+ Requires-Dist: rich>=13.0.0
9
+ Requires-Dist: questionary>=2.0.0
10
+ Requires-Dist: jinja2>=3.0.0
11
+ Requires-Dist: pydantic>=2.0.0
12
+ Requires-Dist: httpx>=0.25.0
13
+ Requires-Python: >=3.10
14
+ Description-Content-Type: text/markdown
15
+
16
+ # SDWK - SDW Platform SDK
17
+
18
+ SDWK 是 SDW Platform 的官方 SDK,为开发者提供了一套完整的工具链,用于创建、开发和发布 SDW 平台应用。
19
+
20
+ ## 概述
21
+
22
+ SDW Platform 是一个工作流低代码平台,用户可以通过拖拽内置节点组合成工作流图。SDWK SDK 允许开发者:
23
+
24
+ - 创建自定义节点扩展平台功能
25
+ - 开发完整的工作流图应用
26
+ - 使用标准化的开发生命周期工具
27
+
28
+ ## 项目类型
29
+
30
+ SDWK 支持两种项目类型:
31
+
32
+ ### Node 项目
33
+ 单节点处理项目,用于创建可复用的处理单元,具有:
34
+ - 确定的输入和输出接口
35
+ - 独立的业务逻辑处理
36
+ - 标准化的数据模型
37
+
38
+ ### Graph 项目
39
+ 工作流图项目,用于创建包含多个节点及其关系的复杂工作流,支持:
40
+ - 有向无环图结构
41
+ - 节点间数据流转
42
+ - 并行执行和错误处理
43
+
44
+ ## 快速开始
45
+
46
+ ### 安装
47
+
48
+ ```bash
49
+ # 使用 uv 安装
50
+ uv add sdwk
51
+
52
+ # 或使用 pip 安装
53
+ pip install sdwk
54
+ ```
55
+
56
+ ### 创建项目
57
+
58
+ ```bash
59
+ # 交互式创建项目
60
+ sdwk create
61
+
62
+ # 或指定参数创建
63
+ sdwk create --name my-project --type node --description "我的第一个节点"
64
+ ```
65
+
66
+ ### 开发和调试
67
+
68
+ ```bash
69
+ # 进入项目目录
70
+ cd my-project
71
+
72
+ # 启动开发模式
73
+ sdwk dev
74
+
75
+ # 检查项目
76
+ sdwk check
77
+
78
+ # 发布项目
79
+ sdwk publish
80
+ ```
81
+
82
+ ## 文档
83
+
84
+ 详细文档请参考 [docs](./docs/) 目录:
85
+
86
+ - [开发者指南](./docs/developer/) - 快速开始、API 文档、使用指南
87
+ - [项目规范](./docs/specifications/) - 包结构、配置文件规范
88
+ - [平台集成](./docs/platform/) - 与 SDW Platform 对接说明
89
+ - [架构设计](./docs/architecture/) - SDK 架构和设计原理
90
+
91
+ ## 系统要求
92
+
93
+ - Python >= 3.10
94
+ - uv (推荐) 或 pip
95
+
96
+ ## 许可证
97
+
98
+ 本项目采用 MIT 许可证。
99
+
100
+ ## 开发指南
101
+
102
+ 如果您想参与 SDWK SDK 的开发,请按照以下步骤设置开发环境:
103
+
104
+ ### 获取源代码
105
+
106
+ ```bash
107
+ # 克隆项目代码
108
+ git clone https://172.16.0.120/astri/RI-SDW-III/SDW/Platform/Platform-SDK.git sdwk
109
+
110
+ # 进入项目目录
111
+ cd sdwk
112
+
113
+ # 切换到开发分支
114
+ git checkout develop
115
+ ```
116
+
117
+ ### 设置开发环境
118
+
119
+ ```bash
120
+ # 安装依赖
121
+ uv sync
122
+
123
+ # 安装开发钩子(代码质量检查、格式化等)
124
+ uv run prek install
125
+ ```
126
+
127
+ ### 开发工作流
128
+
129
+ 1. **创建功能分支**:
130
+ ```bash
131
+ git checkout -b feature/your-feature-name
132
+ ```
133
+
134
+ 2. **进行开发**:
135
+ - 编写代码
136
+ - 添加测试
137
+ - 更新文档
138
+
139
+ 3. **代码质量检查**:
140
+ ```bash
141
+ # 运行代码检查
142
+ uv run ruff check
143
+
144
+ # 运行格式化
145
+ uv run ruff format
146
+
147
+ # 运行类型检查
148
+ uv run ty
149
+ ```
150
+
151
+ 4. **提交代码**:
152
+ ```bash
153
+ git add .
154
+ git commit -m "feat: 添加新功能描述"
155
+ ```
156
+
157
+ 5. **推送并创建 Pull Request**:
158
+ ```bash
159
+ git push origin feature/your-feature-name
160
+ ```
161
+
162
+ ### 开发规范
163
+
164
+ - 遵循 [项目规范](./docs/specifications/) 中的代码规范
165
+ - 确保所有测试通过
166
+ - 添加适当的文档和注释
167
+ - 使用语义化的提交消息
168
+
169
+ ## 贡献
170
+
171
+ 欢迎提交 Issue 和 Pull Request 来改进 SDWK。
172
+
173
+ ## 联系方式
174
+
175
+ - 作者:徐侨 (xu.qiao@kotei.com.cn)
176
+ - 项目主页:[GitHub Repository]
sdwk-0.1.0/README.md ADDED
@@ -0,0 +1,161 @@
1
+ # SDWK - SDW Platform SDK
2
+
3
+ SDWK 是 SDW Platform 的官方 SDK,为开发者提供了一套完整的工具链,用于创建、开发和发布 SDW 平台应用。
4
+
5
+ ## 概述
6
+
7
+ SDW Platform 是一个工作流低代码平台,用户可以通过拖拽内置节点组合成工作流图。SDWK SDK 允许开发者:
8
+
9
+ - 创建自定义节点扩展平台功能
10
+ - 开发完整的工作流图应用
11
+ - 使用标准化的开发生命周期工具
12
+
13
+ ## 项目类型
14
+
15
+ SDWK 支持两种项目类型:
16
+
17
+ ### Node 项目
18
+ 单节点处理项目,用于创建可复用的处理单元,具有:
19
+ - 确定的输入和输出接口
20
+ - 独立的业务逻辑处理
21
+ - 标准化的数据模型
22
+
23
+ ### Graph 项目
24
+ 工作流图项目,用于创建包含多个节点及其关系的复杂工作流,支持:
25
+ - 有向无环图结构
26
+ - 节点间数据流转
27
+ - 并行执行和错误处理
28
+
29
+ ## 快速开始
30
+
31
+ ### 安装
32
+
33
+ ```bash
34
+ # 使用 uv 安装
35
+ uv add sdwk
36
+
37
+ # 或使用 pip 安装
38
+ pip install sdwk
39
+ ```
40
+
41
+ ### 创建项目
42
+
43
+ ```bash
44
+ # 交互式创建项目
45
+ sdwk create
46
+
47
+ # 或指定参数创建
48
+ sdwk create --name my-project --type node --description "我的第一个节点"
49
+ ```
50
+
51
+ ### 开发和调试
52
+
53
+ ```bash
54
+ # 进入项目目录
55
+ cd my-project
56
+
57
+ # 启动开发模式
58
+ sdwk dev
59
+
60
+ # 检查项目
61
+ sdwk check
62
+
63
+ # 发布项目
64
+ sdwk publish
65
+ ```
66
+
67
+ ## 文档
68
+
69
+ 详细文档请参考 [docs](./docs/) 目录:
70
+
71
+ - [开发者指南](./docs/developer/) - 快速开始、API 文档、使用指南
72
+ - [项目规范](./docs/specifications/) - 包结构、配置文件规范
73
+ - [平台集成](./docs/platform/) - 与 SDW Platform 对接说明
74
+ - [架构设计](./docs/architecture/) - SDK 架构和设计原理
75
+
76
+ ## 系统要求
77
+
78
+ - Python >= 3.10
79
+ - uv (推荐) 或 pip
80
+
81
+ ## 许可证
82
+
83
+ 本项目采用 MIT 许可证。
84
+
85
+ ## 开发指南
86
+
87
+ 如果您想参与 SDWK SDK 的开发,请按照以下步骤设置开发环境:
88
+
89
+ ### 获取源代码
90
+
91
+ ```bash
92
+ # 克隆项目代码
93
+ git clone https://172.16.0.120/astri/RI-SDW-III/SDW/Platform/Platform-SDK.git sdwk
94
+
95
+ # 进入项目目录
96
+ cd sdwk
97
+
98
+ # 切换到开发分支
99
+ git checkout develop
100
+ ```
101
+
102
+ ### 设置开发环境
103
+
104
+ ```bash
105
+ # 安装依赖
106
+ uv sync
107
+
108
+ # 安装开发钩子(代码质量检查、格式化等)
109
+ uv run prek install
110
+ ```
111
+
112
+ ### 开发工作流
113
+
114
+ 1. **创建功能分支**:
115
+ ```bash
116
+ git checkout -b feature/your-feature-name
117
+ ```
118
+
119
+ 2. **进行开发**:
120
+ - 编写代码
121
+ - 添加测试
122
+ - 更新文档
123
+
124
+ 3. **代码质量检查**:
125
+ ```bash
126
+ # 运行代码检查
127
+ uv run ruff check
128
+
129
+ # 运行格式化
130
+ uv run ruff format
131
+
132
+ # 运行类型检查
133
+ uv run ty
134
+ ```
135
+
136
+ 4. **提交代码**:
137
+ ```bash
138
+ git add .
139
+ git commit -m "feat: 添加新功能描述"
140
+ ```
141
+
142
+ 5. **推送并创建 Pull Request**:
143
+ ```bash
144
+ git push origin feature/your-feature-name
145
+ ```
146
+
147
+ ### 开发规范
148
+
149
+ - 遵循 [项目规范](./docs/specifications/) 中的代码规范
150
+ - 确保所有测试通过
151
+ - 添加适当的文档和注释
152
+ - 使用语义化的提交消息
153
+
154
+ ## 贡献
155
+
156
+ 欢迎提交 Issue 和 Pull Request 来改进 SDWK。
157
+
158
+ ## 联系方式
159
+
160
+ - 作者:徐侨 (xu.qiao@kotei.com.cn)
161
+ - 项目主页:[GitHub Repository]
@@ -0,0 +1,182 @@
1
+ [project]
2
+ name = "sdwk"
3
+ version = "0.1.0"
4
+ description = "SDW Platform SDK"
5
+ readme = "README.md"
6
+ authors = [
7
+ { name = "徐侨", email = "xu.qiao@kotei.com.cn" }
8
+ ]
9
+ requires-python = ">=3.10"
10
+ dependencies = [
11
+ "click>=8.0.0",
12
+ "rich>=13.0.0",
13
+ "questionary>=2.0.0",
14
+ "jinja2>=3.0.0",
15
+ "pydantic>=2.0.0",
16
+ "httpx>=0.25.0"
17
+ ]
18
+
19
+ [project.scripts]
20
+ sdwk = "sdwk.cli:main"
21
+
22
+ [build-system]
23
+ requires = ["uv_build>=0.9.0,<0.10.0"]
24
+ build-backend = "uv_build"
25
+
26
+ [dependency-groups]
27
+ dev = [
28
+ "pip>=25.3",
29
+ "prek>=0.2.22",
30
+ "pytest>=9.0.2",
31
+ "ruff>=0.14.9",
32
+ "ty>=0.0.2",
33
+ ]
34
+
35
+
36
+ [tool.ty.terminal]
37
+ output-format = "concise"
38
+
39
+ [tool.ty.rules]
40
+ #unknown-argument = 'ignore'
41
+ unresolved-attribute = 'ignore'
42
+ #missing-argument = 'ignore'
43
+ invalid-argument-type = 'ignore'
44
+ #unresolved-import = 'ignore'
45
+ #not-iterable = 'ignore'
46
+ invalid-parameter-default = 'ignore'
47
+
48
+ deprecated = 'ignore'
49
+ #too-many-positional-arguments = 'ignore'
50
+ #unresolved-reference = 'ignore'
51
+ call-non-callable = 'ignore'
52
+ invalid-return-type = 'ignore'
53
+ #unsupported-operator = 'ignore'
54
+ #invalid-assignment = 'ignore'
55
+
56
+
57
+ # ruff相关配置(检查&格式化)
58
+ # 自动修复规范问题
59
+ # ruff check --preview --fix --unsafe-fixes
60
+ # 格式化项目
61
+ # ruff format (uv format --preview-features format)
62
+ [tool.ruff]
63
+ preview = true
64
+ line-length = 320
65
+ # exclude = ["__init__.py"] # 忽略所有 __init__.py 文件
66
+ exclude = [
67
+ "src/sdwk/templates/",
68
+ ]
69
+
70
+
71
+ # ty规则:https://docs.astral.sh/ty/reference/rules/
72
+
73
+ [tool.ruff.lint]
74
+ # pylint规则
75
+ # https://pylint.pycqa.org/en/latest/user_guide/messages/messages_overview.html
76
+ # pylint规则迁移至uv,某些规则不支持(部分属于pylint定制化规则,非标准)
77
+ # https://github.com/astral-sh/ruff/issues/970
78
+ # https://github.com/astral-sh/ruff/issues/1774
79
+ # 基础规则集
80
+ select = [
81
+ "A", "ARG", "B", "C", "E", "F", "G", "G", "I", "ISC", "N", "PIE", "PLE", "Q", "R", "RET", "SLF", "T", "TID", "UP", "W",
82
+ "PLW",
83
+ "BLE",
84
+ "TRY",
85
+ "SIM",
86
+ "S",
87
+ "FIX",
88
+ "PLC",
89
+ "PLR",
90
+ "D",
91
+ "D103",
92
+ "D100",
93
+ "PLR0916",
94
+ ]
95
+ # 平台检测
96
+ # pylint src --disable=import-error,no-member,line-too-long,broad-exception-caught,broad-exception-raised,logging-fstring-interpolation,too-many-positional-arguments,too-many-instance-attributes,too-many-arguments,too-many-locals,too-many-branches,too-many-statements,too-many-nested-blocks,raise-missing-from,singleton-comparison,too-few-public-methods,consider-iterating-dictionary,consider-using-set-comprehension,not-callable,logging-not-lazy,consider-using-f-string,invalid-name,too-many-public-methods,global-statement,unnecessary-pass,wildcard-import,consider-using-join,cell-var-from-loop,too-many-return-statements,import-outside-toplevel,bare-except,subprocess-run-check,consider-using-dict-items,too-many-boolean-expressions,too-many-lines
97
+
98
+ # 圈复杂度
99
+ mccabe = { max-complexity = 24 }
100
+
101
+ ignore = [
102
+ "BLE001",
103
+ "S110",
104
+ "PLW0603",
105
+ "TRY300",
106
+ "TRY004",
107
+ "PLC0415",
108
+ "TRY002",
109
+ "PLC1901",
110
+ "TRY003",
111
+ "PLR0912",
112
+ "S112",
113
+ "PLR2004",
114
+ "PLR0917",
115
+ "PLR0913",
116
+ "PLR1702",
117
+ "PLR0914",
118
+ "PLR0915",
119
+ "PLR6301",
120
+ "D101",
121
+ "PLW2901",
122
+ "PLC2701",
123
+ "TRY301",
124
+ "D205",
125
+ "D203", # 和D211不能同时启用,这里选择忽略D203
126
+ "D213", # 和D212不能同时启用,这里选择忽略D213
127
+ "D107",
128
+ "SIM108",
129
+ "FIX002",
130
+ "SIM105",
131
+ "TRY401",
132
+ "S501",
133
+ "S324",
134
+ "S104",
135
+ "S101",
136
+ "SLF001",
137
+ "D102",
138
+ "D103",
139
+ "ARG002",
140
+ "G004",
141
+ "B904",
142
+ "G201",
143
+ "A001",
144
+ "A002",
145
+ "B024",
146
+ "N818",
147
+ "ARG001",
148
+ "E402",
149
+ "D105",
150
+ "N802",
151
+ "B008",
152
+ "S311",
153
+ "F811",
154
+ "B903",
155
+ "D100",
156
+ "ARG004",
157
+ "PLR0911",
158
+ "D417",
159
+ "S105",
160
+ "S106",
161
+ "S107",
162
+ "E722",
163
+ "S603",
164
+ "D106",
165
+ "S404",
166
+ "S701",
167
+ "D104",
168
+ ]
169
+
170
+ [tool.ruff.lint.isort]
171
+ # 导入分组顺序(默认:标准库 → 第三方库 → 本地库)
172
+ section-order = [
173
+ "standard-library", # 标准库(如 sys, os)
174
+ "third-party", # 第三方库(如 pandas, requests)
175
+ "first-party", # 本地项目导入
176
+ "local-folder", # 同一目录下的本地导入
177
+ ]
178
+
179
+ # 允许在导入中使用别名(如 import pandas as pd)
180
+ force-sort-within-sections = true
181
+ split-on-trailing-comma = true # 多行导入时在末尾添加逗号
182
+ force-wrap-aliases = true # 强制别名导入使用多行格式(如 import a as b 超过长度时换行)
@@ -0,0 +1,2 @@
1
+ def hello() -> str:
2
+ return "Hello from platform-sdk!"
@@ -0,0 +1,27 @@
1
+ """SDW Platform SDK CLI."""
2
+
3
+ import click
4
+ from rich.console import Console
5
+
6
+ from .commands.check import check
7
+ from .commands.create import create
8
+ from .commands.dev import dev
9
+ from .commands.publish import publish
10
+
11
+ console = Console()
12
+
13
+
14
+ @click.group()
15
+ @click.version_option(version="0.1.0", prog_name="sdwk")
16
+ def main():
17
+ """SDW Platform SDK - 用于创建、开发和发布SDW平台应用的工具."""
18
+
19
+
20
+ # 注册子命令
21
+ main.add_command(create)
22
+ main.add_command(dev)
23
+ main.add_command(check)
24
+ main.add_command(publish)
25
+
26
+ if __name__ == "__main__":
27
+ main()
@@ -0,0 +1 @@
1
+ """Commands module for SDW Platform SDK CLI."""