U '7`@s~ddlZddlmZmZmZmZddlmZddlm Z m Z ddl m Z m Z mZddlmZddlmZd ZGd d d ZdS) N)AnyIterableListOptional) urlencode) MultiDictMultiDictProxy)hdrs multipartpayload)guess_filename)Payload)FormDatac@seZdZdZdeeeeeddddZ e edd d Z dddd eeeeeeeedd d dZ eddddZ ejdddZejdddZedddZdS)rz_Helper class for multipart/form-data and application/x-www-form-urlencoded body generation.TN)fields quote_fieldscharsetreturncCsdtd|_g|_d|_d|_||_||_t|t rBt | }nt|t t fsV|f}|j |dS)N form-dataF)r MultipartWriter_writer_fields _is_multipart _is_processed _quote_fields_charset isinstancedictlistitemstuple add_fields)selfrrrrrC/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/formdata.py__init__s  zFormData.__init__)rcCs|jSN)rr#rrr$ is_multipart%szFormData.is_multipart) content_typefilenamecontent_transfer_encoding)namevaluer)r*r+rcCs t|tjrd|_n$t|tttfr8|dkr8|dkr8|}td|i}|dk rbt|tsbt d||dkrt|tjrt ||}|dk r||d<d|_i}|dk rt|tst d|||t j <d|_|dk rt|tst d|||t j <d|_|j|||fdS)NTr,z,filename must be an instance of str. Got: %sr*z0content_type must be an instance of str. Got: %sz=content_transfer_encoding must be an instance of str. Got: %s)rioIOBaserbytes bytearray memoryviewrstr TypeErrorr r CONTENT_TYPEZCONTENT_TRANSFER_ENCODINGrappend)r#r,r-r)r*r+ type_optionsheadersrrr$ add_field)sB       zFormData.add_field)rrcGst|}|r|d}t|tjr:t|d}|||qt|ttfrX| | qt|tt frt |dkr|\}}|||qt d|qdS)NrunknownzxOnly io.IOBase, multidict and (name, file) pairs allowed, use .add_field() for passing more complex parameters, got {!r})rpoprr.r/r r9rrextendr r!lenr4format)r#rZto_addZreckfprrr$r"Ws    zFormData.add_fieldscCsng}|jD]\}}}||d|fq |jdk r8|jnd}|dkrJd}nd|}tjt|d|d|dS)Nr,zutf-8z!application/x-www-form-urlencodedz-application/x-www-form-urlencoded; charset=%sT)Zdoseqencoding)r))rr6rr BytesPayloadrencode)r#datar7_r-rr)rrr$_gen_form_urlencodedoszFormData._gen_form_urlencodedc Cs|jrtd|jD]\}}}zs