
    qh                     n    S SK r \ R                  " \5      r/ SQr " S S\5      rS	S jrS	S jrS r	S r
g)
    N)seqToKVkvToSeqdictToKVkvToDictc                       \ rS rSrSrg)KVFormError    N)__name__
__module____qualname____firstlineno____static_attributes__r
       ?/var/www/html/env/lib/python3.13/site-packages/openid/kvform.pyr   r      s    r   r   c                   ^ ^ U U4S jn/ nT  GHD  u  pE[        U[        5      (       a  UR                  S5      nO+[        U[        5      (       d  U" SU-  5        [        U5      nSU;   a  [	        SU< 35      eSU;   a  [	        SU< 35      eUR                  5       U:w  a  U" SU< 35        [        U[        5      (       a  UR                  S5      nO,[        U[        5      (       d  U" S	U< 35        [        U5      nSU;   a  [	        S
U< 35      eUR                  5       U:w  a  U" SU< 35        UR                  US-   U-   S-   5        GMG     SR                  U5      R                  S5      $ )zRepresent 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                 h   > SU < ST< 3nT(       a  [        U5      e[        R                  U5        g )NzseqToKV warning: : r   loggerwarning)msg	formattedseqstricts     r   err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      sV   & E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                 >  ^ ^ U U4S jn[        T [        5      (       a  T R                  S5      m T R                  S5      nUS   (       a	  U" S5        OUS	 / nSnU H  nUS-  nUR	                  5       (       d  M  UR                  SS5      n[        U5      S	:X  aq  Uu  pUR	                  5       n
X:w  a  S
nU" XU4-  5        U
(       d  U" SU4-  5        U	R	                  5       nX:w  a  SnU" XU	4-  5        UR                  X45        M  U" SU-  5        M     U$ )z

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

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

@return str
c                 h   > SU < ST< 3nT(       a  [        U5      e[        R                  U5        g )NzkvToSeq warning: r   r   )r   r   datar   s     r   r   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>DA'')Cx.CQ-'(/8,>?'')Cx0CQ-'(LL#$2X=>7 : Lr   c                 F    [        [        U R                  5       5      5      $ N)r   sorteditems)ds    r   r   r      s    6!'')$%%r   c                 *    [        [        U 5      5      $ r>   )dictr   )ss    r   r   r      s    
r   )F)logging	getLoggerr   r   __all__
ValueErrorr   r   r   r   r   r
   r   r   <module>rI      s?    			8	$
8	* 	5*p:z&r   