Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
__all__ = ["CurioAsksSession"]
import curio
import asks
from asks import Session
from .abc import AbstractSession
from ..models import Response
from .common import _call_callback
asks.init("curio")
class CurioAsksSession(Session, AbstractSession):
def __init__(self, *args, **kwargs):
if kwargs.get("timeout"):
del kwargs["timeout"]
kwargs.pop("timeout", None)
super().__init__(*args, **kwargs)
async def send(
self,
*requests,
timeout=None,
full_res=False,
raise_for_status=True,
session_factory=None
):
async def resolve_response(request, response):
data = None
__all__ = ["TrioAsksSession"]
import trio
import asks
from asks import Session
from .abc import AbstractSession
from ..models import Response
from .common import _call_callback
asks.init("trio")
class TrioAsksSession(Session, AbstractSession):
def __init__(self, *args, **kwargs):
if kwargs.get("timeout"):
del kwargs["timeout"]
kwargs.pop("timeout", None)
super().__init__(*args, **kwargs)
async def send(
self,
*requests,
timeout=None,
full_res=False,
raise_for_status=True,
session_factory=None
):
responses = []
def __new__(cls, *args, **kwargs):
# Get all coros of this the abstract class
parent_abstract_coros = inspect.getmembers(
AbstractSession, predicate=inspect.iscoroutinefunction
)
# Ensure all relevant child methods are implemented as coros
for coro in parent_abstract_coros:
coro_name = coro[0]
child_method = getattr(cls, coro_name)
if not inspect.iscoroutinefunction(child_method):
raise RuntimeError(f"{child_method} must be a coroutine")
# Resume with normal behavior of a Python constructor
return super(AbstractSession, cls).__new__(cls)
def __new__(cls, *args, **kwargs):
# Get all coros of this the abstract class
parent_abstract_coros = inspect.getmembers(
AbstractSession, predicate=inspect.iscoroutinefunction
)
# Ensure all relevant child methods are implemented as coros
for coro in parent_abstract_coros:
coro_name = coro[0]
child_method = getattr(cls, coro_name)
if not inspect.iscoroutinefunction(child_method):
raise RuntimeError(f"{child_method} must be a coroutine")
# Resume with normal behavior of a Python constructor
return super(AbstractSession, cls).__new__(cls)
async def _get_file_size(full_file_path):
stat = await async_os.stat(full_file_path)
return stat.st_size
async def _aiter_file(file_name, chunk_size):
""" Async file generator """
async with aiofiles.open(file_name, "rb") as f:
chunk = await f.read(chunk_size)
while chunk:
yield chunk
chunk = await f.read(chunk_size)
class AiohttpSession(ClientSession, AbstractSession):
async def send(
self,
*requests,
timeout=None,
full_res=False,
raise_for_status=True,
session_factory=None,
):
async def resolve_response(request, response):
data = None
json = None
download_file = None
upload_file = None
# If downloading file:
if request.media_download: