Skip to content

Conversation

@FBumann
Copy link
Member

@FBumann FBumann commented Dec 13, 2025

Description

Brief description of the changes in this PR.

Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Code refactoring

Related Issues

Closes #(issue number)

Testing

  • I have tested my changes
  • Existing tests still pass

Checklist

  • My code follows the project style
  • I have updated documentation if needed
  • I have added tests for new functionality (if applicable)

Summary by CodeRabbit

  • Chores

    • Updated minimum Python version requirement from 3.10 to 3.11.
    • Added support for Python 3.14.
    • Updated test workflow to validate against Python 3.11–3.14.
    • Updated dependency versions and constraints for improved compatibility.
  • Tests

    • Added conditional skips for Gurobi-dependent tests when the solver is unavailable.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 13, 2025

Walkthrough

The PR updates minimum Python support from 3.10 to 3.11, adds Python 3.14 support, removes Python 3.10-specific dependencies (tomli, numexpr), adjusts Gurobi constraints for Python 3.14 compatibility, and adds conditional test skipping based on Gurobi availability.

Changes

Cohort / File(s) Summary
Python version support
pyproject.toml, .github/workflows/tests.yaml
Updated test matrix and minimum Python requirement from 3.10 to 3.11; added Python 3.14 to classifiers; removed 3.10 classifier
Dependency updates
pyproject.toml
Removed tomli and numexpr (Python 3.10-specific); updated gurobipy constraints to >= 10.0.0, < 14 with Python 3.14 gating; updated scipy to 1.16.3 for Python < 3.14 compatibility
Tooling configuration
pyproject.toml
Updated Ruff target-version from py310 to py311
Test infrastructure
tests/test_scenarios.py, tests/deprecated/test_scenarios.py
Added Gurobi availability detection via importlib.util.find_spec(); added @pytest.mark.skipif() decorators to skip tests when Gurobi not installed

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

  • Verify gurobipy and scipy version constraints are correct for Python 3.14
  • Confirm Gurobi availability detection pattern is consistent across both test files
  • Ensure test skipping doesn't mask real failures on systems without Gurobi

Poem

🐰 From 3.10 to 3.11, we hop ahead with glee,
Python 3.14 joins the party—let's see what's to be!
Gurobi gates and versions align,
Dependencies pruned, the support so fine,
A leap to the future, both graceful and clean! 🌟

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description uses the template structure but fails to fill in critical sections; the 'Description' is just placeholder text, no Type of Change is selected, no Related Issues are specified, and Testing checkboxes are unchecked. Fill in the Description section with details about dropping Python 3.10 and adding 3.14 support; select appropriate Type of Change checkbox; provide Related Issues if applicable; check Testing checkboxes if tests have been run.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title 'drop python 3.10 support and add 3.14' clearly and concisely summarizes the main changes in the changeset.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/increment-python-version

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3981c3c and 24ba041.

📒 Files selected for processing (4)
  • .github/workflows/tests.yaml (1 hunks)
  • pyproject.toml (5 hunks)
  • tests/deprecated/test_scenarios.py (4 hunks)
  • tests/test_scenarios.py (4 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: test (3.13)
  • GitHub Check: test (3.11)
  • GitHub Check: test (3.14)
  • GitHub Check: test (3.12)
🔇 Additional comments (14)
tests/test_scenarios.py (4)

1-2: LGTM!

The import of importlib.util is appropriate for runtime package detection.


16-17: LGTM!

The GUROBI_AVAILABLE flag correctly detects gurobipy availability at runtime using importlib.util.find_spec. This pattern enables graceful test skipping when Gurobi is not installed, which is particularly relevant for Python 3.14 where gurobipy wheels are not yet available.


296-296: LGTM!

The skip decorator properly guards the Gurobi-dependent test, allowing the test suite to run on environments without Gurobi (including Python 3.14).


333-333: LGTM!

The skip decorator properly guards the Gurobi-dependent test, consistent with the pattern used elsewhere in the file.

tests/deprecated/test_scenarios.py (4)

1-2: LGTM!

Consistent with the changes in tests/test_scenarios.py.


16-17: LGTM!

The GUROBI_AVAILABLE flag implementation mirrors the pattern in tests/test_scenarios.py, providing consistent runtime detection across test modules.


296-296: LGTM!

Consistent with the skip decorator pattern in tests/test_scenarios.py.


333-333: LGTM!

Consistent with the skip decorator pattern applied throughout the test files.

pyproject.toml (5)

10-10: LGTM!

The minimum Python version requirement has been correctly updated to 3.11, aligning with the PR objectives.


28-28: LGTM!

The Python 3.14 classifier has been added appropriately.


134-134: LGTM!

The ruff target-version has been correctly updated to py311 to match the new minimum Python version.


86-87: Verification confirms scipy 1.16.3 and gurobipy 12.0.3 are pinned correctly for Python 3.14 support.

Scipy 1.16.3 does provide Python 3.14 wheels (cp314), confirming the requirement stated in the comment. Gurobipy 12.0.3 has wheels only through Python 3.13 (cp313), confirming that the python_version < '3.14' constraint is necessary and the "No Python 3.14 wheels yet" comment is accurate.


68-68: The version constraint and timeline comment are accurate. Gurobi officially plans Python 3.14 wheel support in version 13.0.1, scheduled for Q1 2026. The constraint correctly gates gurobipy for Python versions below 3.14, and the comment correctly notes that wheels are not yet available.

.github/workflows/tests.yaml (1)

48-48: Python 3.14 is supported and available — no action needed.

actions/setup-python@v6 fully supports Python 3.14 on ubuntu-24.04. Python 3.14 reached final release on October 7, 2025 (current maintenance release: 3.14.2), and the action can resolve and install it correctly.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@FBumann
Copy link
Member Author

FBumann commented Dec 14, 2025

@coderabbitai review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 14, 2025

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@FBumann FBumann merged commit 78969bd into feature/flow-system-first Dec 14, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants