3 �ga � @ s� d dl Z d dlmZmZmZmZmZ d dlmZ d dl Z d dl mZ d dlm Z ddlmZmZ G dd � d �ZG d d� d�Zdeeeee ef eegef eeeeee ef d �dd�Zdeeeee ef d�dd�Ze jed�dd�ZdS )� N)�Callable�IO�Iterable�Tuple�Union)� urlencode)� super_len)�MultipartEncoder� )�MultipartRequestDataDict�RequestDataDictc @ s6 e Zd Zeed�dd�Zeeeef d�dd�Z dS )�ChunkedUploadStream)�stream�callbackc C s || _ || _d S )N)r r )�selfr r � r �/usr/lib/python3.6/uploads.py�__init__ s zChunkedUploadStream.__init__)�returnc c s$ x| j D ]}| j|� |V qW d S )N)r r )r �chunkr r r �__iter__ s zChunkedUploadStream.__iter__N) �__name__� __module__�__qualname__r r r r �str�bytesr r r r r r s r c @ s8 e Zd Zd Zed�dd�Zeeee f d�dd�Z d S )�ChunkedMultipartUploadStream�d i )�encoderc C s || _ d S )N)r )r r r r r r s z%ChunkedMultipartUploadStream.__init__)r c c s$ x| j j| j�}|sP |V qW d S )N)r �read� chunk_size)r r r r r r s z%ChunkedMultipartUploadStream.__iter__Ni � )r r r r r r r r r r r r r r r r s r F)�body�body_read_callback�content_length_header_valuer c s� t | d�}t| t�r t| dd�} |r4|r0| j� S | S |sV|r�tdd� | gD �� d�} n`t| �sv|d kr�| r�| j� } n| j�� �fdd�}|| _|r�t| t�r�t| d �} nt| � d�} | S ) Nr T)Zdoseqc s s | ]}|j � V qd S )N)�encode)�.0r r r r � <genexpr>; s z'prepare_request_body.<locals>.<genexpr>)r r c s �| � }� |� |S )Nr )�argsr )r"