
    )Jf                     n    d dl Z  e j        e          Zg dZ G d de          Zd
dZd
dZd Z	d	 Z
dS )    N)seqToKVkvToSeqdictToKVkvToDictc                       e Zd ZdS )KVFormErrorN)__name__
__module____qualname__     P/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/openid/kvform.pyr   r      s        Dr   r   Fc                 F     fd}g } D ]l\  }}t          |t                    r|                    d          }n2t          |t                    s |d|z             t          |          }d|v rt	          d|          d|v rt	          d|          |                                |k    r |d|           t          |t                    r|                    d          }n2t          |t                    s |d	|           t          |          }d|v rt	          d
|          |                                |k    r |d|           |                    |dz   |z   dz              nd                    |                              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                 n    d| d}rt          |          t                              |           d S )NzseqToKV warning: : r   loggerwarning)msg	formattedseqstricts     r   errzseqToKV.<locals>.err   sC     14cc:	 	&i(((NN9%%%%%r   utf-8zConverting key to string: %r
z1Invalid input for seqToKV: key contains newline: :z/Invalid input for seqToKV: key contains colon: z(Key has whitespace at beginning or end: zConverting value to string: z3Invalid input for seqToKV: value contains newline: z*Value has whitespace at beginning or end:  )	
isinstancebytesdecodestrr   stripappendjoinencode)r   r   r   lineskvs   ``    r   r   r      s   & & & & & & E  )  )1a 	!!AAAs## 	C.2333AA199+IJMO O O !88+GHqKM M M 7799>>CCDEEEa 	!!AAAs## 	CCAA8999AA199+   7799>>CC!!FGGGQWq[4'((((775>>  )))r   c                      fd}t           t                    r                     d                                d          }|d         r |d           n|d= g }d}|D ]}|dz  }|                                s|                    dd          }t          |          d	k    r|\  }}	|                                }
|
|k    rd
} ||||fz             |
s |d|fz             |	                                }||	k    rd} ||||	fz             |                    |
|f            |d|z             |S )z

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

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

    @return str
    c                 n    d| d}rt          |          t                              |           d S )NzkvToSeq warning: r   r   )r   r   datar   s     r   r   zkvToSeq.<locals>.errO   sC     14dd;	 	&i(((NN9%%%%%r   r   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(   k_sfmtv_ss   ``           r   r   r   D   s   & & & & & & $ ${{7##JJtERy '(((("IEH ? ?A zz|| 	zz#q!!t99>>DAq''))Caxx.C8Q-'((( @/8,>???''))Caxx0C8Q-'(((LL#s$$$$C2X=>>>>Lr   c                 ^    t          t          |                                                     S N)r   sorteditems)ds    r   r   r      s     6!''))$$%%%r   c                 :    t          t          |                     S r9   )dictr   )ss    r   r   r      s    

r   )F)logging	getLoggerr	   r   __all__
ValueErrorr   r   r   r   r   r   r   r   <module>rD      s    		8	$	$
8
8
8	 	 	 	 	* 	 	 	5* 5* 5* 5*p: : : :z& & &    r   