Qt.py icon indicating copy to clipboard operation
Qt.py copied to clipboard

Refactor github integration and membership

Open MHendricks opened this issue 6 months ago • 0 comments

Update testing and membership code in preparation for dropping support for older configurations.

Note: This pull request doesn't affect Qt.py for end users. It is however a fairly large change to testing and development for Qt.py developers. This will not be merged for a week or more to allow for feedback.

This pull request is the first step of removing support for PySide and PyQt4 as well as python 2 support #413. It's focused on making it easier to generate common membership and updating the testing suite now that docker is no longer required.

I'm moving to tox because all of the required python and PySide/PyQt bindings are now available on pypi so we don't need to deal with compiling our own c code. I've also never really worked with docker but have used tox for many years. It also allows us to easily setup tests for specific combinations of qt binding and python version.

This pull request makes the following changes

  • Adds tox testing support for Python 3.7 and above, testing PySide2/PySide6/PyQt5/PyQt6.
  • Runs nose tests using tox.
  • Gathers Qt binding membership data using tox and generates markdown report data that can be placed into the wiki. Qt4,Qt5,Qt6, Qt5,Qt6.
  • Documents upcoming removal of Docker based tests.

This pull request prepares for but does not update

  • Drop support for Python 2 and Python 3.6 and below. Python 3.7 support may be dropped in the near future.
  • Drop support for Qt4(PySide, PyQt4).
  • Drop docker based testing. See comments at the top of github/workflows/run-tests.yml

Next steps

This is my rough plan for the next steps required to actually drop Qt4 bindings support and older python. It's subject to change but should cover the main required changes.

  1. Merge(to master) and release this pull request.
  2. Migrate from setup.py/setup.cfg to pyproject.toml only pip packaging. We need to make sure to set requires-python = ">=3.7" so pip won't try to install the new code on unsupported older python versions.
  3. Update Qt.py and other files removing the PySide and PyQt4 implementations.
  4. Remove any python 2 specific code and workarounds.
  5. Remove the old docker and pending removal github action files.
  6. Merge and release the changes from steps 2-5 into the master branch and release as version 2.0.

I think steps 2-5 should be individual commits in the final commit history. For development we may want to manage that with a branch other than master. I think the remaining steps are much less daunting than the changes required by this pull request. The second step is probably the most daunting task, as to figure out all the specific settings required takes a lot of research, but I've already done that research on several repos.

MHendricks avatar Jun 08 '25 23:06 MHendricks