
    f                          d Z d Zd Zd Zd Zy)znFunctions for generating and parsing HTTP Accept: headers for
supporting server-directed content negotiation.
c                  v   g }| D ]Y  }t        |      t        u rd}|}n.|\  }}t        |      }|dkD  s|dk  rt        d|z        d|fz  }|j	                  ||f       [ |j                          g }|D ]2  \  }}|dk(  r|j	                  |       |j	                  |d|       4 dj                  |      S )zFGenerate an accept header value

    [str or (str, float)] -> str
    z1.0       zInvalid preference factor: %rz%0.1fz; q=z, )typestrfloat
ValueErrorappendsortjoin)elementspartselementqsmtypeqchunkss          N/var/www/cs2snipe.com/venv/lib/python3.12/site-packages/openid/yadis/accept.pygenerateAcceptHeaderr      s    
 E "=CBEHE1aA1uQ !@1!DEEA5Bb%[!" 
JJLF 35:MM% MMq12	3 99V    c                 d   | j                  d      D cg c]  }|j                          }}g }|D ]  }|j                  d      D cg c]  }|j                          }}|j                  d      }d|vrE|j                  dd      \  }}|D ]/  }	d|	v s|	j                  dd      \  }
}|
dk(  s#	 t        |      } n d}|j                  |||f        |j                          |j                          |D cg c]  \  }}}|||f c}}}S c c}w c c}w # t        $ r Y w xY wc c}}}w )	zParse an accept header, ignoring any accept-extensions

    returns a list of tuples containing main MIME type, MIME subtype,
    and quality markdown.

    str -> [(str, str, float)]
    ,;r   /r   =r   g      ?)splitstrippopr   r   r	   r
   reverse)valuechunkr   acceptsr   r   mainsubextkvr   s                r   parseAcceptHeaderr(   %   s:    */S)9:ekkm:F:F &$)KK$45q55		!eKKQ'	c 	Cczyya(18!!H	 Aq$n%/&2 KKM
NN1788~4T3N88; ; 6  &  9s#   DD1D=D+	D('D(c           	         | sd}nd}i }i }| D ]`  \  }}}|dk(  rt        ||      }|dk(  r t        |j                  |d      |      ||<   >t        |j                  ||fd      |      |||f<   b g }d}	|D ]V  }
|
j                  d      \  }}||f|v r|||f   }n|j                  ||      }|s:|j                  d|z
  |	||
f       |	dz  }	X |j	                          |D 
cg c]  \  }}}}
|
|f c}
}}S c c}
}}w )a  Given the result of parsing an Accept: header, and the
    available MIME types, return the acceptable types with their
    quality markdowns.

    For example:

    >>> acceptable = parseAcceptHeader('text/html, text/plain; q=0.5')
    >>> matchTypes(acceptable, ['text/plain', 'text/html', 'image/jpeg'])
    [('text/html', 1.0), ('text/plain', 0.5)]


    Type signature: ([(str, str, float)], [str]) -> [(str, float)]
    r   r   *r   )maxgetr   r	   r
   )accept_types
have_typesdefault
match_main	match_subr#   r$   r   accepted_listorder_maintainerr   _s               r   
matchTypesr5   M   sB    JI& KsA3;'1oGCZ":>>$#:A>Jt%(c{A)F%JItSk"K M 	"KK$	c#;)#4+&AtW-A  !a%)91e!DE!	" /<==+Aq!UUAJ===s   &C;c                 f    t        |       }t        ||      }|D cg c]  \  }}|	 c}}S c c}}w )a	  Parse the accept header and return a list of available types in
    preferred order. If a type is unacceptable, it will not be in the
    resulting list.

    This is a convenience wrapper around matchTypes and
    parseAcceptHeader.

    (str, [str]) -> [str]
    )r(   r5   )accept_headerr.   accepted	preferredr   r4   s         r   getAcceptabler:   }   s2     !/H8Z0I$-.juaE...s   -N)__doc__r   r(   r5   r:    r   r   <module>r=      s    
>%9P->`/r   