:py:mod:`wfexs_backend.utils.io_wrappers`
=========================================

.. py:module:: wfexs_backend.utils.io_wrappers

.. autodoc2-docstring:: wfexs_backend.utils.io_wrappers
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`AbstractProxyIOWrapper <wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper>`
     - .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper
          :summary:
   * - :py:obj:`DigestIOWrapper <wfexs_backend.utils.io_wrappers.DigestIOWrapper>`
     - .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.DigestIOWrapper
          :summary:
   * - :py:obj:`MIMETypeIOWrapper <wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper>`
     - .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper
          :summary:
   * - :py:obj:`LimitedStreamIOWrapper <wfexs_backend.utils.io_wrappers.LimitedStreamIOWrapper>`
     - .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.LimitedStreamIOWrapper
          :summary:
   * - :py:obj:`MultipartFile <wfexs_backend.utils.io_wrappers.MultipartFile>`
     - .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartFile
          :summary:
   * - :py:obj:`MultipartEncoderIOWrapper <wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper>`
     - .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper
          :summary:

API
~~~

.. py:class:: AbstractProxyIOWrapper(stream: Union[IO[bytes], io.RawIOBase])
   :canonical: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper

   Bases: :py:obj:`io.RawIOBase`

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper.__init__

   .. py:method:: _fake_readinto(buf: typing_extensions.Buffer) -> Optional[int]
      :canonical: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper._fake_readinto

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper._fake_readinto

   .. py:method:: close() -> None
      :canonical: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper.close

   .. py:property:: closed
      :canonical: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper.closed
      :type: bool

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper.closed

   .. py:method:: readable() -> bool
      :canonical: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper.readable

   .. py:method:: tell() -> int
      :canonical: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper.tell

   .. py:method:: writable() -> bool
      :canonical: wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper.writable

.. py:class:: DigestIOWrapper(stream: Union[IO[bytes], io.RawIOBase], algo: str = 'sha256')
   :canonical: wfexs_backend.utils.io_wrappers.DigestIOWrapper

   Bases: :py:obj:`wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper`

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.DigestIOWrapper

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.DigestIOWrapper.__init__

   .. py:method:: readinto(buf: typing_extensions.Buffer) -> int
      :canonical: wfexs_backend.utils.io_wrappers.DigestIOWrapper.readinto

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.DigestIOWrapper.readinto

   .. py:method:: digest() -> bytes
      :canonical: wfexs_backend.utils.io_wrappers.DigestIOWrapper.digest

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.DigestIOWrapper.digest

   .. py:method:: hexdigest() -> str
      :canonical: wfexs_backend.utils.io_wrappers.DigestIOWrapper.hexdigest

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.DigestIOWrapper.hexdigest

.. py:class:: MIMETypeIOWrapper(stream: Union[IO[bytes], io.RawIOBase])
   :canonical: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper

   Bases: :py:obj:`wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper`

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper.__init__

   .. py:method:: readinto(buf: typing_extensions.Buffer) -> Optional[int]
      :canonical: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper.readinto

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper.readinto

   .. py:method:: _compute_mime() -> None
      :canonical: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper._compute_mime

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper._compute_mime

   .. py:method:: mime() -> str
      :canonical: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper.mime

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MIMETypeIOWrapper.mime

.. py:class:: LimitedStreamIOWrapper(stream: Union[IO[bytes], io.RawIOBase], maxreadsize: int)
   :canonical: wfexs_backend.utils.io_wrappers.LimitedStreamIOWrapper

   Bases: :py:obj:`wfexs_backend.utils.io_wrappers.AbstractProxyIOWrapper`

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.LimitedStreamIOWrapper

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.LimitedStreamIOWrapper.__init__

   .. py:method:: readinto(buf: typing_extensions.Buffer) -> int
      :canonical: wfexs_backend.utils.io_wrappers.LimitedStreamIOWrapper.readinto

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.LimitedStreamIOWrapper.readinto

.. py:class:: MultipartFile
   :canonical: wfexs_backend.utils.io_wrappers.MultipartFile

   Bases: :py:obj:`typing.NamedTuple`

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartFile

   .. py:attribute:: filename
      :canonical: wfexs_backend.utils.io_wrappers.MultipartFile.filename
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartFile.filename

   .. py:attribute:: mime
      :canonical: wfexs_backend.utils.io_wrappers.MultipartFile.mime
      :type: str
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartFile.mime

   .. py:attribute:: stream
      :canonical: wfexs_backend.utils.io_wrappers.MultipartFile.stream
      :type: SupportsRead[bytes]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartFile.stream

   .. py:attribute:: size
      :canonical: wfexs_backend.utils.io_wrappers.MultipartFile.size
      :type: Optional[int]
      :value: None

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartFile.size

.. py:class:: MultipartEncoderIOWrapper(fields: Sequence[Tuple[str, Sequence[Union[str, MultipartFile]]]], boundary: Optional[str] = None)
   :canonical: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper

   Bases: :py:obj:`io.RawIOBase`

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper

   .. rubric:: Initialization

   .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper.__init__

   .. py:property:: content_type
      :canonical: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper.content_type
      :type: str

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper.content_type

   .. py:method:: _set_fields(fields: Sequence[Tuple[str, Sequence[Union[str, MultipartFile]]]]) -> None
      :canonical: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper._set_fields

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper._set_fields

   .. py:method:: _current_field_header() -> bytes
      :canonical: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper._current_field_header

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper._current_field_header

   .. py:property:: footer
      :canonical: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper.footer
      :type: bytes

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper.footer

   .. py:method:: readinto(buf: typing_extensions.Buffer) -> int
      :canonical: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper.readinto

      .. autodoc2-docstring:: wfexs_backend.utils.io_wrappers.MultipartEncoderIOWrapper.readinto
