3

h$                 @   s   d dl Z d dlZd dlZd dlZd dlZddlmZ dAdBdCdDdEdZdd Zdd Z	dd Z
dFdGdHdIdZdd Zdd  Zd!d" ZdJdKdLdMdNdOdPdQdRd1	Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= ZdSd?d@ZdS )T    N   )ImagePIL._imagingPILLOW_VERSIONPIL._tkinter_finder
tk_versionPIL._imagingftfreetype2_versionPIL._imagingcmslittlecms_version	PIL._webpwebpdecoder_version)piltkinter	freetype2
littlecms2webpc             C   sH   | t krtd|  t |  \}}yt| dS  tk
rB   dS X dS )z
    Checks if a module is available.

    :param feature: The module to check for.
    :returns: ``True`` if available, ``False`` otherwise.
    :raises ValueError: If the module is not defined in this version of Pillow.
    zUnknown module TFN)modules
ValueError
__import__ImportError)featuremodulever r   L/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/PIL/features.pycheck_module   s    r   c             C   s8   t | sdS t|  \}}|dkr$dS tt||gd|S )z
    :param feature: The module to check for.
    :returns:
        The loaded version number as a string, or ``None`` if unknown or not available.
    :raises ValueError: If the module is not defined in this version of Pillow.
    N)fromlist)r   r   getattrr   )r   r   r   r   r   r   version_module'   s    r   c               C   s   dd t D S )z4
    :returns: A list of all supported modules.
    c             S   s   g | ]}t |r|qS r   )r   ).0fr   r   r   
<listcomp>=   s    z)get_supported_modules.<locals>.<listcomp>)r   r   r   r   r   get_supported_modules9   s    r#   jpegjpeglibjpeg2kjp2klibzipzliblibtiff)jpgjpg_2000r)   r*   c             C   s4   | t krtd|  t |  \}}|d ttjkS )z
    Checks if a codec is available.

    :param feature: The codec to check for.
    :returns: ``True`` if available, ``False`` otherwise.
    :raises ValueError: If the codec is not defined in this version of Pillow.
    zUnknown codec _encoder)codecsr   dirr   core)r   codeclibr   r   r   check_codecH   s    r3   c             C   sL   t | sdS t|  \}}ttj|d }| dkrH|jdd jdd S |S )a  
    :param feature: The codec to check for.
    :returns:
        The version number as a string, or ``None`` if not available.
        Checked at compile time for ``jpg``, run-time otherwise.
    :raises ValueError: If the codec is not defined in this version of Pillow.
    N_versionr*   
r   zVersion r   )r3   r.   r   r   r0   split)r   r1   r2   versionr   r   r   version_codecX   s    r8   c               C   s   dd t D S )z3
    :returns: A list of all supported codecs.
    c             S   s   g | ]}t |r|qS r   )r3   )r    r!   r   r   r   r"   q   s    z(get_supported_codecs.<locals>.<listcomp>)r.   r   r   r   r   get_supported_codecsm   s    r9   HAVE_WEBPANIMHAVE_WEBPMUXHAVE_TRANSPARENCY	HAVE_RAQMraqm_versionHAVE_FRIBIDIfribidi_versionHAVE_HARFBUZZharfbuzz_versionHAVE_LIBJPEGTURBOlibjpeg_turbo_versionHAVE_LIBIMAGEQUANTimagequant_versionHAVE_XCB)		webp_animwebp_muxtransp_webpraqmfribidiharfbuzzlibjpeg_turbolibimagequantxcbc             C   sV   | t krtd|  t |  \}}}yt|dgd}t||S  tk
rP   dS X dS )z
    Checks if a feature is available.

    :param feature: The feature to check for.
    :returns: ``True`` if available, ``False`` if unavailable, ``None`` if unknown.
    :raises ValueError: If the feature is not defined in this version of Pillow.
    zUnknown feature PIL)r   N)featuresr   r   r   r   )r   r   flagr   Zimported_moduler   r   r   check_feature   s    
rT   c             C   s:   t | sdS t|  \}}}|dkr&dS tt||gd|S )z
    :param feature: The feature to check for.
    :returns: The version number as a string, or ``None`` if not available.
    :raises ValueError: If the feature is not defined in this version of Pillow.
    N)r   )rT   rR   r   r   )r   r   rS   r   r   r   r   version_feature   s    rU   c               C   s   dd t D S )z5
    :returns: A list of all supported features.
    c             S   s   g | ]}t |r|qS r   )rT   )r    r!   r   r   r   r"      s    z*get_supported_features.<locals>.<listcomp>)rR   r   r   r   r   get_supported_features   s    rV   c             C   sJ   | t krt| S | tkr t| S | tkr0t| S tjd|  ddd dS )z
    :param feature: A module, codec, or feature name.
    :returns:
        ``True`` if the module, codec, or feature is available,
        ``False`` or ``None`` otherwise.
    zUnknown feature 'z'.   )
stacklevelF)r   r   r.   r3   rR   rT   warningswarn)r   r   r   r   check   s    r[   c             C   s4   | t krt| S | tkr t| S | tkr0t| S dS )z
    :param feature:
        The module, codec, or feature to check for.
    :returns:
        The version number as a string, or ``None`` if unknown or not available.
    N)r   r   r.   r8   rR   rU   )r   r   r   r   r7      s    r7   c              C   s"   t  } | jt  | jt  | S )zJ
    :returns: A list of all supported modules, features, and codecs.
    )r#   extendrV   r9   )retr   r   r   get_supported   s    r^   Tc             C   sH  | dkrt j} tj  tdd | d tdtj | d t jj }td|d j	  | d x*|dd D ]}td	|j	  | d qlW tdd | d td
t
jjtj | d tdt
jjtjj | d tdd | d xdRD  ]\}}t|r|dkr"td*r"d+td* }nt|}|dk	r|dSk}|dkrbtd,d- |jd.D dTk }|rld1nd2}|d$krx4dUD ],}t|}	|	dk	r|d5| d6|	 7 }qW td7|d8||| d ntd7|d9| d ntd:|d;| d  qW tdd | d |rDtjt}
x&tjj D ]\}}|
| j| qW x
ttjD ]}| }|tjkrn| d6tj|  }t|| d ||
krtd<jd5jt|
| | d g }|tjkr|jd= |tj kr|jd> |tj!kr|jd? |tj"kr |jd@ |tj#kr|jdA tdBjd5j|| d tdd | d qDW dS )VaG  
    Prints information about this installation of Pillow.
    This function can be called with ``python3 -m PIL``.

    :param out:
        The output stream to print to. Defaults to ``sys.stdout`` if ``None``.
    :param supported_formats:
        If ``True``, a list of all supported image file formats will be printed.
    N-D   )filezPillow zPython r   r   z       zPython modules loaded from zBinary modules loaded from r   PIL COREr   TKINTERr   	FREETYPE2r   
LITTLECMS2r   WEBPrJ   WEBP TransparencyrI   WEBPMUXrH   WEBP Animationr+   JPEGr,   OPENJPEG (JPEG2000)r)   ZLIB (PNG/ZIP)r*   LIBTIFFrK   RAQM (Bidirectional Text)rO   #LIBIMAGEQUANT (Quantization method)rP   XCB (X protocol)rN   zlibjpeg-turbo c             s   s   | ]}t |V  qd S )N)int)r    xr   r   r   	<genexpr>  s    zpilinfo.<locals>.<genexpr>.rW      zcompiled forZloadedrL   rM   z,  z---zsupport ok,z
support okz***zsupport not installedzExtensions: {}opensaveZsave_alldecodeencodezFeatures: {}r   rb   r   rc   r   rd   r   re   r   rf   rJ   rg   rI   rh   rH   ri   r+   rj   r,   rk   r)   rl   r*   rm   rK   rn   rO   ro   rP   rp   )r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   )r   r+   )rW   ru   )rL   rM   )$sysstdoutr   initprintrQ   __version__r7   
splitlinesstripospathdirname__file__r0   r[   rT   rU   tupler6   collectionsdefaultdictlistZ	EXTENSIONitemsappendsortedZIDZMIMEformatjoinZOPENZSAVEZSAVE_ALLZDECODERSZENCODERS)outZsupported_formats
py_versionnamer   vZversion_statictr!   v2
extensionsextilinerR   r   r   r   pilinfo   s    
              












r   )r   r   )r   r   )r   r	   )r
   r   )r   r   )r$   r%   )r&   r'   )r(   r)   )r*   r*   )r   r:   N)r   r;   N)r   r<   N)r   r=   r>   )r   r?   r@   )r   rA   rB   )r   rC   rD   )r   rE   rF   )r   rG   N)NT)r   r   r   rY   rQ    r   r   r   r   r#   r.   r3   r8   r9   rR   rT   rU   rV   r[   r7   r^   r   r   r   r   r   <module>   sH   