Skip to content

[pre-commit.ci] pre-commit autoupdate #2302

[pre-commit.ci] pre-commit autoupdate

[pre-commit.ci] pre-commit autoupdate #2302

Workflow file for this run

name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
build_wheel:
name: Build wheels
uses: ./.github/workflows/build-wheel.yml
testpypi:
name: Publish package to TestPyPI
needs:
- build_wheel
if: |
github.event_name != 'workflow_dispatch' &&
!(github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork)
environment:
name: ${{ github.event_name }}
url: https://test.pypi.org/p/cx-Freeze
permissions:
id-token: write
runs-on: ubuntu-latest
steps:
- name: Download all artifacts
uses: actions/download-artifact@v4
with:
path: wheelhouse
pattern: cx-freeze-whl-*
merge-multiple: true
- name: Publish package to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: wheelhouse/
repository-url: https://test.pypi.org/legacy/
skip-existing: true
verbose: true
tests:
needs:
- build_wheel
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-14]
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
include:
- os: macos-13 # macos-13 is x86_64
python-version: '3.9'
- os: macos-13
python-version: '3.10'
- os: macos-13
python-version: '3.11'
exclude:
- os: macos-14 # macos-14 is arm64 (apple silicon)
python-version: '3.9'
- os: macos-14
python-version: '3.10'
- os: macos-14
python-version: '3.11'
defaults:
run:
shell: bash
env:
UV_SYSTEM_PYTHON: true
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: |
requirements.txt
tests/requirements.txt
- name: Download the wheel
uses: actions/download-artifact@v4
with:
merge-multiple: true
pattern: cx-freeze-whl-${{ matrix.os }}*
path: wheelhouse
- name: Install dependencies (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get install -qy alien fakeroot rpm
sudo apt-get install -qy --allow-downgrades cpio=2.13+dfsg-7
- name: Install dependencies to test
run: |
uv pip install -r requirements.txt -r tests/requirements.txt
uv pip install cx_Freeze --no-index --no-deps -f wheelhouse --reinstall
- name: Generate coverage report
env:
COVERAGE_FILE: ".coverage.${{ matrix.python-version }}.${{ matrix.os }}"
run: pytest -nauto --cov="cx_Freeze"
- name: Upload coverage reports
uses: actions/upload-artifact@v4
with:
name: cov-${{ matrix.python-version }}.${{ matrix.os }}
path: .coverage.*
include-hidden-files: true
tests_extra:
needs:
- build_wheel
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest]
python-version: ['3.10']
extra-requirement:
- lief==0.14.1
- lief==0.13.2
- lief-disabled
- pywin32
defaults:
run:
shell: bash
env:
UV_SYSTEM_PYTHON: true
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: |
requirements.txt
tests/requirements.txt
- name: Download the wheel
uses: actions/download-artifact@v4
with:
merge-multiple: true
pattern: cx-freeze-whl-${{ matrix.os }}*
path: wheelhouse
- name: Install dependencies to test
run: |
uv pip install -r requirements.txt -r tests/requirements.txt
uv pip install cx_Freeze --no-index --no-deps -f wheelhouse --reinstall
- name: Generate coverage report
run: |
if [ "${{ matrix.extra-requirement }}" == "lief-disabled" ]; then
export CX_FREEZE_BIND=imagehlp
else
uv pip install "${{ matrix.extra-requirement }}"
fi
MATRIX_ID=${{ matrix.python-version }}.${{ matrix.os }}
SUFFIX=$(echo "${{ matrix.extra-requirement }}" | sed 's/==/-/')
export COVERAGE_FILE=".coverage.$MATRIX_ID.$SUFFIX"
pytest -nauto --cov="cx_Freeze"
- name: Upload coverage reports
uses: actions/upload-artifact@v4
with:
name: cov-${{ matrix.python-version }}.${{ matrix.os }}-${{ strategy.job-index }}
path: .coverage.*
include-hidden-files: true
tests_unix_binary_wheel:
needs:
- build_wheel
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ['3.10', '3.12']
defaults:
run:
shell: bash
env:
UV_SYSTEM_PYTHON: true
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: |
requirements.txt
tests/requirements.txt
- name: Download the wheel
uses: actions/download-artifact@v4
with:
merge-multiple: true
pattern: cx-freeze-whl-${{ matrix.os }}*
path: wheelhouse
- name: Install dependencies to test
run: |
uv pip install -r requirements.txt -r tests/requirements.txt
uv pip install cx_Freeze --no-index --no-deps -f wheelhouse --reinstall
- name: Install dependencies - extra
run: |
if [ "${{ matrix.python-version }}" == "3.10" ]; then
uv pip install -i https://pypi.anaconda.org/intel/simple numpy
fi
uv pip install pandas
- name: Generate coverage report
env:
COVERAGE_FILE: ".coverage.${{ matrix.python-version }}.${{ matrix.os }}-pandas"
run: pytest -nauto --cov="cx_Freeze"
- name: Upload coverage reports
uses: actions/upload-artifact@v4
with:
name: cov-${{ matrix.python-version }}.${{ matrix.os }}-pandas
path: .coverage.*
include-hidden-files: true
coverage:
needs:
- tests
- tests_extra
- tests_unix_binary_wheel
permissions:
pull-requests: write
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download coverage data
uses: actions/download-artifact@v4
with:
pattern: cov-*
merge-multiple: true
- name: Coverage comment
id: coverage_comment
uses: py-cov-action/python-coverage-comment-action@v3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MERGE_COVERAGE_FILES: true
- name: Store Pull Request comment to be posted
uses: actions/upload-artifact@v4
if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true'
with:
name: python-coverage-comment-action
path: python-coverage-comment-action.txt