It 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. I'll upload a Puppet patch soon, inviting comments.