Discuss: require Qt 6.1+ for Leo 6.7.1?

19 views
Skip to first unread message

Edward K. Ream

unread,
Sep 20, 2022, 1:03:46 PM9/20/22
to leo-editor
It's way too late to consider any significant changes to Leo to 6.7.0.

Background

Removing support for Qt5 is going to happen. The only question is when.

Supporting both Qt5 and Qt6 prevents mypy and pylint from doing thorough checks. The result is the dreaded software rot.

Furthermore (sheesh) Qt6.1 introduced API changes not present in Qt6.0. Again, it would help mypy and pylint to support only Qt6.1+.

It is easy to install the latest version of Qt6 on any platform.

Summary

I'll soon start work on a PR that supports only Qt6. To prevent accidental merges, I'll mark this PR as a draft.

My plan is to merge the PR into Leo 6.7.1, due in October, but I can always put off the merge if legitimate objections appear.

Edward

Thomas Passin

unread,
Sep 20, 2022, 1:55:05 PM9/20/22
to leo-editor
As always, the problem is most acute for Linux users. Often, the newer packages just aren't available.  In some or many Linux distros you are supposed to install things like Qt or even PyQt through the distro's package manager - for example, Debian doesn't have a Python 3.10 package yet.  It can be possible to install something outside of the package manager, but then it may not play well with the distro's own future updates.  Linux distribution packages typically dismember parts of an application into different directories, and may set up various triggering events that doing it yourself don't.  I do agree that if it's going to be PyQt6+, it has to be 6.1+ because of API changes.  Some Leo things just don't work for lower versions.

As an example, I recently installed Python 3.10 on a Linux Mint VM - there is no distro installer package for it yet. I'm using PyQt 5.15.2 with it.  I just tried to pip- install PyQt6 but this failed with this bit of stack trace:

File "/usr/lib/python3/dist-packages/pkg_resources/_vendor/pyparsing.py", line 943, in <module>
          collections.MutableMapping.register(ParseResults)
      AttributeError: module 'collections' has no attribute 'MutableMapping'


This is not something I can readily solve.  Result - I can't switch yet to PyQt6+ on this Linux system.  

So I'd go real slow with this change.  Just the earlier change to from Python 3.6+ to Python 3.9+ could still be a headache for some Linux users.

Reply all
Reply to author
Forward
0 new messages