
    qh                          S r S rS rS rS rg)znFunctions for generating and parsing HTTP Accept: headers for
supporting server-directed content negotiation.
c                     / nU  H[  n[        U5      [        L a  SnUnO/Uu  pE[        U5      nUS:  d  US::  a  [        SU-  5      eSU4-  nUR	                  X445        M]     UR                  5         / nU H6  u  pTUS:X  a  UR	                  U5        M  UR	                  U< SU< 35        M8     SR                  U5      $ )z>Generate 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          E/var/www/html/env/lib/python3.13/site-packages/openid/yadis/accept.pygenerateAcceptHeaderr      s    
 E=CBEHEaA1uQ !@1!DEEA5Bb[!  
JJLF:MM% MMq12	  99V    c                    U R                  S5       Vs/ s H  oR                  5       PM     nn/ nU H  nUR                  S5       Vs/ s H  oDR                  5       PM     nnUR                  S5      nSU;  a  MJ  UR                  SS5      u  pxU H3  n	SU	;   d  M  U	R                  SS5      u  pU
S:X  d  M'   [        U5      n  O   SnUR                  XU45        M     UR                  5         UR                  5         U VVVs/ s H	  u  poX4PM     snnn$ s  snf s  snf ! [         a     M  f = fs  snnnf )	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:)9kkm)9F:F$)KK$45$4q$45		!eKKQ'	Cczyya(8!!H  Aqn%/ 2 KKM
NN178~3N88; ; 6  &  9s#   D	D#;D(	D9(
D65D6c           	         U (       d  SnOSn0 n0 nU  H`  u  pVnUS:X  a  [        X'5      nM  US:X  a   [        UR                  US5      U5      X5'   M?  [        UR                  XV4S5      U5      XEU4'   Mb     / nSn	U HZ  n
U
R                  S5      u  pVXV4U;   a  XEU4   nOUR                  XR5      nU(       d  M>  UR                  SU-
  XU
45        U	S-  n	M\     UR	                  5         U VVV
s/ s H
  u    poU4PM     sn
nn$ s  sn
nnf )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   s!    JI&A3;'oGCZ":>>$#:A>J%({A)F%JISk" ' MKK$	;)#+&At-A1  !a%)9e!DE!  /<=}+AqUAJ}===s   1Dc                 h    [        U 5      n[        X!5      nU VVs/ s H  u  pEUPM	     snn$ s  snnf )zParse 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80I$-.IjuEI...s   .N)__doc__r   r(   r5   r:    r   r   <module>r=      s    
>%9P->`/r   