--- /dev/null
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
+
+inherit distutils-r1 versionator
+
+MY_P="${PN}-$(replace_version_separator 3 -)"
+
+DESCRIPTION="WebSocket and WAMP for Twisted and Asyncio"
+HOMEPAGE="https://pypi.python.org/pypi/autobahn http://autobahn.ws/python/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${MY_P}.tar.gz"
+
+SLOT="0"
+LICENSE="MIT"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="crypt test"
+
+RDEPEND="
+ $(python_gen_cond_dep '>=dev-python/trollius-2.0[${PYTHON_USEDEP}]' 'python2_7')
+ $(python_gen_cond_dep '>=dev-python/futures-3.0.4[${PYTHON_USEDEP}]' 'python2_7')
+ >=dev-python/cbor-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/lz4-0.7.0[${PYTHON_USEDEP}]
+ >=dev-python/py-ubjson-0.8.4[${PYTHON_USEDEP}]
+ >=dev-python/six-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/snappy-0.5[${PYTHON_USEDEP}]
+ >=dev-python/twisted-16.6.0-r2[${PYTHON_USEDEP}]
+ >=dev-python/txaio-2.7.0[${PYTHON_USEDEP}]
+ >=dev-python/u-msgpack-2.1[${PYTHON_USEDEP}]
+ >=dev-python/wsaccel-0.6.2[${PYTHON_USEDEP}]
+ >=dev-python/zope-interface-3.6[${PYTHON_USEDEP}]
+ crypt? (
+ >=dev-python/pyopenssl-16.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pynacl-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/pytrie-0.2[${PYTHON_USEDEP}]
+ >=dev-python/pyqrcode-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/service_identity-16.0.0
+ )
+ "
+DEPEND="${RDEPEND}
+ test? (
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ >=dev-python/pynacl-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/pytrie-0.2[${PYTHON_USEDEP}]
+ >=dev-python/pyqrcode-1.1.0[${PYTHON_USEDEP}]
+ )"
+
+PATCHES=(
+ "${FILESDIR}/${P}-Fix-cs-test-955.patch"
+)
+
+S="${WORKDIR}"/${MY_P}
+
+python_test() {
+ echo "Testing all, cryptosign using twisted"
+ export USE_TWISTED=true
+ cd "${BUILD_DIR}"/lib || die
+ py.test -v || die
+ echo "RE-testing cryptosign using asyncio"
+ export USE_TWISTED=false
+ export USE_ASYNCIO=true
+ py.test -v autobahn/wamp/test/test_cryptosign.py || die
+}
+
+pkg_postinst() {
+ python_foreach_impl twisted-regen-cache || die
+}
+
+pkg_postrm() {
+ python_foreach_impl twisted-regen-cache || die
+}
--- /dev/null
+From 604bc53a3beec173020c944ce9cb38afca2a9126 Mon Sep 17 00:00:00 2001
+From: <°?¡\ 6>
+Date: Fri, 9 Mar 2018 10:37:31 +0100
+Subject: [PATCH] Fix cs test (#955)
+
+---
+ .travis.yml | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
+ Makefile | 3 +++
+ autobahn/asyncio/rawsocket.py | 2 +-
+ autobahn/wamp/test/test_cryptosign.py | 18 +++++++++++++++---
+ tox.ini | 32 +++++++++++++++++---------------
+ 5 files changed, 89 insertions(+), 24 deletions(-)
+
+diff --git a/autobahn/asyncio/rawsocket.py b/autobahn/asyncio/rawsocket.py
+index 130a8e4..bbb8333 100644
+--- a/autobahn/asyncio/rawsocket.py
++++ b/autobahn/asyncio/rawsocket.py
+@@ -408,7 +408,7 @@ class WampRawSocketClientProtocol(WampRawSocketMixinGeneral, WampRawSocketMixinA
+ @property
+ def serializer_id(self):
+ if not hasattr(self, '_serializer'):
+- self._serializer = self.factory._serializer()
++ self._serializer = self.factory._serializer
+ return self._serializer.RAWSOCKET_SERIALIZER_ID
+
+ def get_channel_id(self, channel_id_type=u'tls-unique'):
+diff --git a/autobahn/wamp/test/test_cryptosign.py b/autobahn/wamp/test/test_cryptosign.py
+index 700ca3c..78f8d55 100644
+--- a/autobahn/wamp/test/test_cryptosign.py
++++ b/autobahn/wamp/test/test_cryptosign.py
+@@ -25,9 +25,21 @@
+ ###############################################################################
+
+ from __future__ import absolute_import
++
+ import hashlib
++import os
++
+ from mock import Mock
+
++import txaio
++
++if os.environ.get('USE_TWISTED', False):
++ txaio.use_twisted()
++elif os.environ.get('USE_ASYNCIO', False):
++ txaio.use_asyncio()
++else:
++ raise Exception('no networking framework selected')
++
+ from autobahn.wamp.cryptosign import _makepad, HAS_CRYPTOSIGN
+ from autobahn.wamp import types
+ from autobahn.wamp.auth import create_authenticator
+@@ -59,14 +71,14 @@ class TestAuth(unittest.TestCase):
+ self.key = SigningKey.from_ssh_data(keybody)
+ self.privkey_hex = self.key._key.encode(encoder=HexEncoder)
+ m = hashlib.sha256()
+- m.update("some TLS message")
++ m.update("some TLS message".encode())
+ self.channel_id = m.digest()
+
+ def test_valid(self):
+ session = Mock()
+ session._transport.get_channel_id = Mock(return_value=self.channel_id)
+ challenge = types.Challenge(u"ticket", dict(challenge="ff" * 32))
+- signed = self.key.sign_challenge(session, challenge)
++ signed = yield self.key.sign_challenge(session, challenge)
+ self.assertEqual(
+ u'9b6f41540c9b95b4b7b281c3042fa9c54cef43c842d62ea3fd6030fcb66e70b3e80d49d44c29d1635da9348d02ec93f3ed1ef227dfb59a07b580095c2b82f80f9d16ca518aa0c2b707f2b2a609edeca73bca8dd59817a633f35574ac6fd80d00',
+ signed.result,
+@@ -81,7 +93,7 @@ class TestAuth(unittest.TestCase):
+ session = Mock()
+ session._transport.get_channel_id = Mock(return_value=self.channel_id)
+ challenge = types.Challenge(u"cryptosign", dict(challenge="ff" * 32))
+- reply = authenticator.on_challenge(session, challenge)
++ reply = yield authenticator.on_challenge(session, challenge)
+ self.assertEqual(
+ reply.result,
+ u'9b6f41540c9b95b4b7b281c3042fa9c54cef43c842d62ea3fd6030fcb66e70b3e80d49d44c29d1635da9348d02ec93f3ed1ef227dfb59a07b580095c2b82f80f9d16ca518aa0c2b707f2b2a609edeca73bca8dd59817a633f35574ac6fd80d00',
+--
+libgit2 0.24.6
+