File: ci.yml

package info (click to toggle)
python-nox 2025.11.12-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,880 kB
  • sloc: python: 10,199; makefile: 204; sh: 6
file content (134 lines) | stat: -rw-r--r-- 3,821 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
name: CI
on:
  push:
    branches: [main]
  pull_request:
  workflow_dispatch:
    # allow manual runs on branches without a PR

env:
  FORCE_COLOR: "1"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions: {}

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]
        python-version:
          - "3.8"
          - "3.10"
          - "3.13"
          - "3.14"
        include:
          - os: ubuntu-22.04
            python-version: "3.9"
          - os: ubuntu-22.04
            python-version: "3.11"
          - os: macos-15-intel
            python-version: "3.12"
    steps:
      - uses: actions/checkout@v5
        with:
          persist-credentials: false
      - name: Set up non-default Pythons
        uses: actions/setup-python@v6
        with:
          python-version: |
            3.9
            3.10
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v6
        with:
          python-version: ${{ matrix.python-version }}
          allow-prereleases: true
      - name: Setup uv
        uses: astral-sh/setup-uv@v7
      - name: Set up Miniconda
        uses: conda-incubator/setup-miniconda@v3
        if: matrix.python-version == '3.13'
        with:
          auto-update-conda: true
          python-version: ${{ matrix.python-version }}
          use-mamba: true
          channels: conda-forge
      - name: Install Nox-under-test (uv)
        run:  uv pip install --system .
      - name: Run tests on ${{ matrix.os }}
        run: nox --session "tests-${{ matrix.python-version }}" -- --full-trace
      - name: Run min-version tests on ${{ matrix.os }}
        run: nox --session minimums --force-python="${{ matrix.python-version }}" -- --full-trace
      - name: Run Conda tests
        if: matrix.python-version == '3.13'
        run: nox --session "conda_tests" -- --full-trace
      - name: Save coverage report
        uses: actions/upload-artifact@v5
        with:
          name: coverage-${{ github.job }}-${{ strategy.job-index }}
          path: .coverage.*
          include-hidden-files: true
          if-no-files-found: error

  coverage:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
        with:
          persist-credentials: false
      - name: Set up Python 3.12
        uses: actions/setup-python@v6
        with:
          python-version: "3.12"
      - name: Setup uv
        uses: astral-sh/setup-uv@v7
      - name: Install Nox-under-test
        run:  uv pip install --system .
      - name: Download individual coverage reports
        uses: actions/download-artifact@v6
        with:
          pattern: coverage-*
          merge-multiple: true
      - name: Display structure of downloaded files
        run: ls -aR
      - name: Run coverage
        run: nox --session "cover"

  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
        with:
          persist-credentials: false
      - name: Set up Python 3.12
        uses: actions/setup-python@v6
        with:
          python-version: "3.12"
      - name: Install Nox-under-test
        run: python -m pip install --disable-pip-version-check .
      - name: Lint
        run: nox --session "lint"

  docs:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
        with:
          persist-credentials: false
      - name: Set up Python 3.12
        uses: actions/setup-python@v6
        with:
          python-version: "3.12"
      - name: Setup uv
        uses: astral-sh/setup-uv@v7
      - name: Install Nox-under-test
        run:  uv pip install --system .
      - name: Docs
        run: nox --session "docs"