+
    oi                     `    R t ^ RIHt ^ RIHt RtRtRtRtRt	R t
R	 tR
 tR tR tR tR tR# )au  MIME-Type Parser

This module provides basic functions for handling mime-types. It can handle
matching mime-types against a list of media-ranges. See section 14.1 of the
HTTP specification [RFC 2616] for a complete explanation.

   http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.1

Contents:
 - parse_mime_type():   Parses a mime-type into its component parts.
 - parse_media_range(): Media-ranges are mime-types with wild-cards and a 'q'
                          quality parameter.
 - quality():           Determines the quality ('q') of a mime-type when
                          compared against a list of media-ranges.
 - quality_parsed():    Just like quality() except the second parameter must be
                          pre-parsed.
 - best_match():        Choose the mime-type with the highest quality ('q')
                          from a list of candidates.
)absolute_import)reducez0.1.3zJoe Gregoriozjoe@bitworking.orgzMIT License c                   V P                  R4      p\        VR,           UUu. uF;  p\        VP                  R^4       Uu. uF  q3P                  4       NK  	  up4      NK=  	  upp4      pV^ ,          P                  4       pVR8X  d   RpVP                  R4      w  rgVP                  4       VP                  4       V3# u upi u uppi )a:  Parses a mime-type into its component parts.

Carves up a mime-type and returns a tuple of the (type, subtype, params)
where 'params' is a dictionary of all the parameters for the media range.
For example, the media range 'application/xhtml;q=0.5' would get parsed
into:

   ('application', 'xhtml', {'q', '0.5'})
;:   NN=*z*/*/)splitdicttuplestrip)	mime_typepartsparamsparams	full_typetypesubtypes   &       |/Users/tonyclaw/.openclaw/workspace/scripts/youtube-playlists/venv/lib/python3.14/site-packages/googleapiclient/mimeparse.pyparse_mime_typer   #   s     OOC EFKBiPiU5;;sA#67#6a	#67	8iPF a I C	ooc*OTJJL'--/622 8Ps   C
C C
 C
c                    \        V 4      w  rpRV9  gV   VR,          '       dG   \        VR,          4      '       d/   \        VR,          4      ^8  g   \        VR,          4      ^ 8  d   RVR&   WV3# )a  Parse a media-range into its component parts.

Carves up a media range and returns a tuple of the (type, subtype,
params) where 'params' is a dictionary of all the parameters for the media
range.  For example, the media range 'application/*;q=0.5' would get parsed
into:

   ('application', '*', {'q', '0.5'})

In addition this function also guarantees that there is a value for 'q'
in the params dictionary, filling it in with a proper default if
necessary.
q1)r   float)ranger   r   r   s   &   r   parse_media_ranger   ;   si     .e4TF6c{{VC[!!!!s6""    c                H   Rp^ p\        V 4      w  rEpV F  w  rxp	Wt8H  ;'       g    VR8H  ;'       g    VR8H  p
W8H  ;'       g    VR8H  ;'       g    VR8H  pV
'       g   KL  V'       g   KV  \        R VP                  4        UUu. uF'  w  rVR8w  g   K  W9   g   K  WV,          8X  g   K%  ^NK)  	  upp^ 4      pWt8H  ;'       d    ^d;'       g    ^ pYV8H  ;'       d    ^
;'       g    ^ ,          pW,          pW8  g   K  TpV	R,          pK  	  V\        V4      3# u uppi )a  Find the best match for a mime-type amongst parsed media-ranges.

Find the best match for a given mime-type against a list of media_ranges
that have already been parsed by parse_media_range(). Returns a tuple of
the fitness value and the value of the 'q' quality parameter of the best
match, or (-1, 0) if no match was found. Just as for quality_parsed(),
'parsed_ranges' must be a list of parsed media ranges.
r	   c                     W,           # N )xys   &&r   <lambda>,fitness_and_quality_parsed.<locals>.<lambda>i   s    QUr   r   )r   r   itemsr   )r   parsed_rangesbest_fitness
best_fit_qtarget_typetarget_subtypetarget_paramsr   r   r   
type_matchsubtype_matchkeyvalueparam_matchesfitnesss   &&              r   fitness_and_quality_parsedr6   V   sB    LJ3DY3O0[-#0(MMDCKMM;#;M
%PPCPP>S;P 	 :--"" )6(;(;(=(=cz &)m 8=8L A(=
 M *3388qG>199r>>Q>G$G%&#C[
) $1, z***s   DD
D,Dc                &    \        W4      ^,          # )a~  Find the best match for a mime-type amongst parsed media-ranges.

Find the best match for a given mime-type against a list of media_ranges
that have already been parsed by parse_media_range(). Returns the 'q'
quality parameter of the best match, 0 if no match was found. This function
bahaves the same as quality() except that 'parsed_ranges' must be a list of
parsed media ranges.
)r6   )r   r*   s   &&r   quality_parsedr8   {   s     &i?BBr   c                t    VP                  R4       Uu. uF  p\        V4      NK  	  pp\        W4      # u upi )a3  Return the quality ('q') of a mime-type against a list of media-ranges.

Returns the quality 'q' of a mime-type when compared against the
media-ranges in ranges. For example:

>>> quality('text/html','text/*;q=0.3, text/html;q=0.7,
              text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5')
0.7

,)r   r   r8   )r   rangesrr*   s   &&  r   qualityr=      s:     4:<<3DE3Da&q)3DME)33 Fs   5c                j   \        VP                  R4      4      pV Uu. uF  p\        V4      NK  	  pp. p^ pV  F(  pVP                  \	        Wt4      Wg34       V^,          pK*  	  VP                  4        VR,          ^ ,          ^,          ;'       d    VR,          ^,          ;'       g    R# u upi )a1  Return mime-type with the highest quality ('q') from list of candidates.

Takes a list of supported mime-types and finds the best match for all the
media-ranges listed in header. The value of header must be a string that
conforms to the format of the HTTP Accept: header. The value of 'supported'
is a list of mime-types. The list of supported mime-types should be sorted
in order of increasing desirability, in case of a situation where there is
a tie.

>>> best_match(['application/xbel+xml', 'text/xml'],
               'text/*;q=0.5,*/*; q=0.1')
'text/xml'
r:   r   r(   )_filter_blankr   r   appendr6   sort)	supportedheadersplit_headerr<   parsed_headerweighted_matchesposr   s   &&      r   
best_matchrH      s     !c!23L3?@<a&q)<M@
C	'	A3R	
 	q	 
 B"1%AA*:2*>q*AGGRG As   B0c              #   X   "   V  F  pVP                  4       '       g   K  Vx  K!  	  R # 5ir"   )r   )ir   s   & r   r?   r?      s     7799G s   *
*N)__doc__
__future__r   	functoolsr   __version__
__author__	__email____license____credits__r   r   r6   r8   r=   rH   r?   r#   r   r   <module>rS      sQ   
& ' 
 	30#6"+J
C4 H8r   