Skip to content

F401 in importer.py #247

F401 in importer.py

F401 in importer.py #247

name: Build binaries
on:
push:
paths:
- '**/*'
- '!.*'
- '.github/workflows/build_binaries.yml'
workflow_dispatch:
workflow_call:
permissions:
contents: read
env:
PACKAGE_FILE_NAME: lifeguard_lazy_imports
BINARY_NAME: lifeguard
PYTHON_VERSION: "3.12"
jobs:
sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-02-28
components: clippy, rustfmt
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Test sdist
run: |
pip install dist/"${PACKAGE_FILE_NAME}"-*.tar.gz --force-reinstall
"${BINARY_NAME}" --version
"${BINARY_NAME}" --help
python -m lifeguard_lazy_imports --version
- name: Upload sdist
uses: actions/upload-artifact@v6
with:
name: wheels-sdist
path: dist
macos:
runs-on: macos-14
strategy:
matrix:
platform:
- target: x86_64
arch: x64
- target: aarch64
arch: arm64
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
architecture: ${{ matrix.platform.arch }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist
- name: Test wheel
if: ${{ matrix.platform.target == 'aarch64' }}
run: |
pip install dist/"${PACKAGE_FILE_NAME}"-*.whl --force-reinstall
"${BINARY_NAME}" --version
"${BINARY_NAME}" --help
python -m lifeguard_lazy_imports --version
- name: Upload wheels
uses: actions/upload-artifact@v6
with:
name: wheels-macos-${{ matrix.platform.target }}
path: dist
windows:
runs-on: windows-latest
strategy:
matrix:
platform:
- target: x86_64-pc-windows-msvc
arch: x64
- target: aarch64-pc-windows-msvc
arch: x64
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
architecture: ${{ matrix.platform.arch }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist
- name: Test wheel
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
shell: bash
run: |
python -m pip install dist/"${PACKAGE_FILE_NAME}"-*.whl --force-reinstall
"${BINARY_NAME}" --version
"${BINARY_NAME}" --help
python -m lifeguard_lazy_imports --version
- name: Upload wheels
uses: actions/upload-artifact@v6
with:
name: wheels-${{ matrix.platform.target }}
path: dist
linux:
runs-on: ubuntu-latest
strategy:
matrix:
target:
- x86_64-unknown-linux-gnu
- aarch64-unknown-linux-gnu
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: ${{ env.PYTHON_VERSION }}
architecture: x64
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
manylinux: auto
args: --release --out dist
- name: Test wheel
if: ${{ startsWith(matrix.target, 'x86_64') }}
run: |
pip install dist/"${PACKAGE_FILE_NAME}"-*.whl --force-reinstall
"${BINARY_NAME}" --version
"${BINARY_NAME}" --help
python -m lifeguard_lazy_imports --version
- name: Upload wheels
uses: actions/upload-artifact@v6
with:
name: wheels-${{ matrix.target }}
path: dist
test:
name: Test with Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
needs:
- linux
strategy:
matrix:
python-version: ["3.12", "3.14"]
steps:
- name: Download wheels
uses: actions/download-artifact@v7
with:
name: wheels-x86_64-unknown-linux-gnu
path: dist
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Test wheel
run: |
pip install dist/"${PACKAGE_FILE_NAME}"-*.whl --force-reinstall
"${BINARY_NAME}" --version
"${BINARY_NAME}" --help
python -m lifeguard_lazy_imports --version
merge:
name: Merge artifacts
runs-on: ubuntu-latest
needs:
- sdist
- macos
- windows
- linux
steps:
- name: Merge artifacts
uses: actions/upload-artifact/merge@v4
with:
name: dist