Skip to content

Python migration to CondaPkg.jl and PythonCall.jl + claude skill python-dep-manager#431

Merged
odunbar merged 17 commits into
mainfrom
orad/python-resolve-for-1.1
May 30, 2026
Merged

Python migration to CondaPkg.jl and PythonCall.jl + claude skill python-dep-manager#431
odunbar merged 17 commits into
mainfrom
orad/python-resolve-for-1.1

Conversation

@odunbar

@odunbar odunbar commented May 29, 2026

Copy link
Copy Markdown
Member

Purpose

  • for v1.1, automerge broke as conda tried to default install 3.13.
    • In trying to consolidate the management it lead to further breakages and i discoverd that an much cleaner system appears to be moving from Conda+PyCall to CondaPkg+PythonCall. Here, we don't need dependencies on the Julia SciKitLearn.jl and we can use memory (in the form of a toml file) to store the python versioning, rather than having to call Conda.add( package = "x.y.z") in all the differnt CI piplines with pycall builds
    • I created a skill to maintain this setting in future.
  • Closes PDMats inappropriate patch -> breaks GaussianProcesses.jl -> Breaks CES.jl #432

Content

  • remove Conda/PyCall, add CondaPkg/PythonCall
  • add CondaPkg.toml (which will hold the conda versions fixed to their current working status)
  • add .claude/skills/python-dep-manager/SKILL.md
  • As now we can call python directly with pythoncall, we use SciKitLearn from python not the wrapping package SciKitLearn.jl. Therefore we also migrate SKLJL->SKLPy with a deprecation/migration notice for users.
  • installation docs have been updated,
  • buildkite and github actions are now much cleaner
  • docs here

MISC

  • Pin PDMats to 0.11.36 to stop issues with GP ldiv! ambiguity.
  • Another random Manopt error occured. as we double until output_dim it seems like the latest manopt does not handle this, so added an exit case if k==output_dim, though still tries for k==output_dim-1
  • docs deployment wasn't tagged to main, updated devbranch=main in docs/make.jl

Example output

During tests we see the standard build output:

...
CalibrateEmulateSample
│      CondaPkg Found dependencies: /home/odunbar/.julia/packages/CondaPkg/lKlVY/CondaPkg.toml
│      CondaPkg Found dependencies: /home/odunbar/.julia/packages/PythonCall/JksWe/CondaPkg.toml
│      CondaPkg Found dev dependencies: /home/odunbar/Dropbox/Caltech/CESjl/tmp/CalibrateEmulateSample.jl/CondaPkg.toml
│      CondaPkg Resolving changes
│               + libstdcxx
│               + libstdcxx-ng
│               + openssl
│               + python
│               + scikit-learn
│               + scipy
│      CondaPkg Initialising pixi
│               │ /home/odunbar/.julia/artifacts/4ae17cee0bd922f66b2c72bf2f01c22481a5ec19/bin/pixi
│               │ init
│               │ --format pixi
│               └ /tmp/jl_XcgVeG/.CondaPkg
│  ✔ Created /tmp/jl_XcgVeG/.CondaPkg/pixi.toml
│      CondaPkg Wrote /tmp/jl_XcgVeG/.CondaPkg/pixi.toml
│               │ [dependencies]
│               │ scikit-learn = "=1.5.1"
│               │ openssl = ">=3, <3.6"
│               │ libstdcxx = ">=3.4,<15.0"
│               │ libstdcxx-ng = ">=3.4,<15.0"
│               │ scipy = "=1.14.1"
│               │ 
│               │     [dependencies.python]
│               │     channel = "conda-forge"
│               │     build = "*cp*"
│               │     version = ">=3.10,!=3.14.0,!=3.14.1,<4, =3.11"
│               │ 
│               │ [workspace]
│               │ name = ".CondaPkg"
│               │ platforms = ["linux-64"]
│               │ channels = ["conda-forge"]
│               │ channel-priority = "strict"
│               └ description = "automatically generated by CondaPkg.jl"
│      CondaPkg Installing packages
│               │ /home/odunbar/.julia/artifacts/4ae17cee0bd922f66b2c72bf2f01c22481a5ec19/bin/pixi
│               │ install
│               └ --manifest-path /tmp/jl_XcgVeG/.CondaPkg/pixi.toml
│  ✔ The default environment has been installed.

  • I have read and checked the items on the review checklist.

@odunbar odunbar changed the title Consolidate python build and calls to into build.jl and make conda install python 3.11 there Python migration to CondaPkg.jl and PythonCall.jl + claude skill python-dep-manager May 30, 2026
@codecov

codecov Bot commented May 30, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.71429% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 94.97%. Comparing base (74f8e44) to head (7444439).

Files with missing lines Patch % Lines
src/Utilities/likelihood_informed.jl 40.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main     #431      +/-   ##
==========================================
- Coverage   95.12%   94.97%   -0.15%     
==========================================
  Files          12       12              
  Lines        2400     2408       +8     
==========================================
+ Hits         2283     2287       +4     
- Misses        117      121       +4     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@odunbar

odunbar commented May 30, 2026

Copy link
Copy Markdown
Member Author

Merging as tests resolved and documentation building with new Pyhton environments

@odunbar
odunbar merged commit 30d522f into main May 30, 2026
8 of 10 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.

PDMats inappropriate patch -> breaks GaussianProcesses.jl -> Breaks CES.jl

1 participant