Skip to content

fully support python 3.14#1659

Merged
bhazelton merged 13 commits intomainfrom
remove_numba_pin
Apr 10, 2026
Merged

fully support python 3.14#1659
bhazelton merged 13 commits intomainfrom
remove_numba_pin

Conversation

@bhazelton
Copy link
Copy Markdown
Member

@bhazelton bhazelton commented Apr 6, 2026

Description

Remove the numba pin to support python 3.14

Motivation and Context

closes #1658

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation change (documentation changes only)
  • Version change
  • Build or continuous integration change
  • Other

Checklist:

Build or continuous integration change checklist:

  • If required or optional dependencies have changed (including version numbers), I have updated the readme, pyproject.toml, environment.yaml and CI conda yaml files to reflect the changes.

@steven-murray
Copy link
Copy Markdown
Contributor

@bhazelton I fixed the main problem and opened up testing against 3.14. Interestingly linux tests on Circle CI fail on 3.11 from a timeout (this has happened a few times now, so I don't think it's just a random networking issue).

3.14 fails everywhere but not during install but instead due to something in lunarsky. I don't know what that error means though! It looks like lunarsky is tested against 3.14 so I'm not sure what's going on.

@bhazelton
Copy link
Copy Markdown
Member Author

I'm fixing the python 3.11 in another branch. It seems that micromamba is not working well anymore, so I'm moving back to miniforge conda. But CI changes like this take forever to get right. So many pushes!

@bhazelton
Copy link
Copy Markdown
Member Author

On the lunarsky issue: I think we need a new release, there hasn't been a release since I fixed the thing that was breaking on 3.14 in that repo and added the testing against 3.14. I'll work on getting a new release out, I can't remember if I can do it or if I need to ask Adam for that.

@steven-murray
Copy link
Copy Markdown
Contributor

Ah! OK I mistakenly assumed that it had been released since the update. I sympathise with the CI updates :-P

@steven-murray
Copy link
Copy Markdown
Contributor

It might be worth considering pixi instead of miniforge... I've converted a lot of my projects to uv instead of pip and it's so good. pixi is the uv equivalent of conda. At least, that's what I'm picking up.

@bhazelton
Copy link
Copy Markdown
Member Author

I'm currently working on pyFHD, which was set up by another developer to use uv. I'm very much not in love with it.

@bhazelton
Copy link
Copy Markdown
Member Author

I merged the CI fix and got a new version of lunarsky out, so I'm going to rebase this and hopefully things will pass.

@bhazelton
Copy link
Copy Markdown
Member Author

Hmm, we're getting errors related to building python-casacore on builds that don't use conda.

@codecov
Copy link
Copy Markdown

codecov bot commented Apr 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 99.93%. Comparing base (b5fcb18) to head (0b2d527).
⚠️ Report is 12 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1659   +/-   ##
=======================================
  Coverage   99.93%   99.93%           
=======================================
  Files          67       67           
  Lines       22706    22706           
=======================================
  Hits        22692    22692           
  Misses         14       14           

☔ 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.

@bhazelton
Copy link
Copy Markdown
Member Author

We also have errors on the intel mac builds. I think the numba pin is how I fixed those builds before. I'm not sure how to deal with that, I don't want to abandon building wheels for intel macs...

@steven-murray
Copy link
Copy Markdown
Contributor

@bhazelton it sounds like LLVM has decided not to support intel macos in its most recent versions, due to it being discontinued on github actions (??). If this is so, it would mean that we'd never be able to support 3.14+ which is of course not a reasonable path forward.

Maybe the best thing to do would be to put conditional constraints on numba -- for python 3.14+ require newer versions, and just don't build the conda package for those newer versions specifically for macos intel. In that way, users of macos intel can either install an older version of pyuvdata through conda, OR install the newest version by installing LLVM themselves and using pip (e.g. https://afnan.io/posts/2018-10-01-using-the-latest-llvm-release-on-macos/)

@bhazelton
Copy link
Copy Markdown
Member Author

I am very happy with a conditional constraints on numba, do you know how to do that in the pyproject.toml? I'm struggling to figure it out.

It turns out that numba issue is completely solved for intel macs if you use conda packages rather than pypi ones.

@bhazelton
Copy link
Copy Markdown
Member Author

Ok, I figured out how to do the conditional dependency specification and the mac intel builds are fixed.

The remaining problem is that builds that use pypi on python 3.14 and include optional dependencies are erroring because python-casacore is failing to build on python 3.14.

The way we have solved our python-casacore issues in general are that we run using conda. So at least for now, it seems like we can decide to either move these jobs to conda or only run them on 3.13. We can also add a job if you like that builds off pypi on python 3.14 without optional dependencies. Unless you have ideas about how to fix the python-casacore builds on python 3.14...

@bhazelton
Copy link
Copy Markdown
Member Author

@steven-murray ok, I changed the numba tests to not install optional dependencies because they are not needed for those tests. I also turned the warnings test into a matrix job to run one version with all dependencies under python 3.13 and one version with only the required dependencies under python 3.14. Unfortunately, while we get past the install step, there's a new error that seems to be related to cython's coverage plugin. This is the best reference I found so far: coveragepy/coveragepy#1790

I don't understand why we aren't seeing this error on the conda builds on circleci, they seem to have all the same versions of the relevant packages...

@bhazelton bhazelton changed the title remove the numba pin fully support python 3.14 Apr 9, 2026
@bhazelton
Copy link
Copy Markdown
Member Author

ok, I turned off coverage in the warnings python 3.14 job, which seems to have let the job run without errors.

@bhazelton bhazelton marked this pull request as ready for review April 9, 2026 02:46
@bhazelton bhazelton requested a review from steven-murray April 9, 2026 02:56
Copy link
Copy Markdown
Contributor

@steven-murray steven-murray left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This all looks correct to me! Thanks @bhazelton for this quick turnaround

@bhazelton bhazelton merged commit eca9fb6 into main Apr 10, 2026
56 checks passed
@bhazelton bhazelton deleted the remove_numba_pin branch April 10, 2026 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Python 3.14 support

2 participants