diff --git a/.github/workflows/python-test.yml b/.github/workflows/python-test.yml index d1da7d2..288dc6b 100644 --- a/.github/workflows/python-test.yml +++ b/.github/workflows/python-test.yml @@ -4,33 +4,42 @@ on: workflow_dispatch: pull_request: branches: ["dev", "main"] - paths: ["kaievolve/**", "tests/**", "configs/**", "pyproject.toml", ".github/workflows/python-test.yml"] + paths: ["kaievolve/**", "tests/**", "scripts/**", "configs/**", "pyproject.toml", ".github/workflows/python-test.yml"] push: branches: ["dev", "main"] - paths: ["kaievolve/**", "tests/**", "configs/**", "pyproject.toml", ".github/workflows/python-test.yml"] + paths: ["kaievolve/**", "tests/**", "scripts/**", "configs/**", "pyproject.toml", ".github/workflows/python-test.yml"] jobs: - test: + lint: + name: Lint (black) runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.9' - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install -e . - # Install test dependencies - pip install pytest numpy + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + - run: pip install "black==25.1.0" + - name: Black formatting check + run: black --check --line-length 100 kaievolve tests scripts - - name: Run unit tests - env: - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - run: | - python -m unittest discover -s tests -p "test_*.py" -v + test: + name: Tests (py${{ matrix.python-version }}) + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ['3.9', '3.10', '3.11', '3.12'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e . + pip install pytest numpy + - name: Run unit tests + env: + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + run: python -m unittest discover -s tests -p "test_*.py" diff --git a/kaievolve/cli.py b/kaievolve/cli.py index 4c3af53..34ca0e5 100644 --- a/kaievolve/cli.py +++ b/kaievolve/cli.py @@ -118,6 +118,7 @@ def _resolve_best_program(run_dir): candidates = [os.path.join(run_dir, "best", "best_program.py")] ckpts = glob.glob(os.path.join(run_dir, "checkpoints", "checkpoint_*")) if ckpts: + def _ckpt_num(p): m = re.search(r"checkpoint_(\d+)$", p.rstrip("/")) return int(m.group(1)) if m else -1 diff --git a/tests/test_cli_init_from.py b/tests/test_cli_init_from.py index fdaf5fd..8459a49 100644 --- a/tests/test_cli_init_from.py +++ b/tests/test_cli_init_from.py @@ -20,9 +20,7 @@ def test_prefers_best_dir(self): with TemporaryDirectory() as d: _write(os.path.join(d, "best", "best_program.py")) _write(os.path.join(d, "checkpoints", "checkpoint_10", "best_program.py")) - self.assertEqual( - _resolve_best_program(d), os.path.join(d, "best", "best_program.py") - ) + self.assertEqual(_resolve_best_program(d), os.path.join(d, "best", "best_program.py")) def test_falls_back_to_latest_checkpoint(self): with TemporaryDirectory() as d: