Source code for uplink.clients.twisted_
"""
This module defines an :py:class:`aiohttp.ClientSession` adapter that
returns :py:class:`twisted.internet.defer.Deferred` responses.
"""
# Third party imports
try:
from twisted.internet import threads
except ImportError: # pragma: no cover
threads = None
# Local imports
from uplink.clients import interfaces, io, register
[docs]class TwistedClient(interfaces.HttpClientAdapter):
"""
Client that returns :py:class:`twisted.internet.defer.Deferred`
responses.
Note:
This client is an optional feature and requires the :py:mod:`twisted`
package. For example, here's how to install this extra using pip::
$ pip install uplink[twisted]
Args:
session (:py:class:`requests.Session`, optional): The session
that should handle sending requests. If this argument is
omitted or set to :py:obj:`None`, a new session will be
created.
"""
def __init__(self, session=None):
if threads is None:
raise NotImplementedError("twisted is not installed.")
self._proxy = register.get_client(session)
@property
def exceptions(self):
return self._proxy.exceptions
@staticmethod
def io():
return io.TwistedStrategy()
def apply_callback(self, callback, response):
return threads.deferToThread(
self._proxy.apply_callback, callback, response
)
def send(self, request):
return threads.deferToThread(self._proxy.send, request)