[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: QtPy (python3-qtpy) dependencies



Hi Julian,

Le mercredi 06 avril 2022 à 22:01 +0100, Julian Gilbey a écrit :
> I've just uploaded the latest version of QtPy (source: python-qtpy,
> binary: python3-qtpy).  But I'm disturbed by the dependency list.

Thank you for taking care of it.

> QtPy is a wrapper for PyQt5, PyQt6, PySide2 and PySide6 providing a
> uniform interface to these different packages.  As such, setup.py
> etc. do not specify a dependency on any Qt library, but the package
> is
> of no use without at least one of them installed.

You analysis is correct.

I'll add that, at the time of the initial package submission, only
PyQt5 and PySide2 were supported and the latter was in an uncertain
state maintenance-wise. So it serves pretty much as a shim layer for
"some wrapper around modern Qt" but the only viable option was PyQt5.

Hopefully, things are completely different now and the alternatives
have caught up. Which I guess is the origin of your struggle today.

> At present, the Debian python3-qtpy package depends on 17
> python3-pyqt5* packages, which seems to be at odds with the intention
> of the package to be Qt-package agnostic.  It seems that it would be
> cleaner for python3-qtpy to
>   Recommends: python3-pyqt5 | python3-pyside2.qtcore
> or perhaps to Depends: on these, and then if any packages require any
> more functionality than that provided by python3-pyqt5 or
> python3-pyside2.qtcore, they should explicitly state the packages
> they
> depend on.  But it seems strange that a package depending on
> python3-qtpy should automatically pull in
> python3-pyqt5.qttexttospeech, for example.

Agreed. I suppose the PyQt5 ecosystem has grown since initial
submission. There are two issues here: hard or soft depends and to
which core packages.

Regarding Depends vs Recommends, as you correctly stated before, QtPy
is useless without a "backend" implementation. Which is why I chose
Depends with a choice of alternatives. This way, a client package
depending on QtPy would always get a default implementation, whilst
having the possibility to override it with its own (but then what's the
point?).

Regarding which packages to depend on, that's subject to which subset
of Qt{5,6} is supported by QtPy today. These might be in a need for an
update.

> On the other hand, there are 13 packages in testing that depend on
> python3-qtpy, so they would potentially all require modifications to
> their dependencies if we made this change.  (Three of these are
> "mine", but that still leaves 10 that are not.)  I have not yet gone
> through all 13 to see what python3-pyqt5.* dependencies they actually
> have.

I'd be in favour with the least invasive option, which is to still use
QtPy with Depends on a default implementation but update it with what's
available today.

> I'd appreciate thoughts on how to proceed from this group before
> doing
> anything.

Good luck.

Cheers,
Ghis


Reply to: