File: python-package.yml

package info (click to toggle)
uncertainties 3.2.3-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 768 kB
  • sloc: python: 3,195; makefile: 52; sh: 16
file content (89 lines) | stat: -rw-r--r-- 3,041 bytes parent folder | download | duplicates (2)
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
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python

name: Python package

on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]

jobs:
  build:
    name: Tests
    strategy:
      fail-fast: false
      matrix:
        python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
        os: ["ubuntu-latest", "windows-latest", "macos-latest"]
    runs-on: ${{ matrix.os }}

    steps:
    - uses: actions/checkout@v4
    - name: Set up Python ${{ matrix.python-version }}
      uses: actions/setup-python@v5
      with:
        python-version: ${{ matrix.python-version }}
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install .[all]
    - name: Test source code and docs
      run: |
        python -m pytest tests/ doc/ uncertainties/ --cov=uncertainties --cov-report=xml --cov-report=term --doctest-modules --doctest-glob="*.rst"
    - name: Upload coverage reports to Codecov
      uses: codecov/codecov-action@v4.6.0
      with:
        flags: ${{ matrix.os }}-${{ matrix.python-version }}
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
    - name: Benchmarking upload to Codspeed
      if: matrix.python-version == '3.12' && matrix.os == 'ubuntu-latest'
      uses: CodSpeedHQ/action@v3
      with:
        run: |
          cd tests
          python -m pytest --codspeed
        token: ${{ secrets.CODSPEED_TOKEN }}
  test_without_numpy:
    name: Test without numpy
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: 3.12
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        python -m pip install .[test]
    - name: Test source code and docs
      run:
        cd tests;
        python -m pytest --ignore=test_unumpy.py --ignore=test_ulinalg.py -k "not test_monte_carlo_comparison"
          --cov=uncertainties --cov=. --cov-report=xml --cov-report=term
    - name: Upload coverage reports to Codecov
      uses: codecov/codecov-action@v4.6.0
      with:
        flags: no-numpy
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
  results:
    # This step aggregates the results from all the tests and allows us to
    # require only this single job to pass for a PR to be merged rather than
    # requiring each job in the matrix separately.
    # See https://github.com/orgs/community/discussions/26822?sort=old#discussioncomment-8285141
    if: ${{ always() }}
    runs-on: ubuntu-latest
    name: Final Results
    needs: [build,test_without_numpy]
    steps:
      - run: exit 1
        if: >-
          ${{
               contains(needs.*.result, 'failure')
            || contains(needs.*.result, 'cancelled')
            || contains(needs.*.result, 'skipped')
          }}