Ulauncher: Plugins not working: Websocket error "x takes exactly n arguments (n-1 given)"

Created on 26 Aug 2018  路  17Comments  路  Source: Ulauncher/Ulauncher

Steps to reproduce:

  1. Start Ulauncher
  2. With the kill plugin installed type in kill firefox (or something else you don't mind killing if the plugin should work)

Result: Nothing (no tab completion and nothing happens on pressing enter). Only "Loading" is shown.

The same thing happens with all the plugins I've tried (npms, search files, myip)

Every time I try I get a websocket error in "ulauncher.api.client.Client.Client" that "on_message() takes exactly 3 arguments (2 given)" and sometimes "on_open() takes exactly 2 arguments (1 given)" (see log for more details).

Ulauncher version: 4.1.0.r1
Linux distro: Arch
Desktop environment: Gnome/GTK with x11
Python version: 2.7.15 (GCC 8.1.1 20180531)

Verbose log


Fix: update python-websocket-client (python2-websocket-client for Arch and Fedora) to version 0.52 or higher.

bug

Most helpful comment

I dug around a bit and found the problem: https://github.com/websocket-client/websocket-client/issues/467

Downgrading "fixed" it for me (pip2 may be simply pip on other systems depending on which Python version is the default):

sudo pip2 install --force-reinstall websocket-client==0.48.0

Update: 0.52.0 also works, but not 0.53.0

All 17 comments

I dug around a bit and found the problem: https://github.com/websocket-client/websocket-client/issues/467

Downgrading "fixed" it for me (pip2 may be simply pip on other systems depending on which Python version is the default):

sudo pip2 install --force-reinstall websocket-client==0.48.0

Update: 0.52.0 also works, but not 0.53.0

I'm having the same issue and the fix works as well.

Yep, I meet it, too.

2018-08-28 10:47:58,933 | DEBUG | ulauncher.api.server.ExtensionController: _send_event() | Send event KeywordQueryEvent to "com.github.brpaz.ulauncher-hash"
com.github.brpaz.ulauncher-hash | 2018-08-28 10:47:59,004 | ERROR | websocket: error() | error from callback <bound method Client.on_message of <ulauncher.api.client.Client.Client object at 0x7fcb131ed890>>: on_message() takes exactly 3 arguments (2 given)
  File "/usr/lib/python2.7/site-packages/websocket/_app.py", line 333, in _callback
    callback(*args)

@friday Thanks for reporting this bug.

the error continues after the update
2018-09-02 15:45:11,048 | ERROR | websocket: error() | error from callback >: on_message() takes exactly 3 arguments (2 given)

I get the same error as well.
com.github.manulaiko.ulauncher-openinbrowser | 2018-09-03 10:57:02,225 | ERROR | websocket: error() | error from callback <bound method Client.on_message of <ulauncher.api.client.Client.Client object at 0x7fe69db51910>>: on_message() takes exactly 3 arguments (2 given)

No need to paste the error. We know this is unfixed and because of websocket-client/websocket-client#467

The broken version of python2-websocket-client seems to be 0.49 and 0.50

I don't see how I can lock the version for that package in code, because some distros may not have the necessary version in the main repo.

So please update python-websocket-client (python2-websocket-client for Arch and Fedora) to version 0.51 or higher. Or you can downgrade the package to version 0.48.

Thanks @friday for the solution

0.51.0 is also broken. You probably meant 0.52.0, which was released just a day or so before you wrote that comment. Anyway the latest version works again, so this is fixed now :+1: Since you kept the issue open I'll let you be the judge of when to close it.

Thanks for the heads up.

I'm going to close it in a few weeks. By that time people will hopefully upgrade their packages and won't run into this issues.

Yup. Seems like he gave up and reverted the version which was working for Ulauncher in favor of a version that didn't break other usage cases. Very confusing.

Yup. Seems like he gave up and reverted the version which was working for Ulauncher in favor of a version that didn't break other usage cases. Very confusing.

Sorry I delete my comment, cause i indeed found your comment, on the commit, that reverted the functionality :sweat_smile: so, what's next?

Sorry I delete my comment, cause i indeed found your comment, on the commit, that reverted the functionality so, what's next?

Not sure. I just downgraded with pip for now. See above.

I'm not the maintainer. Just trying to help out, but I guess the methods could be wrapped somehow (although this is what the websocket-client library maintainer has been trying to do/fix for the last 5 releases so maybe it's not trivial), the version could also be fixed to 0.52.0 (meaning it can't be a global dependency like now). In the longer term it could be a good idea to replace it with something more stable, well tested and mature. Based on my impressions so far that could be anything ;)

Based on my impressions so far that could be anything ;)

:rofl:

I've decided to make a workaround because I'm not sure when those breaking changes to WebSocketApp callbacks end.

Fixed in 4.3.0

I had 0.56.0 and I was still seeing the issue and as @friday mentioned I downgraded to 0.52.0 and still see the issue. Can someone please help, why I'm still seeing this issue?

_on_open() takes exactly 3 arguments (2 given)
2019-08-14 14:00:37,797 error from callback >: _on_open() takes exactly 3 arguments (2 given)

Which Ulauncher version are you using @dnome2? This was fixed a year ago.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Warmuser picture Warmuser  路  3Comments

sematula picture sematula  路  5Comments

jonhoo picture jonhoo  路  3Comments

uncertainquark picture uncertainquark  路  5Comments

jbriales picture jbriales  路  6Comments