Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/site-packages/googleapiclient/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/site-packages/googleapiclient/__pycache__/mimeparse.cpython-38.pyc
U

P��g��@sldZddlmZddlmZdZdZdZdZdZ	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�ZdS)auMIME-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)�reducez0.1.3zJoe Gregoriozjoe@bitworking.orgzMIT License�cCs\|�d�}tdd�|dd�D��}|d��}|dkr<d}|�d	�\}}|��|��|fS)
aRParses 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'})
    �;cSs&g|]}tdd�|�dd�D���qS)cSsg|]}|���qS���strip)�.0�srr�F/opt/cppython/lib/python3.8/site-packages/googleapiclient/mimeparse.py�
<listcomp>/sz.parse_mime_type.<locals>.<listcomp>.<listcomp>�=�)�tuple�split)r	�paramrrrr/sz#parse_mime_type.<locals>.<listcomp>rNr�*z*/*�/)r�dictr)�	mime_type�parts�paramsZ	full_type�type�subtyperrr�parse_mime_type#s

�rcCs\t|�\}}}d|ksJ|drJt|d�rJt|d�dksJt|d�dkrRd|d<|||fS)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.
    �qrr�1)r�float)�rangerrrrrr�parse_media_range;s��
���rc
s�d}d}t|�\}}}|D]�\}}�||kp:|dkp:|dk}	||kpR|dkpR|dk}
|	r|
rtdd��fdd�|��D�d�}||kr�dp�d}|||kr�d	p�d7}||7}||kr|}�d
}q|t|�fS)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.
    ���rrcSs||S�Nr)�x�yrrr�<lambda>i�z,fitness_and_quality_parsed.<locals>.<lambda>cs0g|](\}}|dkr|�kr|�|krd�qS)rrr)r	�key�value�rrrrjs
�z.fitness_and_quality_parsed.<locals>.<listcomp>�d�
r)rr�itemsr)
r�
parsed_rangesZbest_fitnessZ
best_fit_qZtarget_typeZtarget_subtypeZ
target_paramsrrZ
type_matchZ
subtype_matchZ
param_matchesZfitnessrr(r�fitness_and_quality_parsedVs,	�
��	
r-cCst||�dS)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.
    r)r-)rr,rrr�quality_parsed{s
r.cCsdd�|�d�D�}t||�S)aKReturn 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

    cSsg|]}t|��qSr�r�r	�rrrrr�szquality.<locals>.<listcomp>�,)rr.)r�rangesr,rrr�quality�sr4cCstt|�d��}dd�|D�}g}d}|D]"}|�t||�||f�|d7}q(|��|dddrp|ddprdS)	aYReturn 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'
    r2cSsg|]}t|��qSrr/r0rrrr�szbest_match.<locals>.<listcomp>rrr �r)�
_filter_blankr�appendr-�sort)�	supported�headerZsplit_headerZ
parsed_headerZweighted_matches�posrrrr�
best_match�s�
r<ccs|D]}|��r|VqdSr!r)�ir
rrrr6�sr6N)�__doc__�
__future__r�	functoolsr�__version__�
__author__�	__email__�__license__�__credits__rrr-r.r4r<r6rrrr�<module>s%


F1le Man4ger