File: ci.yml

package info (click to toggle)
python-libcst 1.8.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,240 kB
  • sloc: python: 78,096; makefile: 15; sh: 2
file content (142 lines) | stat: -rw-r--r-- 3,768 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: CI

on:
  push:
    branches:
      - main
  pull_request:

permissions: {}

jobs:
  test:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [macos-latest, ubuntu-latest, windows-latest]
        python-version:
          - "3.9"
          - "3.10"
          - "3.11"
          - "3.12"
          - "3.13"
          - "3.13t"
          - "3.14"
          - "3.14t"
    steps:
      - name: Install uv
        uses: astral-sh/setup-uv@v7
        with:
          version: "0.7.13"
          python-version: ${{ matrix.python-version }}
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          persist-credentials: false
      - uses: dtolnay/rust-toolchain@stable
      - name: Build LibCST
        run: uv sync --locked --dev
      - name: Native Parser Tests
        run: uv run poe test
      - name: Coverage
        run: uv run coverage report

  # Run linters
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          persist-credentials: false
      - name: Install uv
        uses: astral-sh/setup-uv@v7
        with:
          version: "0.7.13"
          python-version: "3.10"
      - run: uv run poe lint
      - run: uv run poe fixtures

  # Run pyre typechecker
  typecheck:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          persist-credentials: false
      - name: Install uv
        uses: astral-sh/setup-uv@v7
        with:
          version: "0.7.13"
          python-version: "3.10"
      - run: uv run poe typecheck

  # Build the docs
  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
          persist-credentials: false
      - name: Install uv
        uses: astral-sh/setup-uv@v7
        with:
          version: "0.7.13"
          python-version: "3.10"
      - uses: ts-graphviz/setup-graphviz@v2
      - run: uv run --group docs poe docs
      - name: Archive Docs
        uses: actions/upload-artifact@v4
        with:
          name: sphinx-docs
          path: docs/build

  # Test rust parts
  native:
    name: Rust unit tests
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        python-version: ["3.10", "3.13t"]
    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      - uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
      - name: test
        run: cargo test --manifest-path=native/Cargo.toml --release
      - name: test without python
        if: matrix.os == 'ubuntu-latest'
        run: cargo test --manifest-path=native/Cargo.toml --release --no-default-features
      - name: clippy
        run: cargo clippy --manifest-path=native/Cargo.toml --all-targets --all-features
      - name: compile-benchmarks
        run: cargo bench --manifest-path=native/Cargo.toml --no-run

  rustfmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          persist-credentials: false
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: rustup component add rustfmt
      - name: format
        run: cargo fmt --all --manifest-path=native/Cargo.toml -- --check
  build:
    # only trigger here for pull requests - regular pushes are handled in pypi_upload
    if: ${{ github.event_name == 'pull_request' }}
    uses: Instagram/LibCST/.github/workflows/build.yml@main