summaryrefslogtreecommitdiff
path: root/dev-python/ws4py
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/ws4py')
-rw-r--r--dev-python/ws4py/Manifest2
-rw-r--r--dev-python/ws4py/files/ws4py-0.3.4-tests.patch67
-rw-r--r--dev-python/ws4py/files/ws4py-0.5.1-python3.7+-compatibility.patch93
-rw-r--r--dev-python/ws4py/metadata.xml16
-rw-r--r--dev-python/ws4py/ws4py-0.3.4-r1.ebuild55
-rw-r--r--dev-python/ws4py/ws4py-0.5.1-r1.ebuild56
-rw-r--r--dev-python/ws4py/ws4py-0.5.1.ebuild51
-rw-r--r--dev-python/ws4py/ws4py-9999.ebuild56
8 files changed, 396 insertions, 0 deletions
diff --git a/dev-python/ws4py/Manifest b/dev-python/ws4py/Manifest
new file mode 100644
index 000000000000..73f87f82749e
--- /dev/null
+++ b/dev-python/ws4py/Manifest
@@ -0,0 +1,2 @@
+DIST ws4py-0.3.4.tar.gz 65467 BLAKE2B c51e338f3c65e100b55e83cd7b09fb8e4eafec3adc118a2744ea4aabc54c91efacda94cb3018550049d617b6759198cfbdb4497a024c597de942abe9e5517ab6 SHA512 32cd2eb9df7367e2bf42e354766a0ca407715a863be6b51b7701ec6e0537a2ecf7c2a59423f56ae093855b075c30a4065c7f7efe3b0227915639223b9ba7a55f
+DIST ws4py-0.5.1.tar.gz 116673 BLAKE2B 31db304800f0d3da61dc4c1a3381a8fcfcfa8f16b36d916311cc32f1d294c9f7b3627dac673edf824f529f485f825ca418ab1e1a8a2fda5583c6a6a1bd9b752c SHA512 4c90d66d37fb5bdc8f7fc9fd184b20a7dc2dae811ecf3a041477e3c26a2577008be7041799daca5b8c0de65cb2454022a6c135cf02534ca98b6946abbfce0e11
diff --git a/dev-python/ws4py/files/ws4py-0.3.4-tests.patch b/dev-python/ws4py/files/ws4py-0.3.4-tests.patch
new file mode 100644
index 000000000000..dde60f2ed04d
--- /dev/null
+++ b/dev-python/ws4py/files/ws4py-0.3.4-tests.patch
@@ -0,0 +1,67 @@
+From 185c88cb6779b3b15a5c14047bb62b8fcb8d2e57 Mon Sep 17 00:00:00 2001
+From: Sebastian Pipping <sebastian@pipping.org>
+Date: Sat, 10 Mar 2018 00:33:37 +0100
+Subject: [PATCH] Fix AttributeErrors from mistaken Mock.assert_call_once_with
+
+This commit is a backport/subset of:
+https://github.com/Lawouach/WebSocket-for-Python/commit/b5d47f7b3497f1b713a20fe6306b7d9afdd8c408
+---
+ test/test_manager.py | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/test/test_manager.py b/test/test_manager.py
+index 8c229b0..aacc162 100644
+--- a/test/test_manager.py
++++ b/test/test_manager.py
+@@ -16,10 +16,10 @@ class WSManagerTest(unittest.TestCase):
+ ws.sock.fileno.return_value = 1
+
+ m.add(ws)
+- m.poller.register.assert_call_once_with(ws)
++ m.poller.register.assert_called_once_with(1)
+
+ m.remove(ws)
+- m.poller.unregister.assert_call_once_with(ws)
++ m.poller.unregister.assert_called_once_with(1)
+
+ @patch('ws4py.manager.SelectPoller')
+ def test_cannot_add_websocket_more_than_once(self, MockSelectPoller):
+@@ -49,7 +49,7 @@ class WSManagerTest(unittest.TestCase):
+ self.assertEqual(len(m), 1)
+ m.remove(ws)
+ self.assertEqual(len(m), 0)
+- m.poller.unregister.assert_call_once_with(ws)
++ m.poller.unregister.assert_called_once_with(1)
+ m.poller.reset_mock()
+
+ m.remove(ws)
+@@ -98,7 +98,7 @@ class WSManagerTest(unittest.TestCase):
+ m.add(ws)
+ m.start()
+
+- ws.terminate.assert_call_once_with()
++ ws.terminate.assert_called_once_with()
+
+ m.stop()
+
+@@ -109,7 +109,7 @@ class WSManagerTest(unittest.TestCase):
+ ws = MagicMock()
+ m.add(ws)
+ m.close_all()
+- ws.terminate.assert_call_once_with(1001, 'Server is shutting down')
++ ws.close.assert_called_once_with(code=1001, reason='Server is shutting down')
+
+ @patch('ws4py.manager.SelectPoller')
+ def test_broadcast(self, MockSelectPoller):
+@@ -120,7 +120,7 @@ class WSManagerTest(unittest.TestCase):
+ m.add(ws)
+
+ m.broadcast(b'hello there')
+- ws.send.assert_call_once_with(b'hello there')
++ ws.send.assert_called_once_with(b'hello there', False)
+
+ @patch('ws4py.manager.SelectPoller')
+ def test_broadcast_failure_must_not_break_caller(self, MockSelectPoller):
+--
+2.16.2
+
diff --git a/dev-python/ws4py/files/ws4py-0.5.1-python3.7+-compatibility.patch b/dev-python/ws4py/files/ws4py-0.5.1-python3.7+-compatibility.patch
new file mode 100644
index 000000000000..12b14111634a
--- /dev/null
+++ b/dev-python/ws4py/files/ws4py-0.5.1-python3.7+-compatibility.patch
@@ -0,0 +1,93 @@
+From: Matthias Klose <doko@ubuntu.com>
+Date: Sun, 29 Jul 2018 09:01:36 +0200
+Subject: Fix compatibility with Python 3.7.
+Origin: http://launchpadlibrarian.net/380629852/python-ws4py_0.4.2+dfsg1-2_0.4.2+dfsg1-2ubuntu1.diff.gz
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=903529
+
+---
+ test/autobahn_test_servers.py | 4 ++--
+ ws4py/async_websocket.py | 9 +++++++--
+ ws4py/server/tulipserver.py | 7 ++++++-
+ 3 files changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/test/autobahn_test_servers.py b/test/autobahn_test_servers.py
+index 3e33f82..8b77954 100644
+--- a/test/autobahn_test_servers.py
++++ b/test/autobahn_test_servers.py
+@@ -142,7 +142,7 @@ def run_python_wsgi(host="127.0.0.1", port=9002):
+ """
+ run_python_wsgi_async(host, port, False)
+
+-def run_python_wsgi_async(host="127.0.0.1", port=9010, async=True):
++def run_python_wsgi_async(host="127.0.0.1", port=9010, async_=True):
+ """
+ Runs wsgi server on python 2.x with async middleware"
+ """
+@@ -153,7 +153,7 @@ def run_python_wsgi_async(host="127.0.0.1", port=9010, async=True):
+ from ws4py.server.wsgiutils import WebSocketWSGIApplication
+
+ app = WebSocketWSGIApplication(handler_cls=EchoWebSocket)
+- if async:
++ if async_:
+ def middleware(app):
+ def later(environ, start_response):
+ for part in app(environ, start_response):
+diff --git a/ws4py/async_websocket.py b/ws4py/async_websocket.py
+index 9e2a4c7..096763d 100644
+--- a/ws4py/async_websocket.py
++++ b/ws4py/async_websocket.py
+@@ -18,6 +18,11 @@ delegated_generator_websocket_on_top_of_asyncio.py
+ import asyncio
+ import types
+
++try: # pragma: no cover
++ asyncio_ensure_future = asyncio.ensure_future # Python >= 3.5
++except AttributeError: # pragma: no cover
++ asyncio_ensure_future = getattr(asyncio, 'async') # Python < 3.5
++
+ from ws4py.websocket import WebSocket as _WebSocket
+ from ws4py.messaging import Message
+
+@@ -84,7 +89,7 @@ class WebSocket(_WebSocket):
+ def closeit():
+ yield from self.proto.writer.drain()
+ self.proto.writer.close()
+- asyncio.async(closeit())
++ asyncio.asyncio_ensure_future(closeit())
+
+ def _write(self, data):
+ """
+@@ -94,7 +99,7 @@ class WebSocket(_WebSocket):
+ def sendit(data):
+ self.proto.writer.write(data)
+ yield from self.proto.writer.drain()
+- asyncio.async(sendit(data))
++ asyncio.asyncio_ensure_future(sendit(data))
+
+ @asyncio.coroutine
+ def run(self):
+diff --git a/ws4py/server/tulipserver.py b/ws4py/server/tulipserver.py
+index 2786c16..ce2e9fb 100644
+--- a/ws4py/server/tulipserver.py
++++ b/ws4py/server/tulipserver.py
+@@ -6,6 +6,11 @@ import io
+
+ import asyncio
+
++try: # pragma: no cover
++ asyncio_ensure_future = asyncio.ensure_future # Python >= 3.5
++except AttributeError: # pragma: no cover
++ asyncio_ensure_future = getattr(asyncio, 'async') # Python < 3.5
++
+ from ws4py import WS_KEY, WS_VERSION
+ from ws4py.exc import HandshakeError
+ from ws4py.websocket import WebSocket
+@@ -40,7 +45,7 @@ class WebSocketProtocol(asyncio.StreamReaderProtocol):
+ #self.stream.set_transport(transport)
+ asyncio.StreamReaderProtocol.connection_made(self, transport)
+ # Let make it concurrent for others to tag along
+- f = asyncio.async(self.handle_initial_handshake())
++ f = asyncio.asyncio_ensure_future(self.handle_initial_handshake())
+ f.add_done_callback(self.terminated)
+
+ @property
diff --git a/dev-python/ws4py/metadata.xml b/dev-python/ws4py/metadata.xml
new file mode 100644
index 000000000000..abf80adc974f
--- /dev/null
+++ b/dev-python/ws4py/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>whissi@gentoo.org</email>
+ <name>Thomas Deutschmann</name>
+ </maintainer>
+ <use>
+ <flag name="client">Install client modules</flag>
+ <flag name="server">Install server modules</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">Lawouach/WebSocket-for-Python</remote-id>
+ </upstream>
+ <origin>gentoo-staging</origin>
+</pkgmetadata>
diff --git a/dev-python/ws4py/ws4py-0.3.4-r1.ebuild b/dev-python/ws4py/ws4py-0.3.4-r1.ebuild
new file mode 100644
index 000000000000..d6697eff1d24
--- /dev/null
+++ b/dev-python/ws4py/ws4py-0.3.4-r1.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# We could depend on dev-python/cherrypy when USE=server, but
+# that is an optional component ...
+# Same for www-servers/tornado and USE=client ... so why not???
+# pypy is viable but better with a cutdown set of deps
+
+EAPI=5
+PYTHON_COMPAT=( python3_6 )
+PYTHON_REQ_USE="threads?"
+
+inherit distutils-r1
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://github.com/Lawouach/WebSocket-for-Python.git"
+ inherit git-r3
+else
+ inherit vcs-snapshot
+ SRC_URI="https://github.com/Lawouach/WebSocket-for-Python/archive/v${PV} -> ${P}.tar.gz"
+ KEYWORDS="amd64 arm x86"
+fi
+
+DESCRIPTION="WebSocket client and server library for Python 2 and 3 as well as PyPy"
+HOMEPAGE="https://github.com/Lawouach/WebSocket-for-Python"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="+client +server test +threads"
+RESTRICT="!test? ( test )"
+# doc build requires sphinxcontrib ext packages absent from portage
+
+RDEPEND=">=dev-python/greenlet-0.4.1[${PYTHON_USEDEP}]
+ >=dev-python/cython-0.19.1[${PYTHON_USEDEP}]
+ client? ( >=www-servers/tornado-3.1[${PYTHON_USEDEP}] )
+ server? ( <dev-python/cherrypy-9[${PYTHON_USEDEP}] )"
+DEPEND="test? (
+ <dev-python/cherrypy-9[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0.1[${PYTHON_USEDEP}]
+ )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.3.4-tests.patch
+)
+
+python_test() {
+ # testsuite displays an issue with mock under py3 but is non fatal
+ "${PYTHON}" -m unittest discover || die "Tests failed under ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install
+ use client || rm -rf "${D}$(python_get_sitedir)"/ws4py/client
+ use server || rm -rf "${D}$(python_get_sitedir)"/ws4py/server
+}
diff --git a/dev-python/ws4py/ws4py-0.5.1-r1.ebuild b/dev-python/ws4py/ws4py-0.5.1-r1.ebuild
new file mode 100644
index 000000000000..8fa2990a4f6a
--- /dev/null
+++ b/dev-python/ws4py/ws4py-0.5.1-r1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# We could depend on dev-python/cherrypy when USE=server, but
+# that is an optional component ...
+# Same for www-servers/tornado and USE=client ... so why not???
+# pypy is viable but better with a cutdown set of deps
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8} )
+PYTHON_REQ_USE="threads(+)?"
+
+MY_PN="WebSocket-for-Python"
+
+inherit distutils-r1
+if [[ ${PV} == "9999" ]] ; then
+ EGIT_REPO_URI="https://github.com/Lawouach/${MY_PN}.git"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/Lawouach/${MY_PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 arm ~x86"
+ S="${WORKDIR}/${MY_PN}-${PV}"
+fi
+
+DESCRIPTION="WebSocket client and server library for Python 2 and 3 as well as PyPy"
+HOMEPAGE="https://github.com/Lawouach/WebSocket-for-Python"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="+client +server test +threads"
+RESTRICT="!test? ( test )"
+# doc build requires sphinxcontrib ext packages absent from portage
+
+RDEPEND=">=dev-python/greenlet-0.4.1[${PYTHON_USEDEP}]
+ >=dev-python/cython-0.19.1[${PYTHON_USEDEP}]
+ client? ( >=www-servers/tornado-3.1[${PYTHON_USEDEP}] )
+ server? ( >=dev-python/cherrypy-3.2.4[${PYTHON_USEDEP}] )"
+
+DEPEND="test? (
+ >=dev-python/cherrypy-3.2.4[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0.1[${PYTHON_USEDEP}]
+ )"
+
+PATCHES=( "${FILESDIR}"/${PN}-0.5.1-python3.7+-compatibility.patch )
+
+python_test() {
+ # testsuite displays an issue with mock under py3 but is non fatal
+ "${PYTHON}" -m unittest discover || die "Tests failed under ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install
+ use client || rm -rf "${D}$(python_get_sitedir)"/ws4py/client
+ use server || rm -rf "${D}$(python_get_sitedir)"/ws4py/server
+}
diff --git a/dev-python/ws4py/ws4py-0.5.1.ebuild b/dev-python/ws4py/ws4py-0.5.1.ebuild
new file mode 100644
index 000000000000..38507310ab2a
--- /dev/null
+++ b/dev-python/ws4py/ws4py-0.5.1.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# We could depend on dev-python/cherrypy when USE=server, but
+# that is an optional component ...
+# Same for www-servers/tornado and USE=client ... so why not???
+# pypy is viable but better with a cutdown set of deps
+
+EAPI=6
+PYTHON_COMPAT=( python3_6 )
+PYTHON_REQ_USE="threads?"
+
+inherit distutils-r1
+if [[ ${PV} == "9999" ]] ; then
+ EGIT_REPO_URI="https://github.com/Lawouach/WebSocket-for-Python.git"
+ inherit git-r3
+else
+ inherit vcs-snapshot
+ SRC_URI="https://github.com/Lawouach/WebSocket-for-Python/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 arm x86"
+fi
+
+DESCRIPTION="WebSocket client and server library for Python 2 and 3 as well as PyPy"
+HOMEPAGE="https://github.com/Lawouach/WebSocket-for-Python"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="+client +server test +threads"
+RESTRICT="!test? ( test )"
+# doc build requires sphinxcontrib ext packages absent from portage
+
+RDEPEND=">=dev-python/greenlet-0.4.1[${PYTHON_USEDEP}]
+ >=dev-python/cython-0.19.1[${PYTHON_USEDEP}]
+ client? ( >=www-servers/tornado-3.1[${PYTHON_USEDEP}] )
+ server? ( >=dev-python/cherrypy-3.2.4[${PYTHON_USEDEP}] )"
+DEPEND="test? (
+ >=dev-python/cherrypy-3.2.4[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0.1[${PYTHON_USEDEP}]
+ )"
+
+python_test() {
+ # testsuite displays an issue with mock under py3 but is non fatal
+ "${PYTHON}" -m unittest discover || die "Tests failed under ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install
+ use client || rm -rf "${D}$(python_get_sitedir)"/ws4py/client
+ use server || rm -rf "${D}$(python_get_sitedir)"/ws4py/server
+}
diff --git a/dev-python/ws4py/ws4py-9999.ebuild b/dev-python/ws4py/ws4py-9999.ebuild
new file mode 100644
index 000000000000..3e590bb7984c
--- /dev/null
+++ b/dev-python/ws4py/ws4py-9999.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# We could depend on dev-python/cherrypy when USE=server, but
+# that is an optional component ...
+# Same for www-servers/tornado and USE=client ... so why not???
+# pypy is viable but better with a cutdown set of deps
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8} )
+PYTHON_REQ_USE="threads(+)?"
+
+MY_PN="WebSocket-for-Python"
+
+inherit distutils-r1
+if [[ ${PV} == "9999" ]] ; then
+ EGIT_REPO_URI="https://github.com/Lawouach/${MY_PN}.git"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/Lawouach/${MY_PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 arm ~x86"
+ S="${WORKDIR}/${MY_PN}-${PV}"
+fi
+
+DESCRIPTION="WebSocket client and server library for Python 2 and 3 as well as PyPy"
+HOMEPAGE="https://github.com/Lawouach/WebSocket-for-Python"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="+client +server test +threads"
+RESTRICT="!test? ( test )"
+# doc build requires sphinxcontrib ext packages absent from portage
+
+RDEPEND=">=dev-python/greenlet-0.4.1[${PYTHON_USEDEP}]
+ >=dev-python/cython-0.19.1[${PYTHON_USEDEP}]
+ client? ( >=www-servers/tornado-3.1[${PYTHON_USEDEP}] )
+ server? ( >=dev-python/cherrypy-3.2.4[${PYTHON_USEDEP}] )"
+
+DEPEND="test? (
+ >=dev-python/cherrypy-3.2.4[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0.1[${PYTHON_USEDEP}]
+ )"
+
+PATCHES=( "${FILESDIR}"/${PN}-0.5.1-python3.7+-compatibility.patch )
+
+python_test() {
+ # testsuite displays an issue with mock under py3 but is non fatal
+ "${PYTHON}" -m unittest discover || die "Tests failed under ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install
+ use client || rm -rf "${D}$(python_get_sitedir)"/ws4py/client
+ use server || rm -rf "${D}$(python_get_sitedir)"/ws4py/server
+}