docs(architecture): remove closure ledger #410
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Pylint Code Quality Check | |
| on: | |
| pull_request: | |
| branches: | |
| - v3 | |
| push: | |
| branches: | |
| - v3 | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: pylint-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| pylint: | |
| runs-on: ubuntu-latest | |
| name: Pylint Code Quality Check | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Set up uv | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| with: | |
| version: '0.12.5' | |
| python-version: '3.14' | |
| enable-cache: true | |
| cache-dependency-glob: | | |
| pyproject.toml | |
| uv.lock | |
| - name: Install dependencies | |
| run: uv sync --locked | |
| - name: Verify pylint config | |
| run: | | |
| # 检查项目中的pylint配置文件是否存在 | |
| if [ -f .pylintrc ]; then | |
| echo "✅ 找到项目配置文件: .pylintrc" | |
| echo "配置文件内容预览:" | |
| head -10 .pylintrc | |
| else | |
| echo "❌ 未找到 .pylintrc 配置文件" | |
| exit 1 | |
| fi | |
| - name: Collect changed Python files | |
| id: changed | |
| env: | |
| EVENT_NAME: ${{ github.event_name }} | |
| BASE_REF: ${{ github.base_ref }} | |
| BEFORE_SHA: ${{ github.event.before }} | |
| CURRENT_SHA: ${{ github.sha }} | |
| run: | | |
| if [[ "$EVENT_NAME" == "pull_request" ]]; then | |
| git diff --name-only --diff-filter=ACMRT \ | |
| "origin/$BASE_REF...HEAD" -- '*.py' > changed-python-files.txt | |
| elif [[ "$EVENT_NAME" == "push" ]] \ | |
| && [[ -n "$BEFORE_SHA" ]] \ | |
| && [[ ! "$BEFORE_SHA" =~ ^0+$ ]] \ | |
| && git cat-file -e "$BEFORE_SHA^{commit}"; then | |
| git diff --name-only --diff-filter=ACMRT \ | |
| "$BEFORE_SHA" "$CURRENT_SHA" -- '*.py' > changed-python-files.txt | |
| else | |
| git diff-tree --no-commit-id --name-only --diff-filter=ACMRT \ | |
| -r HEAD -- '*.py' > changed-python-files.txt | |
| fi | |
| sort -u -o changed-python-files.txt changed-python-files.txt | |
| if [[ -s changed-python-files.txt ]]; then | |
| echo "has_files=true" >> "$GITHUB_OUTPUT" | |
| sed -n '1,200p' changed-python-files.txt | |
| else | |
| echo "has_files=false" >> "$GITHUB_OUTPUT" | |
| echo "本次没有改动 Python 文件" | |
| fi | |
| - name: Run pylint on changed Python files | |
| if: steps.changed.outputs.has_files == 'true' | |
| run: | | |
| xargs uv run --locked --no-sync pylint \ | |
| --output-format=colorized --reports=yes --score=yes \ | |
| < changed-python-files.txt | |
| - name: Generate full advisory report | |
| if: always() | |
| run: | | |
| uv run --locked --no-sync pylint app/ \ | |
| --output-format=json > pylint-report.json || true | |
| - name: Upload pylint report | |
| uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: pylint-report | |
| path: pylint-report.json | |
| - name: Summary | |
| run: | | |
| echo "🎉 Pylint 检查完成!" | |
| echo "✅ 改动 Python 文件没有新增语法错误或严重问题" | |
| echo "📊 全仓建议性报告已保存为构建工件" |