PHP 8.2.30
Preview: payload_streamer.py Size: 2.04 KB
/opt/cloudlinux/venv/lib64/python3.11/site-packages/aiohttp/payload_streamer.py

"""
Payload implementation for coroutines as data provider.

As a simple case, you can upload data from file::

   @aiohttp.streamer
   async def file_sender(writer, file_name=None):
      with open(file_name, 'rb') as f:
          chunk = f.read(2**16)
          while chunk:
              await writer.write(chunk)

              chunk = f.read(2**16)

Then you can use `file_sender` like this:

    async with session.post('http://httpbin.org/post',
                            data=file_sender(file_name='huge_file')) as resp:
        print(await resp.text())

..note:: Coroutine must accept `writer` as first argument

"""

import types
import warnings
from typing import Any, Awaitable, Callable, Dict, Tuple

from .abc import AbstractStreamWriter
from .payload import Payload, payload_type

__all__ = ("streamer",)


class _stream_wrapper:
    def __init__(
        self,
        coro: Callable[..., Awaitable[None]],
        args: Tuple[Any, ...],
        kwargs: Dict[str, Any],
    ) -> None:
        self.coro = types.coroutine(coro)
        self.args = args
        self.kwargs = kwargs

    async def __call__(self, writer: AbstractStreamWriter) -> None:
        await self.coro(writer, *self.args, **self.kwargs)


class streamer:
    def __init__(self, coro: Callable[..., Awaitable[None]]) -> None:
        warnings.warn(
            "@streamer is deprecated, use async generators instead",
            DeprecationWarning,
            stacklevel=2,
        )
        self.coro = coro

    def __call__(self, *args: Any, **kwargs: Any) -> _stream_wrapper:
        return _stream_wrapper(self.coro, args, kwargs)


@payload_type(_stream_wrapper)
class StreamWrapperPayload(Payload):
    async def write(self, writer: AbstractStreamWriter) -> None:
        await self._value(writer)


@payload_type(streamer)
class StreamPayload(StreamWrapperPayload):
    def __init__(self, value: Any, *args: Any, **kwargs: Any) -> None:
        super().__init__(value(), *args, **kwargs)

    async def write(self, writer: AbstractStreamWriter) -> None:
        await self._value(writer)

Directory Contents

Dirs: 2 × Files: 59

Name Size Perms Modified Actions
.hash DIR
- drwxr-xr-x 2026-02-06 08:01:08
Edit Download
- drwxr-xr-x 2026-02-06 08:07:29
Edit Download
5.37 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.68 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
46.17 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
9.19 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
8.45 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
38.75 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
10.75 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.90 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
51.56 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
13.69 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
5.96 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.50 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
29.55 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.80 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.65 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
34.66 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
26.09 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
5.79 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.11 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
325 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
31.71 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
13.22 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.04 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
11.33 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.95 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
20.35 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
961 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
19.71 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
14.78 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.44 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
18.81 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
17.88 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
10.12 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
11.15 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7.62 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
3.94 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
22.50 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
28.08 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
27.08 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
5.99 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
11.46 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
2.53 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
39.12 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
18.21 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7.78 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
4.22 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
68 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.96 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
86.01 KB lrwxr-xr-x 2026-01-20 13:18:50
Edit Download
202 B lrw-r--r-- 2026-01-20 13:01:48
Edit Download
1.02 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
569.59 KB lrwxr-xr-x 2026-01-20 13:18:50
Edit Download
27.40 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
75.01 KB lrwxr-xr-x 2026-01-20 13:18:50
Edit Download
4.47 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
53.37 KB lrwxr-xr-x 2026-01-20 13:18:50
Edit Download
1.52 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download
7.58 KB lrw-r--r-- 2026-01-20 13:01:48
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).