B `@sddlZddlZddlmZmZmZddlmZmZe dZ dde dDZ dZ d Zed Ze eZeed ZeeZed Zed ZedZGdddZGdddZdS)N) ascii_lettersascii_lowercasedigits)OptionalcastasciicCsh|]}d|dqS)z%{:02X}r)formatencode).0ir k/private/var/folders/7j/8686xlfs15q3tgljmghtvg0r0000gn/T/pip-target-isidps9b/lib/python/yarl/_quoting_py.py srz:/?#[]@z!$'()*,z+&=;z-._~s[A-Z0-9][A-Z0-9]z[A-Fa-f0-9][A-Fa-f0-9]zutf-8c@sFeZdZdddddeeeeddddZeeeed d d ZdS) _QuoterFT)safe protectedqsrequoteN)rrrrreturncCs||_||_||_||_dS)N)_safe _protected_qs_requote)selfrrrrr r r __init__sz_Quoter.__init__)valrc Cs|dkr dSt|tstd|s&dStt|jddd}t}t}|j}|t7}|jsb|d7}||j 7}|d}d}x|t |krb||}|d 7}|r|t kr|d }| |t |d kr|d d} t | s|d ||d 8}q~y"tt|d dddd} Wn2tk rP|d ||d 8}w~YnX| |j krj||n$| |kr| t| n |||q~t |d kr~|t |kr~|d ||d 8}q~n@|tdkr|jr|| ||t |kr~|d q~|jr4|tdkr4| tdq~||krJ| |q~|d|dq~W|d} | |kr||S| S)NzArgument should be strrutf8ignore)errorsz+&=;rr s%25)base% +z%{:02X}) isinstancestr TypeErrorrr bytearrayrALLOWEDrrlenBASCII_LOWERCASEappend_IS_HEXmatchextendclearchrintdecode ValueErrorordrr) rrZbvalretpctrZbsafeidxchbufunquotedret2r r r __call__%s       "              z_Quoter.__call__)__name__ __module__ __qualname__r+boolrrrBr r r r rs rc@s>eZdZdddeeddddZeeeedd d ZdS) _UnquoterrF)unsaferN)rHrrcCs$||_||_t|_tdd|_dS)NT)r)_unsaferr_quoter _qs_quoter)rrHrr r r rxsz_Unquoter.__init__)rrc Cs|dkr dSt|tstd|s&dSttjt}g}d}xT|t|kr||}|d7}|dkr|t|dkr|||d}t |rt t |ddg}|d7}y| |}Wnt k rF|d t|jd } ||| |d |y| |}Wn.t k r@|||d |w@YnXYnX|sPq@|jr|d kr||} | dkr~td || q@||jkr||} | dkrtd || q@||q@|jr|dt|jd } ||| |d||d kr<|jr$||jkr0|d q@|d q@||jkr|dtt|dd} x| D]}||qpWq@||q@W|jr||t|j d dd|} | |kr|S| S)NzArgument should be strrrr!r'r$r%)r&r#z+=&;zCannot quote Noner)r()r*r+r,rcodecsBufferedIncrementalDecoder utf8_decoderr/ _IS_HEX_STR fullmatchbytesr7r8UnicodeDecodeErrorbufferr1resetrrK RuntimeErrorrIrJhexr:upperjoin) rrdecoderr;r=r>r<br@Z start_pctZto_addhrAr r r rB~s                  z_Unquoter.__call__)rCrDrEr+rFrrrBr r r r rGwsrG)rLrestringrrrtypingrrr r0rangeZ BPCT_ALLOWEDZ GEN_DELIMSZSUB_DELIMS_WITHOUT_QSZ SUB_DELIMSZRESERVEDZ UNRESERVEDr.compiler2rOgetincrementaldecoderrNrrGr r r r s      `