a
    3jT                     @   s   d dl Z d dlZd dlZd dlZzd dlZW n eyB   dZY n0 g dZg dZ	da
daG dd dZddd	Zdd
dZdddZdddZdddZdd Zdd Ze  dd Zedkre  dS )    N)
knownfilesinited	MimeTypes
guess_typeguess_all_extensionsguess_extensionadd_typeinitread_mime_types
suffix_mapencodings_map	types_mapcommon_types)	z/etc/mime.typesz/etc/httpd/mime.typesz/etc/httpd/conf/mime.typesz/etc/apache/mime.typesz/etc/apache2/mime.types$/usr/local/etc/httpd/conf/mime.typesz"/usr/local/lib/netscape/mime.typesr   z/usr/local/etc/mime.typesFc                   @   s\   e Zd ZdddZdddZdddZdd	d
ZdddZdddZdddZ	dddZ
dS )r    Tc                 C   s   t s
t  t | _t | _i i f| _i i f| _t	
 D ]\}}| ||d q:t
 D ]\}}| ||d qZ|D ]}| || qvd S NTF)r   r	   _encodings_map_defaultcopyr   _suffix_map_defaultr   r   types_map_inv_types_map_defaultitemsr   _common_types_defaultread)self	filenamesstrictexttypenamer   r   E/www/server/python_manager/versions/3.9.10/lib/python3.9/mimetypes.py__init__B   s    



zMimeTypes.__init__c                 C   s6   || j | |< | j| |g }||vr2|| d S N)r   r   
setdefaultappend)r   r   r   r   Zextsr   r   r    r   P   s    zMimeTypes.add_typec                 C   sr  t |}tj|\}}|dkr|d}|dk r8dS |dd|}|dkr\|d | }n|d | }d|v sxd|vr|d}|d fS t|\}}|| jv rt|| j|  \}}q|| j	v r| j	| }	t|\}}nd }	| j
d	 }
||
v r|
| |	fS | |
v r|
|  |	fS |r(d |	fS | j
d
 }
||
v rH|
| |	fS | |
v rf|
|  |	fS d |	fS d S )Ndata,r   )NN;=/
text/plainTF)osfspathurllibparse
_splittypefind	posixpathsplitextr   r   r   lower)r   urlr   schemeZcommaZsemir   baser   encodingr   r   r   r    r   a   sB    







zMimeTypes.guess_typec                 C   sP   |  }t| jd |g }|sL| jd |g D ]}||vr4|| q4|S r   )r3   listr   getr$   )r   r   r   
extensionsr   r   r   r    r      s    zMimeTypes.guess_all_extensionsc                 C   s   |  ||}|sd S |d S )Nr   )r   )r   r   r   r:   r   r   r    r      s    zMimeTypes.guess_extensionc                 C   s<   t |dd}| || W d    n1 s.0    Y  d S )Nutf-8r7   )openreadfp)r   filenamer   fpr   r   r    r      s    zMimeTypes.readc           	      C   s   |  }|sq| }tt|D ]"}|| d dkr"||d =  qFq"|sLq |d |dd   }}|D ]}| |d| | qfq d S )Nr   #   .)readlinesplitrangelenr   )	r   r@   r   linewordsir   suffixesZsuffr   r   r    r>      s    	
zMimeTypes.readfpc              
   C   s   t sd S dd }t t jd}||D ]}zt ||b}|dsVW d    W q(t |d\}}|t jkrW d    W q(| ||| W d    n1 s0    Y  W q( ty   Y q(Y q(0 q(W d    n1 s0    Y  d S )Nc                 s   sH   d}zt | |}W n ty*   Y qDY n0 d|vr:|V  |d7 }qd S )Nr    rB   )_winregZEnumKeyOSError)ZmimedbrJ   Zctyper   r   r    
enum_types   s    
z3MimeTypes.read_windows_registry.<locals>.enum_types rC   zContent Type)rM   OpenKeyZHKEY_CLASSES_ROOT
startswithZQueryValueExZREG_SZr   rN   )r   r   rO   ZhkcrZ
subkeynameZsubkeyZmimetypeZdatatyper   r   r    read_windows_registry   s"    


0zMimeTypes.read_windows_registryN)r   T)T)T)T)T)T)T)T)__name__
__module____qualname__r!   r   r   r   r   r   r>   rS   r   r   r   r    r   :   s   


?



r   Tc                 C   s   t d u rt  t | |S r"   )_dbr	   r   )r4   r   r   r   r    r     s    r   c                 C   s   t d u rt  t | |S r"   )rW   r	   r   r   r   r   r   r    r   '  s    r   c                 C   s   t d u rt  t | |S r"   )rW   r	   r   rX   r   r   r    r   8  s    r   c                 C   s   t d u rt  t | ||S r"   )rW   r	   r   )r   r   r   r   r   r    r   H  s    r   c                 C   s   da | d u std u rBt }tr&|  | d u r4t} qFtt|  } nt}| D ]}tj	|rJ|
| qJ|ja|ja|jd a|jd a|ad S r   )r   rW   r   rM   rS   r   r8   r+   pathisfiler   r   r   r   r   )filesdbfiler   r   r    r	   Y  s"    

r	   c                 C   sj   zt | dd}W n ty$   Y d S 0 |, t }||d |jd W  d    S 1 s\0    Y  d S )Nr;   r<   T)r=   rN   r   r>   r   )r]   fr\   r   r   r    r
   u  s    r
   c                   C   sX  ddddddd a adddd	d
d aadddddddddddddddddddddddddddddddddddddd d!d!d"d"d#d$d$d%d&d'd(d)d*d+d,d-d-d.d.d.d/d0d1d2d3d4d4d4d4d5d6d6d7d7d8d8d8d9d:d;d<d=d>d>d>d?d@dAdAdBdCdDdEdFdGdHdIdJdKdLdMdMdMdMdNdOdPdPdQdQdQdQdQdQdRdSdTdUdVdVdWdXdYdZdZdZdZdZd[d[d\d]d^d_ aad`dadadbdcdcdcddde aad S )fNz.svg.gzz.tar.gzz.tar.bz2z.tar.xz)z.svgzz.tgzz.tazz.tzz.tbz2z.txzgzipcompressbzip2xzbr)z.gzz.Zz.bz2z.xzz.brzapplication/javascriptzapplication/jsonzapplication/manifest+jsonzapplication/mswordzapplication/octet-streamzapplication/odazapplication/pdfzapplication/pkcs7-mimezapplication/postscriptzapplication/vnd.apple.mpegurlzapplication/vnd.ms-excelzapplication/vnd.ms-powerpointzapplication/wasmzapplication/x-bcpiozapplication/x-cpiozapplication/x-cshzapplication/x-dvizapplication/x-gtarzapplication/x-hdfzapplication/x-latexzapplication/x-mifzapplication/x-netcdfzapplication/x-pkcs12zapplication/x-pn-realaudiozapplication/x-python-codezapplication/x-shzapplication/x-sharzapplication/x-shockwave-flashzapplication/x-sv4cpiozapplication/x-sv4crczapplication/x-tarzapplication/x-tclzapplication/x-texzapplication/x-texinfozapplication/x-troffzapplication/x-troff-manzapplication/x-troff-mezapplication/x-troff-mszapplication/x-ustarzapplication/x-wais-sourcezapplication/xmlzapplication/zipzaudio/basicz
audio/mpegzaudio/x-aiffzaudio/x-pn-realaudiozaudio/x-wavz	image/bmpz	image/gifz	image/iefz
image/jpegz	image/pngzimage/svg+xmlz
image/tiffzimage/vnd.microsoft.iconzimage/x-cmu-rasterzimage/x-ms-bmpzimage/x-portable-anymapzimage/x-portable-bitmapzimage/x-portable-graymapzimage/x-portable-pixmapzimage/x-rgbzimage/x-xbitmapzimage/x-xpixmapzimage/x-xwindowdumpzmessage/rfc822ztext/cssztext/csvz	text/htmlr*   ztext/richtextztext/tab-separated-valuesztext/x-pythonztext/x-setextztext/x-sgmlztext/x-vcardztext/xmlz	video/mp4z
video/mpegzvideo/quicktimez
video/webmzvideo/x-msvideozvideo/x-sgi-movie)z.jsz.mjsz.jsonz.webmanifestz.docz.dotz.wizz.binz.az.dllz.exez.oz.objz.soz.odaz.pdfz.p7cz.psz.aiz.epsz.m3uz.m3u8z.xlsz.xlbz.pptz.potz.ppaz.ppsz.pwzz.wasmz.bcpioz.cpioz.cshz.dviz.gtarz.hdfz.latexz.mifz.cdfz.ncz.p12z.pfxz.ramz.pycz.pyoz.shz.sharz.swfz.sv4cpioz.sv4crcz.tarz.tclz.texz.texiz.texinfoz.roffz.tz.trz.manz.mez.msz.ustarz.srcz.xslz.rdfz.wsdlz.xpdlz.zipz.auz.sndz.mp3z.mp2z.aifz.aifcz.aiffz.raz.wav.bmpz.gifz.ief.jpgz.jpez.jpegz.pngz.svgz.tiffz.tifz.icoz.rasrd   z.pnmz.pbmz.pgmz.ppmz.rgbz.xbmz.xpmz.xwdz.emlz.mhtz.mhtmlz.nwsz.cssz.csvz.htmlz.htmz.txtz.batz.cz.hz.kshz.plz.rtxz.tsvz.pyz.etxz.sgmz.sgmlz.vcfz.xmlz.mp4z.mpegz.m1vz.mpaz.mpez.mpgz.movz.qtz.webmz.aviz.moviezapplication/rtfz
audio/midiz	image/jpgz
image/pictztext/xul)z.rtfz.midiz.midre   z.pictz.pctz.picz.xul)r   r   r   r   r   r   r   r   r   r   r   r    _default_mime_types  s8   


 
 rf   c               
      s  dd l } d d fdd	}z$|  tjdd  dg d\}}W n0 | jyn } z|d| W Y d }~n
d }~0 0 d}d}|D ]4\}}|d	v r|d q||d
v rd}q||dv r|d}q||D ]Z}	|rt|	|}
|
std|	 nt|
 qt|	|\}
}|
std|	 qtd|
d| qd S )Nr   a4  Usage: mimetypes.py [options] type

Options:
    --help / -h       -- print this message and exit
    --lenient / -l    -- additionally search of some common, but non-standard
                         types.
    --extension / -e  -- guess extension instead of type

More than one type argument may be given.
rP   c                    s"   t   |rt | t|  d S r"   )printsysexit)codemsgZUSAGEr   r    usageF  s    z_main.<locals>.usagerB   Zhle)helpZlenient	extension)z-hz--help)z-lz	--lenient)z-ez--extensionz I don't know anything about typeztype:z	encoding:)rP   )getoptrh   argverrorr   rg   r   )rp   rm   Zoptsargsrk   r   ro   optargZgtypeZguessr7   r   rl   r    _main7  s4     


rv   __main__)T)T)T)T)N)r+   rh   r1   urllib.parser-   winregrM   ImportError__all__r   r   rW   r   r   r   r   r   r	   r
   rf   rv   rT   r   r   r   r    <module>   s2   
 W




 5.