a
    xd                     @   sR   d dl Z e eZg dZG dd deZdddZddd	Zd
d Z	dd Z
dS )    N)seqToKVkvToSeqdictToKVkvToDictc                   @   s   e Zd ZdS )KVFormErrorN)__name__
__module____qualname__ r
   r
   E/var/www/html/Ranjet/env/lib/python3.9/site-packages/openid/kvform.pyr      s   r   Fc                    s&   fdd}g } D ]\}}t |tr4|d}nt |tsR|d|  t|}d|v rhtd|f d|v r~td|f | |kr|d	|f  t |tr|d}n t |ts|d
|f  t|}d|v rtd|f | |kr|d|f  ||d | d  qd|dS )a  Represent a sequence of pairs of strings as newline-terminated
    key:value pairs. The pairs are generated in the order given.

    @param seq: The pairs
    @type seq: [(str, (unicode|str))]

    @return: A string representation of the sequence
    @rtype: bytes
    c                    s(   d|  f }rt |n
t| d S )NzseqToKV warning: %s: %rr   loggerwarningmsg	formattedseqstrictr
   r   err   s    
zseqToKV.<locals>.errutf-8zConverting key to string: %r
z3Invalid input for seqToKV: key contains newline: %r:z1Invalid input for seqToKV: key contains colon: %rz*Key has whitespace at beginning or end: %rzConverting value to string: %rz5Invalid input for seqToKV: value contains newline: %rz,Value has whitespace at beginning or end: %r )	
isinstancebytesdecodestrr   stripappendjoinencode)r   r   r   lineskvr
   r   r   r      sB    



r   c                    s   fdd}t  tr" d  d}|d r>|d n|d= g }d}|D ]}|d7 }| sfqP|d	d}t|d
kr|\}}	| }
|
|krd}||||f  |
s|d|f  |	 }||	krd}||||	f  ||
|f qP|d|  qP|S )z

    After one parse, seqToKV and kvToSeq are inverses, with no warnings::

        seq = kvToSeq(s)
        seqToKV(kvToSeq(seq)) == seq

    @return str
    c                    s(   d|  f }rt |n
t| d S )NzkvToSeq warning: %s: %rr   r   datar   r
   r   r   O   s    
zkvToSeq.<locals>.errr   r   zDoes not end in a newliner      r      z=In line %d, ignoring leading or trailing whitespace in key %rzIn line %d, got empty keyz?In line %d, ignoring leading or trailing whitespace in value %rz Line %d does not contain a colon)r   r   r   splitr   lenr   )r&   r   r   r"   pairsline_numlinepairr#   r$   Zk_sfmtZv_sr
   r%   r   r   D   s:    



r   c                 C   s   t t|  S N)r   sorteditems)dr
   r
   r   r      s    r   c                 C   s   t t| S r1   )dictr   )sr
   r
   r   r      s    r   )F)F)logging	getLoggerr   r   __all__
ValueErrorr   r   r   r   r   r
   r
   r
   r   <module>   s   

8
=