
    f                     j    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
y)
    N)seqToKVkvToSeqdictToKVkvToDictc                       e Zd Zy)KVFormErrorN)__name__
__module____qualname__     H/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/openid/kvform.pyr   r      s    r   r   c                      fd}g } D ]"  \  }}t        |t              r|j                  d      }n&t        |t              s |d|z         t        |      }d|v rt	        d|      d|v rt	        d|      |j                         |k7  r |d|       t        |t              r|j                  d      }n&t        |t              s |d	|       t        |      }d|v rt	        d
|      |j                         |k7  r |d|       |j                  |dz   |z   dz          % dj                  |      j                  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                 Z    d| d}rt        |      t        j                  |       y )NzseqToKV warning: : r   loggerwarning)msg	formattedseqstricts     r   errzseqToKV.<locals>.err   s'    14c:	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      sQ   & E  )1a!AAs#.23AA19IJMO O !8GHKM M 779>DEa!AAs#A89AA19  779>!FGQWq[4'(A )D 775>  ))r   c                      fd}t         t              r j                  d        j                  d      }|d   r	 |d       n|d= g }d}|D ]  }|dz  }|j	                         s|j                  dd      }t        |      d	k(  ro|\  }}	|j	                         }
|
|k7  rd
} ||||fz         |
s |d|fz         |	j	                         }||	k7  rd} ||||	fz         |j                  |
|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                 Z    d| d}rt        |      t        j                  |       y )NzkvToSeq warning: r   r   )r   r   datar   s     r   r   zkvToSeq.<locals>.errO   s'    14d;	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!t9>DAq'')Cax.C8Q-'(/8,>?'')Cax0C8Q-'(LL#s$2X=>7?: Lr   c                 F    t        t        | j                                     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      sA    			8	$
8	* 	5*p:z&r   