switch to uv #1299
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: tests | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
pull_request_target: | |
schedule: | |
- cron: "42 7 * * 0" # Every Sunday morning when I am fast asleep :) | |
# This is useful for keeping the cache fit and ready | |
workflow_dispatch: | |
jobs: | |
linting: | |
name: linting/formatting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@v3 | |
with: | |
enable-cache: true | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.12 | |
- name: Ubuntu system dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y libgdal-dev libgeos-dev libproj-dev proj-bin proj-data | |
- name: Install the project | |
run: | | |
uv sync --dev --all-extras | |
- name: Style checking | |
run: | | |
uv run ruff check src tests | |
uv run ruff format --check src tests | |
- name: Type checking | |
run: uv run mypy src tests | |
tests: | |
name: python-${{ matrix.python-version }} on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: | |
- ubuntu-latest | |
# - windows-latest | |
# - macos-latest | |
python-version: | |
- "3.10" | |
- "3.11" | |
- "3.12" | |
fail-fast: false | |
env: | |
PYTHON_VERSION: ${{ matrix.python-version }} | |
steps: | |
- uses: actions/checkout@v4 | |
- run: | | |
git fetch --prune --unshallow --tags | |
- name: Install uv | |
uses: astral-sh/setup-uv@v3 | |
with: | |
enable-cache: true | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Download extra data from private repository | |
uses: actions/checkout@v4 | |
with: | |
repository: xoolive/traffic_data | |
token: ${{ secrets.PRIVATE_TOKEN }} | |
persist-credentials: false | |
path: ./traffic_data | |
- name: Create LFS file list (private repository) | |
working-directory: ./traffic_data | |
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id | |
shell: bash | |
- name: Restore LFS cache (private repository) | |
uses: actions/cache@v4 | |
id: lfs-cache | |
with: | |
path: ./traffic_data/.git/lfs | |
key: lfs-${{ hashFiles('./traffic_data/.lfs-assets-id') }}-v1 | |
- name: Git LFS Pull (private repository) | |
working-directory: ./traffic_data | |
run: | | |
git remote set-url origin https://xoolive:${{ secrets.PRIVATE_TOKEN }}@github.com/xoolive/traffic_data.git | |
git lfs pull | |
unzip ENV_PostOPS_AIRAC_2111_04NOV2021_With_Airspace_Closure.zip -d airac_2111 | |
shell: bash | |
- name: Cache folder for traffic | |
uses: actions/cache@v4 | |
id: cache-folder | |
with: | |
path: | | |
~/.cache/traffic/ | |
~/.cache/opensky/ | |
~/.cache/cartes/ | |
key: traffic-${{ hashFiles('uv.lock') }} | |
- name: Ubuntu system dependencies | |
run: | | |
sudo apt update | |
sudo apt install -y libgdal-dev libgeos-dev libproj-dev proj-bin proj-data | |
- name: Install project | |
run: | | |
uv sync --dev --all-extras | |
- name: Run tests | |
if: ${{ matrix.python-version == '3.12' || steps.cache-folder.outputs.cache-hit == 'true' }} | |
env: | |
LD_LIBRARY_PATH: /usr/local/lib | |
TRAFFIC_NOPLUGIN: "" | |
OPENSKY_USERNAME: ${{ secrets.OPENSKY_USERNAME }} | |
OPENSKY_PASSWORD: ${{ secrets.OPENSKY_PASSWORD }} | |
run: | | |
export TRAFFIC_CONFIG=$(uv run python -c "from traffic import config_file; print(config_file)") | |
sed -i "/nm_path =/ s,= $,= $PWD/traffic_data/airac_2111," $TRAFFIC_CONFIG | |
# sed -i "/pkcs12_filename =/ s,= .*$,= $PWD/traffic_data/CC0000007011_501_openssl.p12," $TRAFFIC_CONFIG | |
# sed -i "/pkcs12_password =/ s,= $,= $PKCS12_PASSWORD," $TRAFFIC_CONFIG | |
# Don't purge OpenSky cache files here :) | |
sed -i "/purge = / d" $TRAFFIC_CONFIG | |
uv run traffic cache --fill # download files to have in cache first | |
uv run pytest --cov --cov-report xml | |
- name: Upload coverage to Codecov | |
if: ${{ github.event_name != 'pull_request_target' }} | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
env_vars: PYTHON_VERSION |