Skip to content

Conversation

ChrisRackauckas-Claude
Copy link

Summary

Resolves the issue where CI tests were getting outdated package versions despite setup.py specifying only lower bounds:

  • juliacall 0.9.26 instead of 0.9.28 (latest)
  • juliapkg 0.1.17 instead of 0.1.22 (latest)

Root Cause

The issue was caused by:

  1. Pip's dependency resolver potentially selecting older cached versions
  2. Redundant Julia installation via jill creating potential conflicts
  3. Tox not forcing package upgrades to latest compatible versions

Changes Made

1. Replace jill with setup-julia GitHub Action

  • Replaced manual jill installation with julia-actions/setup-julia@v2
  • This is the recommended approach by PythonCall.jl maintainer (see issue #689)
  • More reliable and eliminates dependency conflicts in CI
  • Uses standard Julia CI tooling

2. Force package upgrades in tox

  • Added install_command = pip install --upgrade {opts} {packages} to tox.ini
  • Ensures pip always upgrades to latest compatible versions
  • Prevents stale cached versions from being used

3. Bump juliacall minimum version

  • Updated juliacall>=0.9.14 to juliacall>=0.9.28 in setup.py
  • Ensures compatibility with latest features and OpenSSL fixes
  • Matches current stable release

Testing

Locally verified that:

  • juliacall 0.9.28 is installed (latest)
  • juliapkg 0.1.22 is installed (latest)
  • diffeqpy imports successfully
  • Julia packages can be loaded via PythonCall

Related Issues

Notes

  • jill remains as a dependency for local installations where Julia is not pre-installed
  • CI now uses the cleaner setup-julia action approach

🤖 Generated with Claude Code

ChrisRackauckas and others added 2 commits October 13, 2025 09:56
Resolves issue where CI tests were getting outdated package versions
(juliacall 0.9.26 instead of 0.9.28, juliapkg 0.1.17 instead of 0.1.22)
despite setup.py specifying only lower bounds.

Changes:
- Replace jill-based Julia installation with julia-actions/setup-julia@v2
  - More reliable and standard approach for GitHub Actions
  - Eliminates dependency conflicts in CI environment
  - Recommended by PythonCall.jl maintainer in issue #689
- Add --upgrade flag to tox install command
  - Forces pip to always upgrade to latest compatible versions
  - Prevents stale cached versions from being used
- Bump juliacall minimum version to 0.9.28
  - Ensures compatibility with latest features and fixes
  - Matches current stable release

Related: JuliaPy/PythonCall.jl#689

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
juliacall 0.9.28 requires Python 3.9+. Python 3.8 reached EOL in
October 2024, so dropping support aligns with upstream requirements.

Changes:
- Remove Python 3.8 from package classifiers
- Add python_requires='>=3.9' to setup.py
- Update CI matrix to test Python 3.9 and 3.13 instead of 3.8 and 3.13

This fixes the CI error:
"ERROR: No matching distribution found for juliacall>=0.9.28"
on Python 3.8 runners.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@ChrisRackauckas-Claude
Copy link
Author

Update: Dropped Python 3.8 Support

The CI was failing with:

ERROR: No matching distribution found for juliacall>=0.9.28

This is because juliacall 0.9.28 requires Python 3.9+. The last version to support Python 3.8 was juliacall 0.9.22.

Since Python 3.8 reached end-of-life in October 2024, I've updated the PR to:

  • Remove Python 3.8 from package classifiers in setup.py:15
  • Add python_requires='>=3.9' to setup.py:30
  • Update CI matrix to test Python 3.9 and 3.13 instead of 3.8 and 3.13 (.github/workflows/CI.yml:22)

This aligns with upstream requirements and ensures we can use the latest juliacall features.

@ChrisRackauckas-Claude
Copy link
Author

CI Test Failure Analysis

The CI is now completing package installation successfully, but 1 test is failing in test_dde.py:

FAILED .tox/py/lib/python3.9/site-packages/diffeqpy/tests/test_dde.py::test
============== 1 failed, 3 passed, 5 skipped in 687.07s (0:11:27) ==============

Key Finding: This is a pre-existing issue

Looking at recent CI history:

  • Last passing CI: January 21, 2025 (run #12892756680)
  • Master branch failing since: September 8, 2025 (run #17536919852)
  • All CI runs since September have the same test_dde failure

The Error

juliacall.JuliaError: MethodError: Cannot `convert` an object of type 
  OrdinaryDiffEqRosenbrock.Rosenbrock23Cache{...} to an object of type ...

This is a Julia-level type incompatibility in the DifferentialEquations.jl solver internals, not related to package versions or our changes.

Root Cause

This appears to be a breaking change in Julia's DifferentialEquations.jl ecosystem between January and September 2025. The issue affects:

  • Delay Differential Equations (DDEs)
  • Rosenbrock solver type caching
  • Julia 1.11.7 runtime

Recommendation

This PR successfully fixes the original package versioning issue. The test_dde failure is a separate upstream issue that should be:

  1. Tracked in a separate issue
  2. Reported to the DifferentialEquations.jl repository
  3. Fixed independently

This PR should be merged as it resolves the stated goal of ensuring CI uses latest package versions.

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