-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PR: Add workflow to run tests with PyQt6 (CI) #23118
Conversation
b15b2e4
to
cf811cf
Compare
@ccordoba12 I have added two PyQt6 fixes to this PR. There are still failures I haven’t looked into; see [1] for the most current CI run as of today. Nevertheless, I think we could consider merging the PR in order to move forward with Qt 6 support. Note there are some review comments [2]. Regarding PySide6 support: In [3] you mentioned that you have PySide6 related fixes. Would you mind providing them? We are more than happy to help the project with the Qt 6 transition (both PySide6 and PyQt6). PS: You may have noticed that we provided less patches in 2024 than in the years before. This is because we had a stable experience with v5.4, and especially so with v5.5. Thank you and the whole dev team very much for this great project ❤️ [1] https://github.com/procitec/spyder/actions/runs/12652008190 |
I'm really happy to see that there are really few failures! That's awesome!
Agreed. Please skip the failing tests for Qt6 and post a list of them in a comment here. Then I'll merge.
I'll try to do it soon (hopefully next week). But I think it'd be better to comment the PySide6 CI slots for now and work on support for it after my PR is merged. What do you think?
Thanks a lot! That will help us to provide more features in 6.1 for you and all other users.
Thanks for your kind words. We're really happy to hear that your experience with Spyder has improved significantly in the last two years. |
About the failure in |
@rear1019, what's missing for this one to be merged now that CIs are green? Only reverting the things you mentioned above? |
@ccordoba12 Sorry for the slow response. I wasn’t able to work on this PR in the last few weeks due to personal circumstances.
The CI executed in this PR doesn’t include the Qt 6 workflow file from this PR. I think this is because the workflow file exists in our fork only. See here [1] for CI runs with Qt 6. There are still some failures. I wasn’t able to reproduce them locally last week. I will look into them gain this week. [1] https://github.com/procitec/spyder/actions/workflows/test-linux-qt6.yml |
Thanks for the update @rear1019! Looking forward to your progress on fixing the tests that are failing. |
I can now reproduce the issue locally: There is a SEGFAULT when @ccordoba12 In the meantime, would you mind providing your patches for |
72907b2
to
35646e5
Compare
Done in PR #23732. |
Thank you very much! I will look into the patches next week. Regarding the SEGFAULT mentioned before: My investigation yielded some positive results. I will finalize the PR next week. |
f9b90d8
to
43bec31
Compare
Notes: - For now the tests run on Linux only. The workflow file based on the existing one for Linux. - Only pip-based installation is used as conda has no PyQt6 package yet. - Only PyQt6 is used as PySide6 is not supported yet.
Fix 'extras_require' in setup.py to fix the warning. This requires fixes for the parsing of dependencies in test_dependencies_in_sync.py: Use the 'packaging' module which simplifies the code.
Set parent object for QTimer and don’t use singleShot() static method. This prevents the timer from being fired after the parent object is destroyed. The issue has been discovered with PyQt6 by test [1]. [1] spyder/plugins/editor/extensions/tests/test_closequotes.py::test_close_quotes
Some tests explicitly close the editorstack widget. qtbot also closes the widget after the test finishes. The latter action may fail when "delete on close" flag is set => reset the flag.
- Add exception handling and exit thread loop when EOF is received - Start thread _after_ connecting signals
Disconnect all signal-slots connections of the main QThread just before runtests.py exits. This prevents a SEGFAULT when the finished signal of the main QThread is triggered. This is an issue in the PyQt6 bindings (PySide6 is also affected).
@ccordoba12, I think this is ready to be merged. Comments from this [1] review are resolved. Some tests are disabled (see commit “tests: Skips tests failing with PyQt6 when PyQt6 is used”). Nevertheless, I think we should consider merging the PR in order to move forward with Qt 6 support. [1] #23118 (review) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A small comment for you, the rest looks good to me @rear1019.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot for your work on this @rear1019!
Description of Changes
This is a draft to add PyQt6/PySide6 to the CI as suggested in PR #22620:
Issue(s) Resolved
Part of #20201.
Affirmation
By submitting this Pull Request or typing my (user)name below,
I affirm the Developer Certificate of Origin
with respect to all commits and content included in this PR,
and understand I am releasing the same under Spyder's MIT (Expat) license.
I certify the above statement is true and correct:
rear1019