o
    gf                     @   sT   g d Z ddlmZ ddlZG dd deZdddZdd	d
Zdd Zdd Z	dS ))seqToKVkvToSeqdictToKVkvToDict    )oidutilNc                   @   s   e Zd ZdS )KVFormErrorN)__name__
__module____qualname__ r   r   N/var/www/html/humari/django-venv/lib/python3.10/site-packages/openid/kvform.pyr      s    r   Fc                    s.   fdd}g } D ]\}}t |tjr|d}nt |tjs+|d|  t|}d|v r6td|f d|v rAtd|f | |krN|d	|f  t |tjrZ|d}nt |tjsk|d
|f  t|}d|v rvt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: str
    c                    &   d|  f }rt |t| d S )NzseqToKV warning: %s: %rr   r   logmsg	formattedseqstrictr   r   err      zseqToKV.<locals>.errUTF8z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types
StringTypedecodeUnicodeTypestrr   stripappendjoinencode)r   r   r   lineskvr   r   r   r   
   s>   
r   c                    s    fdd}  d}|d r|d n|d= g }d}|D ]\}|d7 }| s)q| dd}t|d	krt|\}}	| }
|
|krKd
}||||f  |
sT|d|f  |	 }||	krfd}||||	f  ||
d|df q|d|  q|S )z

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

        seq = kvToSeq(s)
        seqToKV(kvToSeq(seq)) == seq
    c                    r   )NzkvToSeq warning: %s: %rr   r   datar   r   r   r   G   r   zkvToSeq.<locals>.errr   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 %rr   z Line %d does not contain a colon)splitr"   lenr#   r   )r*   r   r   r&   pairsline_numlinepairr'   r(   k_sfmtv_sr   r)   r   r   ?   s6   

r   c                 C   s   |   }|  t|S N)itemssortr   )dr   r   r   r   r   u   s   r   c                 C   s   t t| S r7   )dictr   )sr   r   r   r   z   s   r   )F)
__all__openidr   r   
ValueErrorr   r   r   r   r   r   r   r   r   <module>   s    

56