python-socketio-client had originally been installed in 4b9e12408cd3d6dab2f023d9553051618229fcbe for T86015. It was packaged locally as a tandem with python-websocket-client. I requested backports of both for Trusty as part of T91874 and they have been available for some time, but with python-websocket being 0.12.0 and not 0.23.0.
On Trusty, this works fine with the packages from backports:
scfc@toolsbeta-mail-04:~/core_stable$ python pwb.py listpages -liverecentchanges
No handlers could be found for logger "socketIO_client"
1 Baseball/Neue Artikel
2 Roses (Lied)
3 Japetus Steenstrup
4 Manorainjan
^CTraceback (most recent call last):
File "pwb.py", line 270, in <module>
if not main():
File "pwb.py", line 264, in main
run_python_file(filename, [filename] + args, argvu, file_package)
File "pwb.py", line 109, in run_python_file
main_mod.__dict__)
File "./scripts/listpages.py", line 240, in <module>
main()
File "./scripts/listpages.py", line 220, in main
for i, page in enumerate(gen, start=1):
File "/mnt/nfs/labstore-secondary-home/scfc/core_stable/pywikibot/pagegenerators.py", line 2052, in LiveRCPageGenerator
for entry in site_rc_listener(site, total=total):
File "/mnt/nfs/labstore-secondary-home/scfc/core_stable/pywikibot/comms/rcstream.py", line 189, in rc_listener
element = rc_thread.queue.get(timeout=0.1)
File "/usr/lib/python2.7/Queue.py", line 177, in get
self.not_empty.wait(remaining)
File "/usr/lib/python2.7/threading.py", line 358, in wait
_sleep(delay)
KeyboardInterrupt
<type 'exceptions.KeyboardInterrupt'>
CRITICAL: Waiting for 1 network thread(s) to finish. Press ctrl-c to abort
scfc@toolsbeta-mail-04:~/core_stable$But in b96e7f57905751c08a0b5c5197d47dff3bcfe182, @Anoopchandu18 added a requirement on websocket-client>=0.33 because a bug was introduced in version 0.27.0 and fixed in 0.33.0 (T114913), i. e. Pywikibot does not depend on an API only available in 0.33.0. (IMHO this is flawed: If someone fixes version 0.27.0 locally with 0.27.0~something, there is no need to update to 0.33.0).
My assumption is that the Trusty packages python-socketio-client (and its implicit dependency python-websocket) can be safely installed from backports because it will work for people not executing setup.py and those who do execute setup.py will probably work in a virtual environment anyway.
So my plan is:
- Remove python-socketio-client and python-websocket-client from our local Trusty repository.
- Reinstall those packages from Trusty backports (requires purge and install because the package name in backports is python-websocket).
Comments?