[PyQt] 5.11: TypeErrors with QWebEngineCookieStore::setCookieFilter
Phil Thompson
phil at riverbankcomputing.com
Tue Jun 12 10:28:08 BST 2018
On 12 Jun 2018, at 8:25 am, Florian Bruhin <me at the-compiler.org> wrote:
>
> On Mon, Jun 11, 2018 at 05:51:07PM +0100, Phil Thompson wrote:
>> On 11 Jun 2018, at 9:32 am, Florian Bruhin <me at the-compiler.org> wrote:
>>>
>>> Hey,
>>>
>>> I've tried implementing a cookie filter with the Qt 5.11 snapshot
>>> (sip-4.19.9.dev1806101717, PyQt5_gpl-5.11.dev1806101728, Qt 5.11.1
>>> branch, GCC 8.1.1 on Archlinux).
>>>
>>> When trying in my real application with a:
>>>
>>> store = QWebEngineProfile.defaultProfile().cookieStore()
>>> store.setCookieFilter(lambda _info: True)
>>>
>>> I get:
>>>
>>> TypeError: a 'bool' is expected not 'generator'
>>>
>>> I've tried to write a minimal example (attached), but that seems to work
>>> fine. However, when I add the commented "print", I get:
>>>
>>> TypeError: 'managedbuffer' object is not callable
>>>
>>> Not sure if that's the same issue, or two different issues?
>>
>> Should be fixed in tonight's snapshot.
>
> Unfortunately it still seems to interact weirdly with other lambdas. In
> my real code, I get:
>
> File ".../qutebrowser/browser/webengine/webenginetab.py", line 87, in <lambda>
> profile.clearVisitedLinks([url]))
> TypeError: index 0 has type 'FilterRequest' but 'QUrl' is expected
>
> The lambda looks like this and certainly always gets a QUrl:
>
> hist.url_cleared.connect(lambda url, profile=p: profile.clearVisitedLinks([url]))
>
> I've also found another minimal example (attached), where I get this:
>
> TypeError: <lambda>() takes 0 positional arguments but 1 was given
>
> Despite the two lambdas working fine on their own - it seems like the
> QTimer lambda is invoked from the filter instead of the one I actually
> passed.
I was hoping to avoid leaking a filter if you called setFilter() a second time, but it doesn't look like that's possible.
Try again tomorrow.
Phil
More information about the PyQt
mailing list