33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
async def __aenter__(self):
|
|
return await self
|
|
|
|
|
|
async def __aexit__(self, exc_type, exc_value, traceback):
|
|
await self.ws_client.close()
|
|
|
|
|
|
async def __await_impl__(self):
|
|
# Duplicated with __iter__ because Python 3.7 requires an async function
|
|
# (as explained in __await__ below) which Python 3.4 doesn't support.
|
|
transport, protocol = await self._creating_connection
|
|
|
|
try:
|
|
await protocol.handshake(
|
|
self._wsuri, origin=self._origin,
|
|
available_extensions=protocol.available_extensions,
|
|
available_subprotocols=protocol.available_subprotocols,
|
|
extra_headers=protocol.extra_headers,
|
|
)
|
|
except Exception:
|
|
await protocol.fail_connection()
|
|
raise
|
|
|
|
self.ws_client = protocol
|
|
return protocol
|
|
|
|
|
|
def __await__(self):
|
|
# __await__() must return a type that I don't know how to obtain except
|
|
# by calling __await__() on the return value of an async function.
|
|
# I'm not finding a better way to take advantage of PEP 492.
|
|
return __await_impl__(self).__await__()
|