pytest-qt icon indicating copy to clipboard operation
pytest-qt copied to clipboard

Docs out of sync for `qt_api`

Open sneakers-the-rat opened this issue 3 years ago • 2 comments

Hello! Had a test fail with 4.0.0 like:

    @pytest.fixture
    def spawn_terminal(qtbot, blank_pilot_db):
        prefs.clear()
        prefs.set('AGENT', 'TERMINAL')
        pilot_db_fn = blank_pilot_db
        prefs.set('PILOT_DB', pilot_db_fn)
>      app = qt_api.QApplication.instance()

E       AttributeError: '_QtApi' object has no attribute 'QApplication'

after looking around closed issues it looks like using qt_api directly has largely been deprecated: https://github.com/pytest-dev/pytest-qt/pull/358 and https://github.com/pytest-dev/pytest-qt/issues/365 so I think i'll be able to fix it, but the docs still say to use qt_api to test QApplication objects this way:

https://pytest-qt.readthedocs.io/en/latest/qapplication.html?highlight=qt_api#testing-custom-qapplications

from pytestqt.qt_compat import qt_api

class CustomQApplication(qt_api.QtWidgets.QApplication):
    def __init__(self, *argv):
        super().__init__(*argv)
        self.custom_attr = "xxx"

    def custom_function(self):
        pass

I realize the reference i'm using: qt_api.QApplication is different than qt_api.QtWidgets.QApplication but if i'm reading right i should just use QApplication itself? or is that a special case vs. the recommendation to do so with QWidgets eg here: https://github.com/pytest-dev/pytest-qt/issues/365 ?

seems like a reasonably quick fix to the docs, just lettin ya know :)

sneakers-the-rat avatar Jun 05 '21 23:06 sneakers-the-rat

Thanks @sneakers-the-rat for the report!

Perhaps would you like to contribute that fix? It would certainly be appreciated. 😁

nicoddemus avatar Jun 09 '21 11:06 nicoddemus

Not really sure what to best do about this. So far we've always said that qt_compat isn't really intended as public API, but at the same time we're using it for writing the docs indeed.

We could rewrite the docs to use a specific Qt wrapper instead, but that'd mean we'd implicitly "recommend" one of them (then again, we're already kinda doing that with the precedence for PYTEST_QT_API), and it'd also make it much harder if we wanted to introduce doc-testing for our docs.

The-Compiler avatar Jun 13 '21 18:06 The-Compiler