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
|
---
name: Python package
"on": [push, pull_request]
env:
PYO3_USE_ABI3_FORWARD_COMPATIBILITY: "1"
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ["3.10", "3.11", '3.12', '3.13', '3.14']
# See https://github.com/actions/toolkit/issues/399
# include:
# - os: ubuntu-latest
# python-version: pypy3
# experimental: true
fail-fast: false
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 (apt)
run: |
sudo apt install quilt
if: "matrix.os == 'ubuntu-latest'"
- name: Install dependencies (brew)
run: |
brew install quilt
if: "matrix.os == 'macos-latest'"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install -U pip "setuptools>=60" setuptools-gettext cython setuptools-rust
python -m pip install -U pip coverage codecov cython testscenarios dulwich typing-extensions
# paramiko (via pynacl) is broken on python 3.14
if [[ "${{ matrix.python-version }}" == "3.14"* ]]; then
python -m pip install ".[dev,doc,launchpad,git,fastimport]";
else
python -m pip install ".[dev,paramiko,doc,launchpad,git,fastimport]";
fi
- name: Install dependencies (linux/pip)
run: |
sudo apt install libgpgme-dev libgpg-error-dev
mkdir -p "$HOME/.local/bin"
cp .github/gpgme-config "$HOME/.local/bin/gpgme-config"
cp .github/gpg-error-config "$HOME/.local/bin/gpg-error-config"
echo "$HOME/.local/bin" >> $GITHUB_PATH
pip install pyinotify
pip install ".[workspace,pgp]"
if: "matrix.os == 'ubuntu-latest'"
- name: Build docs
run: |
make docs PYTHON=python
- name: Build extensions
run: |
make extensions PYTHON=python
if: "matrix.python-version != 'pypy3'"
- name: Test suite run (Linux)
run: |
./brz selftest
env:
PYTHONHASHSEED: random
BRZ_PLUGIN_PATH: -site:-user
PYTHONPATH: .
if: "matrix.os == 'ubuntu-latest'"
- name: Test suite run (Mac OS)
run: |
./brz selftest --subunit2 | subunit-filter --fixup-expected-failures=xfail.macos -s --passthrough | subunit2pyunit
env:
PYTHONHASHSEED: random
BRZ_PLUGIN_PATH: -site:-user
PYTHONPATH: .
if: "matrix.os == 'macos-latest'"
- name: Test suite run (Windows)
run: |
python -m breezy selftest --subunit2 | subunit-filter --fixup-expected-failures=xfail.windows -s --passthrough | subunit2pyunit
env:
PYTHONHASHSEED: random
BRZ_PLUGIN_PATH: -site:-user
PYTHONPATH: .
shell: bash
if: "matrix.os == 'windows-latest'"
- name: Run mypy
run: |
python -m pip install mypy types-PyYAML types-paramiko types-setuptools typing-extensions
python -m mypy breezy
if: "matrix.python-version != 'pypy3'"
|