Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 81 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Lint

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
ruff:
name: Ruff (Linter & Formatter)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install Ruff
run: pip install ruff

- name: Run Ruff linter
run: ruff check .

- name: Run Ruff formatter check
run: ruff format --check .

type-check:
name: Type Checking (mypy)
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"

- name: Install dependencies
run: |
uv pip install --system -e .
uv pip install --system mypy types-requests

- name: Run mypy
run: mypy faim_sdk/ --ignore-missing-imports --no-strict-optional
continue-on-error: true

package-check:
name: Package Build Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install build dependencies
run: pip install poetry build twine

- name: Build package
run: poetry build

- name: Check package with twine
run: twine check dist/*

- name: Verify package contents
run: |
tar -tzf dist/*.tar.gz | grep -E "faim_sdk|faim_client"
unzip -l dist/*.whl | grep -E "faim_sdk|faim_client"
81 changes: 81 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Test

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
test:
name: Test Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
if: false # Tests temporarily disabled
strategy:
fail-fast: false
matrix:
python-version: ["3.11", "3.12"]

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"

- name: Install dependencies
run: |
uv pip install --system -e .
uv pip install --system pytest pytest-cov pytest-asyncio

- name: Run unit tests
run: |
pytest tests/unit/ -v --cov=faim_sdk --cov=faim_client --cov-report=xml --cov-report=term

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
if: matrix.python-version == '3.11'
with:
file: ./coverage.xml
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}

test-examples:
name: Test Examples
runs-on: ubuntu-latest
if: false # Tests temporarily disabled
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
version: "latest"

- name: Install dependencies with viz extras
run: |
uv pip install --system -e ".[viz]"
uv pip install --system jupyterlab pandas statsmodels

- name: Check example notebooks can be read
run: |
python -c "import nbformat; nbformat.read('examples/flowstate_simple_example.ipynb', as_version=4)"
python -c "import nbformat; nbformat.read('examples/model_comparison_example.ipynb', as_version=4)"
python -c "import nbformat; nbformat.read('examples/model_comparison_simple.ipynb', as_version=4)"

- name: Verify eval package imports
run: |
python -c "from faim_sdk.eval import mse, mase, crps_from_quantiles, plot_forecast; print('Eval imports successful')"
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ dmypy.json

openapi.json
pyproject.toml
CLAUDE.md
CLAUDE.md
/poetry.lock
Loading
Loading