Fix for Python 3
This commit is contained in:
parent
326b152b05
commit
97b3325d6f
3 changed files with 24 additions and 17 deletions
|
|
@ -11,9 +11,10 @@ before_install:
|
||||||
- sudo apt-get install nodejs
|
- sudo apt-get install nodejs
|
||||||
install:
|
install:
|
||||||
- npm install -G socket.io@0.9
|
- npm install -G socket.io@0.9
|
||||||
- pip install -U --use-mirrors requests
|
- pip install -U requests
|
||||||
- pip install -U --use-mirrors six
|
- pip install -U six
|
||||||
- pip install -U --use-mirrors websocket-client
|
- pip install -U websocket-client
|
||||||
|
- pip install -U coverage
|
||||||
before_script:
|
before_script:
|
||||||
- node serve-tests.js &
|
- node serve-tests.js &
|
||||||
- sleep 3
|
- sleep 3
|
||||||
|
|
|
||||||
9
setup.py
9
setup.py
|
|
@ -1,6 +1,5 @@
|
||||||
import os
|
import os
|
||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
from socketIO_client import __version__
|
|
||||||
|
|
||||||
|
|
||||||
here = os.path.abspath(os.path.dirname(__file__))
|
here = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
@ -10,7 +9,7 @@ CHANGES = open(os.path.join(here, 'CHANGES.md')).read()
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='socketIO-client',
|
name='socketIO-client',
|
||||||
version=__version__,
|
version='0.5.4',
|
||||||
description='A socket.io client library',
|
description='A socket.io client library',
|
||||||
long_description=README + '\n\n' + CHANGES,
|
long_description=README + '\n\n' + CHANGES,
|
||||||
license='MIT',
|
license='MIT',
|
||||||
|
|
@ -28,6 +27,10 @@ setup(
|
||||||
'six',
|
'six',
|
||||||
'websocket-client',
|
'websocket-client',
|
||||||
],
|
],
|
||||||
|
tests_require=[
|
||||||
|
'nose',
|
||||||
|
'coverage',
|
||||||
|
],
|
||||||
packages=find_packages(),
|
packages=find_packages(),
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
zip_safe=True)
|
zip_safe=False)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import codecs
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
|
|
@ -8,7 +9,7 @@ import sys
|
||||||
import time
|
import time
|
||||||
import websocket
|
import websocket
|
||||||
|
|
||||||
from .exceptions import SocketIOError, ConnectionError, TimeoutError
|
from .exceptions import ConnectionError, TimeoutError
|
||||||
|
|
||||||
|
|
||||||
if not hasattr(websocket, 'create_connection'):
|
if not hasattr(websocket, 'create_connection'):
|
||||||
|
|
@ -21,6 +22,11 @@ TRANSPORTS = 'websocket', 'xhr-polling', 'jsonp-polling'
|
||||||
BOUNDARY = six.u('\ufffd')
|
BOUNDARY = six.u('\ufffd')
|
||||||
TIMEOUT_IN_SECONDS = 3
|
TIMEOUT_IN_SECONDS = 3
|
||||||
_log = logging.getLogger(__name__)
|
_log = logging.getLogger(__name__)
|
||||||
|
escape_unicode = codecs.getdecoder('unicode_escape')
|
||||||
|
try:
|
||||||
|
encode_unicode = lambda x: unicode(x).encode('utf-8')
|
||||||
|
except NameError:
|
||||||
|
encode_unicode = lambda x: x
|
||||||
|
|
||||||
|
|
||||||
class _AbstractTransport(object):
|
class _AbstractTransport(object):
|
||||||
|
|
@ -75,10 +81,7 @@ class _AbstractTransport(object):
|
||||||
|
|
||||||
def send_packet(self, code, path='', data='', callback=None):
|
def send_packet(self, code, path='', data='', callback=None):
|
||||||
packet_id = self.set_ack_callback(callback) if callback else ''
|
packet_id = self.set_ack_callback(callback) if callback else ''
|
||||||
try:
|
packet_parts = str(code), packet_id, path, encode_unicode(data)
|
||||||
packet_parts = str(code), packet_id, path, unicode(data).encode('utf-8')
|
|
||||||
except NameError: # fix for p3k
|
|
||||||
packet_parts = str(code), packet_id, path, data
|
|
||||||
packet_text = ':'.join(packet_parts)
|
packet_text = ':'.join(packet_parts)
|
||||||
self.send(packet_text)
|
self.send(packet_text)
|
||||||
self._log(logging.DEBUG, '[packet sent] %s', packet_text)
|
self._log(logging.DEBUG, '[packet sent] %s', packet_text)
|
||||||
|
|
@ -90,7 +93,7 @@ class _AbstractTransport(object):
|
||||||
except IndexError:
|
except IndexError:
|
||||||
pass
|
pass
|
||||||
for packet_text in self.recv(timeout=timeout):
|
for packet_text in self.recv(timeout=timeout):
|
||||||
_log.debug('[packet received] %s', packet_text)
|
self._log(logging.DEBUG, '[packet received] %s', packet_text)
|
||||||
try:
|
try:
|
||||||
packet_parts = packet_text.split(':', 3)
|
packet_parts = packet_text.split(':', 3)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
|
|
@ -136,7 +139,7 @@ class _WebsocketTransport(_AbstractTransport):
|
||||||
self._url = url
|
self._url = url
|
||||||
http_session = _prepare_http_session(kw)
|
http_session = _prepare_http_session(kw)
|
||||||
req = http_session.prepare_request(requests.Request('GET', url))
|
req = http_session.prepare_request(requests.Request('GET', url))
|
||||||
headers = ['%s: %s' % item for item in req.headers.iteritems()]
|
headers = ['%s: %s' % item for item in req.headers.items()]
|
||||||
try:
|
try:
|
||||||
self._connection = websocket.create_connection(url, header=headers)
|
self._connection = websocket.create_connection(url, header=headers)
|
||||||
except socket.timeout as e:
|
except socket.timeout as e:
|
||||||
|
|
@ -229,7 +232,7 @@ class _XHR_PollingTransport(_AbstractTransport):
|
||||||
_get_response(
|
_get_response(
|
||||||
self._http_session.get,
|
self._http_session.get,
|
||||||
self._url,
|
self._url,
|
||||||
params=dict(self._params.items() + [('disconnect', True)]))
|
params=dict(list(self._params.items()) + [('disconnect', True)]))
|
||||||
self._connected = False
|
self._connected = False
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -282,17 +285,17 @@ class _JSONP_PollingTransport(_AbstractTransport):
|
||||||
self._log(logging.WARNING, '[packet error] %s', response_text)
|
self._log(logging.WARNING, '[packet error] %s', response_text)
|
||||||
return
|
return
|
||||||
if not response_text.startswith(BOUNDARY):
|
if not response_text.startswith(BOUNDARY):
|
||||||
yield response_text.decode('unicode_escape')
|
yield escape_unicode(response_text)
|
||||||
return
|
return
|
||||||
for packet_text in _yield_text_from_framed_data(
|
for packet_text in _yield_text_from_framed_data(
|
||||||
response_text, parse=lambda x: x.decode('unicode_escape')):
|
response_text, parse=lambda x: escape_unicode(x)):
|
||||||
yield packet_text
|
yield packet_text
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
_get_response(
|
_get_response(
|
||||||
self._http_session.get,
|
self._http_session.get,
|
||||||
self._url,
|
self._url,
|
||||||
params=dict(self._params.items() + [('disconnect', True)]))
|
params=dict(list(self._params.items()) + [('disconnect', True)]))
|
||||||
self._connected = False
|
self._connected = False
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue