Skip to content

Conversation

@DrPaulSharp
Copy link
Contributor

Description

Fixes #3738. The change is ultimately academic, as the build system fails on the requirements for PySide6 before we get to the requires-python section, but I think it will be helpful for users/developers to see in SasView itself that we cannot support python 3.14 until PySide6 starts supporting it.

How Has This Been Tested?

Attempted to install SasView with python 3.14. When commenting out pyopengl and pyside6 in the build system requirements, I get the desired error ERROR: Package 'sasview' requires a different Python: 3.14.0 not in '<3.14,>=3.12'

Review Checklist:

[if using the editor, use [x] in place of [ ] to check a box]

Documentation (check at least one)

  • There is nothing that needs documenting
  • Documentation changes are in this PR
  • There is an issue open for the documentation (link?)

Installers

  • There is a chance this will affect the installers, if so
    • Windows installer (GH artifact) has been tested (installed and worked)
    • MacOSX installer (GH artifact) has been tested (installed and worked)
    • Wheels installer (GH artifact) has been tested (installed and worked)

Licensing (untick if necessary)

  • The introduced changes comply with SasView license (BSD 3-Clause)

@DrPaulSharp DrPaulSharp requested a review from llimeht November 11, 2025 21:56
@llimeht
Copy link
Contributor

llimeht commented Nov 11, 2025

I think a bit more investigation is needed here. I have no problems installing PySide6 with Python 3.14 - uv pip install pyside6 just works.

I also have sasview successfully running with Python 3.14 here. One just needs to remove numba from the requirements.txt (numba does not yet have 3.14 support, tracked here). Looking at the code, numba seems to be an optional dependency, so perhaps it should be moved into some sort of extras group anyway.

@DrPaulSharp
Copy link
Contributor Author

Hmm, this is very strange. When installing with uv, it works as you say. However, when installing with pip, I get the error I described (and shown below). I note that pyside6 itself does state its requirements are "<3.14,>=3.9". Given that we recommend in INSTALL.md to use pip rather than uv, we should probably consider adding this restriction. However, I would like to understand why there is this discrepancy between pip and uv.

image

@rozyczko
Copy link
Member

pip doesn't yet have PySide6 for 3.14, but conda-forge already does
https://anaconda.org/conda-forge/pyside6/6.9.3/download/win-64/pyside6-6.9.3-py314h2c9462b_1.conda

Maybe uv is pulling from conda-forge behind the scenes, just like pixi does.

@llimeht
Copy link
Contributor

llimeht commented Nov 12, 2025

uv is just using the wheels from PyPI, no magic needed.

pyside6_essentials-6.10.0-cp39-abi3-manylinux_2_34_x86_64.whl:

The wheels are tagged as abi3 which means they should work for every Python ≥ 3.9. uv trusts that metadata about the wheel (i.e. cp39 abi3) over the Requires-Python metadata; that seems to be a philosophical reaction to so many projects using strict version pinning that makes it impossible to actually install anything very quickly... just like PySide has done here in using strict pinning only on the basis that it hasn't been tested, and not because it doesn't work. Pinning might look good for the individual project but it is bad for the wider ecosystem and should be used sparingly, etc.

So... the user trying to install with Python 3.14 can either: use uv, or if they want to stick with pip, use python -m pip install --ignore-requires-python pyside6 (and then install the rest of the packages).

Incidentally, the reason why INSTALL.md doesn't list uv currently is that I needed to land PRs quickly to fix problems in the installer and didn't feel like engaging in a protracted argument about favourite new tools to manage venvs, of which there are far too many... (There should be one-- and preferably only one --obvious way to do it.... yeah).

@DrPaulSharp
Copy link
Contributor Author

Ok, given this discussion, and the fact that I would hope this issue is only temporary, I'm happy to not add this limit and close the issue if everyone agrees. However, I would suggest that our preferred approach is to recommend users use python 3.12 or 3.13 until PySide6 are happy themselves with using 3.14, and that @llimeht's methods are used only is someone is completely determined to use python 3.14 (and understands there is a theoretical risk issues may arise).

I've started using uv recently and I'm impressed with how it works, particularly as I now work on multiple projects and have environments to manage. I have encountered issues with SasView though as I've seen uv can hang for some reason, but I'm not yet convinced that the problem is not with my local machine. I see that @rozyczko has suggested using pixi in #3690. As I understand it pixi is similar but not the same as uv thought many of the differences are subtle. Using pixi may make things easier for conda users, but as I see it the disadvantage is that it requires specific syntax in the pyproject.toml which uv does not (at a basic level at least).

Let me know your thoughts.

Copy link
Member

@rozyczko rozyczko left a comment

Choose a reason for hiding this comment

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

Looks good and we should have this until all the (potential) kinks with 3.14 are solved.

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.

PySide6 support issue for Python 3.14

4 participants