Skip to content

Commit af37449

Browse files
refactor: 重构项目结构并重命名装饰器
- 将 `dynamic_params` 装饰器重命名为 `use_generators` - 将 `param_generator` 装饰器重命名为 `generator` - 改进了缓存机制,使用作用域缓存替代实例缓存 - 重构了项目目录结构,将代码按照不同功能模块组织 - 将核心功能从 `core` 目录移动到了 `engine` 目录 - 将公共 API 相关的代码移动到了 `public` 目录 - 将装饰器相关的代码移动到了 `public/decorators` 目录 - 将生成器核心类移动到了 `public/generators` 目录 - 将插件处理器移动到了 `plugin/processors` 目录 - 提高了单元测试覆盖率,添加了更多的测试用例 - 更新了所有文档,确保使用新的命名和目录结构 - 删除了 `pyproject.toml` 文件,使用 `setup.py` 作为构建配置 - 添加了 `.coveragerc` 文件,配置测试覆盖率报告
1 parent 0dfca72 commit af37449

87 files changed

Lines changed: 9194 additions & 2671 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.coveragerc

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[run]
2+
source = src/dynamic_params
3+
exclude_lines =
4+
pragma: no cover
5+
def __repr__
6+
raise AssertionError
7+
raise NotImplementedError
8+
omit =
9+
src/dynamic_params/plugin/pytest_plugin.py
10+
**/__init__.py
11+
src/dynamic_params/types.py

.flake8

Lines changed: 0 additions & 3 deletions
This file was deleted.

.github/workflows/code-quality.yml

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,4 @@ jobs:
2727
pip install pre-commit
2828
- name: Run pre-commit checks
2929
run: |
30-
pre-commit run --all-files
31-
- name: Run tests with coverage
32-
run: |
33-
pytest tests/ --cov=src.dynamic_params --cov-branch --cov-report=xml
34-
- name: Upload coverage to Codecov
35-
uses: codecov/codecov-action@v5
36-
with:
37-
file: ./coverage.xml
38-
flags: unittests
39-
name: codecov-umbrella
40-
fail_ci_if_error: true
30+
pre-commit run --all-files

.github/workflows/tests.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Tests and Coverage
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
pull_request:
7+
branches: [ main, develop ]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
strategy:
13+
matrix:
14+
python-version: [3.8, 3.9, '3.10', '3.11']
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
19+
- name: Set up Python ${{ matrix.python-version }}
20+
uses: actions/setup-python@v5
21+
with:
22+
python-version: ${{ matrix.python-version }}
23+
24+
- name: Install dependencies
25+
run: |
26+
python -m pip install --upgrade pip
27+
pip install pytest pytest-cov allure-pytest
28+
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
29+
30+
- name: Run unit tests with coverage
31+
run: |
32+
export PYTHONPATH=src
33+
python -m pytest tests/unit/ --cov=dynamic_params --cov-report=xml --cov-config=.coveragerc
34+
35+
- name: Upload coverage to Codecov
36+
uses: codecov/codecov-action@v5
37+
with:
38+
file: ./coverage.xml
39+
flags: unittests
40+
name: codecov-umbrella
41+
fail_ci_if_error: true

.trae/skills/update_docs.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
# 更新文档
2+
3+
## 功能说明
4+
5+
用于自动化更新项目文档,按照特定流程逐步优化和生成各种文档文件,确保项目文档的一致性、完整性和质量。
6+
7+
### 核心原则
8+
- 遵循行业最佳实践
9+
- 根据文档用途的不同,内容应各有侧重
10+
- 确保文档与代码同步更新
11+
- 保持文档的清晰性和可维护性
12+
13+
### 文档侧重点
14+
- **需求文档**:聚焦于"做什么",突出业务需求、功能要求、验收标准和风险分析
15+
- **设计文档**:聚焦于"怎么做",突出技术实现、架构设计、算法实现和性能优化
16+
- **用户文档**:聚焦于"如何使用",突出使用指南、示例代码和常见问题
17+
- **项目文件**:聚焦于"项目配置",突出依赖管理、构建配置和发布信息
18+
19+
## 工作流程
20+
21+
### 1. 需求文档优化
22+
- 根据草稿版需求文件,以及后续的提问逐步优化
23+
- 最终形成 `specs/需求.md`
24+
- 确保需求文档包含清晰的功能描述、验收标准和边界情况
25+
26+
### 2. 架构设计(可选)
27+
- 根据 `specs/需求.md`,生成 `specs/架构设计.md`
28+
- 当架构简单时可省略此步骤
29+
- 架构设计应包含系统架构图、模块划分和核心流程
30+
31+
### 3. 详细设计生成
32+
- 如果有 `specs/架构设计.md`:根据 `specs/需求.md``specs/架构设计.md`,生成 `specs/详细设计.md`
33+
- 如果没有 `specs/架构设计.md`:根据 `specs/需求.md`,生成或更新 `specs/设计.md`(包含架构设计和详细设计)
34+
- 详细设计应包含类结构、函数接口、数据流和实现细节
35+
36+
### 4. 项目文件生成
37+
- 生成或更新项目文件:`pyproject.toml``README.md``setup.py``docs/STRUCTURE.md`
38+
- 更新 `.gitignore` 文件,确保忽略规则合理
39+
- 更新 `LICENSE` 文件,确保许可证信息完整
40+
- 确保项目文件符合 PEP 标准和项目规范
41+
42+
### 5. 代码生成
43+
- 生成或更新源码和测试用例
44+
- 运行测试并修复问题
45+
- 更新 `docs/reports-readme.md``docs/reports-summary.md`
46+
- 确保代码符合 PEP 8 规范和项目编码标准
47+
48+
### 6. 用户文档生成
49+
- 生成 `docs/usage-guide.md`,提供详细的使用指南,包含常见问题和故障排除
50+
- 更新 `examples/` 目录下的示例文件,确保示例代码与最新版本的 API 一致
51+
52+
### 7. 优化循环
53+
- 以上步骤可能会经过几轮优化,确保文档的准确性和完整性
54+
- 检查文档之间的一致性和相互引用
55+
- 确保文档与代码的同步更新
56+
57+
### 8. 提交准备
58+
- 更新 `CHANGELOG.md` 文件,记录项目的重要变更
59+
- 确保变更记录符合 conventional commits 格式
60+
- 检查所有文档的格式和规范
61+
62+
### 9. CICD 支持
63+
- 更新 `.pre-commit-config.yaml` 文件,确保代码质量检查配置正确
64+
- 确保项目文件符合 CICD 要求,特别是 `.github/workflows/` 目录下的工作流文件
65+
- 确保测试覆盖率报告能正确生成和上传
66+
- 验证项目在多个 Python 版本下的兼容性
67+
- 确保 pre-commit 检查能正常通过
68+
69+
## 使用方法
70+
71+
### 基本命令
72+
- `更新全部文档` - 启动完整的文档更新流程
73+
- `更新需求文档` - 仅更新需求文档部分
74+
- `更新设计文档` - 仅更新设计文档部分
75+
- `更新项目文件` - 仅更新项目配置文件部分
76+
- `更新用户文档` - 仅更新用户文档部分
77+
- `更新 CICD 配置` - 仅更新 CICD 相关配置文件
78+
79+
### 高级命令
80+
- `更新文档流程 <步骤>` - 执行特定步骤的文档更新
81+
例如:`更新文档流程 5` - 执行代码生成步骤
82+
- `检查文档一致性` - 检查所有文档之间的一致性
83+
- `验证文档完整性` - 验证文档是否完整
84+
- `检查文档格式` - 检查文档的格式和规范
85+
86+
### 示例使用
87+
88+
```bash
89+
更新文档
90+
# 启动完整的文档更新流程
91+
92+
更新需求文档
93+
# 仅更新需求文档部分
94+
95+
更新文档流程 7
96+
# 执行优化循环步骤
97+
98+
检查文档一致性
99+
# 检查所有文档之间的一致性
100+
```
101+
102+
## 注意事项
103+
104+
### 准备工作
105+
- **目录结构**:执行文档更新前,请确保项目目录结构完整,特别是 `specs/``docs/` 目录
106+
- **依赖安装**:确保项目依赖已安装,特别是文档生成相关的依赖
107+
- **备份**:在执行大规模文档更新前,建议备份重要文件
108+
109+
### 执行过程
110+
- **用户输入**:文档更新过程中可能需要用户提供额外信息,如需求细节、设计偏好等
111+
- **测试环境**:执行测试时,确保测试环境配置正确,依赖包已安装
112+
- **依赖关系**:注意文档之间的依赖关系,确保更新顺序正确
113+
114+
### 质量保证
115+
- **文档规范**:提交前请检查所有生成的文档是否符合项目规范和格式要求
116+
- **测试覆盖**:运行测试时,确保测试覆盖了所有关键功能
117+
- **代码质量**:确保所有代码和文档更改都能通过 pre-commit 检查
118+
- **跨版本兼容性**:验证项目在多个 Python 版本下的兼容性
119+
120+
### 配置管理
121+
- **版本控制**:确保所有文档更改都被正确提交到版本控制系统
122+
- **CICD 配置**:确保 CICD 工作流文件配置正确,特别是 Python 版本矩阵和测试命令
123+
- **覆盖率报告**:确保测试覆盖率报告能正确生成和上传到代码覆盖率服务
124+
- **配置一致性**:确保项目配置文件之间的一致性,避免冲突
125+
126+
### 最佳实践
127+
- **定期更新**:建议定期更新文档,确保文档与代码同步
128+
- **清晰表述**:使用简洁明了的语言,避免使用模糊或歧义的表述
129+
- **示例代码**:提供真实、可运行的示例代码,帮助用户理解
130+
- **版本标记**:在文档中明确标记版本信息,避免混淆
131+
- **反馈机制**:提供反馈渠道,以便向用户报告文档问题
132+

CHANGELOG.md

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,29 @@
55
格式基于 [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
66
项目遵循 [语义化版本](https://semver.org/spec/v2.0.0.html) 规范。
77

8+
## v0.3.0 - 2026-03-24
9+
10+
### 主要变更
11+
12+
-`dynamic_params` 装饰器重命名为 `use_generators`,注意此变更不保持向后兼容性!
13+
-`param_generator` 装饰器重命名为 `generator`,注意此变更不保持向后兼容性!
14+
- 改进了缓存机制,使用作用域缓存替代实例缓存
15+
- 重构了项目目录结构,将代码按照不同功能模块组织
16+
- 将核心功能从 `core` 目录移动到了 `engine` 目录
17+
- 将公共 API 相关的代码移动到了 `public` 目录
18+
- 将装饰器相关的代码移动到了 `public/decorators` 目录
19+
- 将生成器核心类移动到了 `public/generators` 目录
20+
- 将插件处理器移动到了 `plugin/processors` 目录
21+
- 更新了所有文档,确保使用新的命名和目录结构
22+
- 优化了需求文档,采用更清晰的结构和详细的验收标准
23+
- 优化了设计文档,提供更详细的架构设计和实现方案
24+
- 更新了 README.md 中的示例代码和说明
25+
- 增强了用户指南,添加了更多使用示例和最佳实践
26+
827
## v0.2.0 - 2026-03-12
928

1029
### 主要变更
30+
1131
-`with_dynamic_params` 装饰器重命名为 `dynamic_params`,注意此变更不保持向后兼容性!
1232
- 更新了 pyproject.toml 中的作者信息
1333
- 添加了项目主页和仓库链接到 pyproject.toml
@@ -19,20 +39,25 @@
1939
## v0.1.0 - 2026-03-11
2040

2141
### 初始发布
42+
2243
- pytest-dynamic-params 插件的初始发布
2344

2445
### 核心功能
46+
2547
- **解决参数化时机冲突**:通过在测试运行阶段执行参数生成,支持在参数生成器中使用 fixture 的值
2648
- **解决动态数据生成困难**:允许在参数生成器中调用依赖 fixture 的函数,实现动态数据生成
2749
- **解决复杂的参数组合**:自动处理参数收集、组合和动态生成,无需手动编写钩子函数
2850
- **解决依赖管理缺失**:自动分析和处理参数间的依赖关系,按正确顺序执行生成器
2951

3052
### 技术特性
53+
3154
- 动态参数生成功能
3255
- 支持参数依赖和循环依赖检测
3356
- 缓存机制以提高性能
3457
- 延迟加载支持
3558

3659
### 测试与文档
60+
3761
- 全面的测试覆盖
38-
- 详细的文档和使用示例
62+
- 详细的文档和使用示例
63+

0 commit comments

Comments
 (0)