U
    M»{j)  ã                
   @  sR  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlZddl	m
Z
 dddd	d
dœZdddœdd„Zdddœdd„Zddœdd„ZdddddœZdddœdd„Zdddœdd „Zddœd!d"„Zd#d$d%d&d'd(d)d*d+d,œ	Zdd-dœd.d/„Zdddœd0d1„Zddœd2d3„Zdd-dœd4d5„Zdddœd6d7„Zddœd8d9„Zd@d;dd<d=œd>d?„ZdS )Aé    )ÚannotationsN)ÚIOé   )ÚImage)úPIL._imagingZPILLOW_VERSION)zPIL._tkinter_finderZ
tk_version)úPIL._imagingftZfreetype2_version)zPIL._imagingcmsZlittlecms_version)ú	PIL._webpZwebpdecoder_version)ÚpilÚtkinterÚ	freetype2Ú
littlecms2ÚwebpÚstrÚbool)ÚfeatureÚreturnc              
   C  s„   | t krd| › �}t|ƒ‚t |  \}}zt|ƒ W dS  tk
rJ   Y dS  tk
r~ } zt t|ƒ¡ W Y ¢dS d}~X Y n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__ÚModuleNotFoundErrorÚImportErrorÚwarningsÚwarnr   )r   ÚmsgÚmoduleÚverÚex© r   úK/var/www/html/bwave/python/venv/lib/python3.8/site-packages/PIL/features.pyÚcheck_module   s    
r   z
str | Nonec                 C  s,   t | ƒsdS t|  \}}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#   z	list[str])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>A   s      z)get_supported_modules.<locals>.<listcomp>)r   r   r   r   r   Úget_supported_modules=   s    r(   )ZjpegZjpeglib)Zjpeg2kZjp2klib)ÚzipÚzlib)Úlibtiffr+   )ÚjpgÚjpg_2000r*   r+   c                 C  s:   | t krd| › �}t|ƒ‚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   r   ÚcodecÚlibr   r   r   Úcheck_codecL   s
    
r4   c                 C  sN   t | ƒsdS t|  \}}ttj|› d�ƒ}| dkrJ| d¡d  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   )r4   r/   r"   r   r1   Úsplit)r   r2   r3   Úversionr   r   r   Úversion_codec]   s    r9   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   )r4   r$   r   r   r   r'   v   s      z(get_supported_codecs.<locals>.<listcomp>)r/   r   r   r   r   Úget_supported_codecsr   s    r:   )r   ZHAVE_WEBPANIMN)r   ZHAVE_WEBPMUXN)r   ZHAVE_TRANSPARENCYN)r   Z	HAVE_RAQMZraqm_version)r   ZHAVE_FRIBIDIZfribidi_version)r   ZHAVE_HARFBUZZZharfbuzz_version)r   ZHAVE_LIBJPEGTURBOÚlibjpeg_turbo_version)r   ZHAVE_LIBIMAGEQUANTZimagequant_version)r   ZHAVE_XCBN)	Ú	webp_animÚwebp_muxÚtransp_webpÚraqmÚfribidiÚharfbuzzÚlibjpeg_turboÚlibimagequantÚxcbzbool | Nonec              
   C  s’   | t krd| › �}t|ƒ‚t |  \}}}zt|dgd�}t||ƒW S  tk
rX   Y dS  tk
rŒ } zt t|ƒ¡ W Y ¢dS d}~X Y n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 ÚPILr    N)	Úfeaturesr   r   r"   r   r   r   r   r   )r   r   r   Úflagr   Zimported_moduler   r   r   r   Úcheck_feature†   s    
rH   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.
    Nr    )rH   rF   r"   r   )r   r   rG   r   r   r   r   Úversion_featurež   s    rI   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   )rH   r$   r   r   r   r'   ³   s      z*get_supported_features.<locals>.<listcomp>)rF   r   r   r   r   Úget_supported_features¯   s    rJ   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/   r4   rF   rH   r   r   ©r   r   r   r   Úcheck¶   s    rN   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/   r9   rF   rI   rM   r   r   r   r8   È   s    r8   c                  C  s"   t ƒ } |  tƒ ¡ |  tƒ ¡ | S )zJ
    :returns: A list of all supported modules, features, and codecs.
    )r(   ÚextendrJ   r:   )Úretr   r   r   Úget_supportedØ   s    rQ   TzIO[str] | NoneÚNone)ÚoutÚsupported_formatsr   c              	   C  s„  | dkrt j} t ¡  td| d� tdtj› �| d� t j ¡ }td|d  	¡ › �| d� |dd… D ]}td| 	¡ › �| d� qftd| d� td	t j
pšd
› �| d� t jt jkrÆtdt j› �| d� tdt j› �| d� td| d� tdtj tj¡› �| d� tdtj tjj¡› �| d� td| d� dD �]\}}t|ƒ�r(d}|dk�rltdƒ}|dk	�rld| }|dk�r~t|ƒ}|dk	�r|dk}|dk�r¶tdd„ | d¡D ƒƒdk }|�rÀdnd}	|dk�r dD ],}
t|
ƒ}|dk	�rÒ|d|
› d|› �7 }�qÒtd|d |	|| d� ntd|d!| d� ntd"|d#| d� �q0td| d� |�r€t t¡}tj ¡ D ]\}}||  |¡ �qbttjƒD ]ø}|› }|tjk�r°|› dtj| › �}t|| d� ||k�rætd$ d  t|| ƒ¡¡| d� g }|tj!k�r | d%¡ |tj"k�r| d&¡ |tj#k�r,| d'¡ |tj$k�rB| d(¡ |tj%k�rX| d)¡ td* d  |¡¡| d� td| d� �q†dS )+a  
    Prints information about this installation of Pillow.
    This function can be called with ``python3 -m PIL``.
    It can also be called with ``python3 -m PIL.report`` or ``python3 -m PIL --report``
    to have "supported_formats" set to ``False``, omitting the list of all supported
    image file formats.

    :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.
    NzD--------------------------------------------------------------------)ÚfilezPillow zPython r   r   z       zPython executable is Úunknownz%Environment Python files loaded from z System Python files loaded from z"Python Pillow modules loaded from z"Binary Pillow modules loaded from ))r	   zPIL CORE)r
   ZTKINTER)r   Z	FREETYPE2)r   Z
LITTLECMS2)r   ZWEBP)r>   zWEBP Transparency)r=   ZWEBPMUX)r<   zWEBP Animation)r,   ZJPEG)r-   zOPENJPEG (JPEG2000))r*   zZLIB (PNG/ZIP))r+   ZLIBTIFF)r?   zRAQM (Bidirectional Text))rC   z#LIBIMAGEQUANT (Quantization method))rD   zXCB (X protocol)r,   rB   zlibjpeg-turbo )r	   r,   r   c                 s  s   | ]}t |ƒV  qd S )N)Úint)r%   Úxr   r   r   Ú	<genexpr>)  s     zpilinfo.<locals>.<genexpr>Ú.)rK   é   zcompiled forZloadedr?   )r@   rA   z, ú z---zsupport ok,z
support okz***zsupport not installedzExtensions: {}ÚopenÚsaveZsave_allÚdecodeÚencodezFeatures: {})&ÚsysÚstdoutr   ÚinitÚprintrE   Ú__version__r8   Ú
splitlinesÚstripÚ
executableÚprefixÚbase_prefixÚosÚpathÚdirnameÚ__file__r1   rN   rI   Útupler7   ÚcollectionsÚdefaultdictÚlistZ	EXTENSIONÚitemsÚappendÚsortedZIDÚMIMEÚformatÚjoinZOPENZSAVEZSAVE_ALLZDECODERSZENCODERS)rS   rT   Zpy_version_linesÚ
py_versionÚnamer   Úvr;   Zversion_staticÚtr&   Zv2Ú
extensionsÚextÚiÚlinerF   r   r   r   Úpilinfoã   s”    
þþ









 ÿ




r�   )NT)Ú
__future__r   rp   rk   ra   r   Útypingr   rE   Ú r   r   r   r#   r(   r/   r4   r9   r:   rF   rH   rI   rJ   rN   r8   rQ   r�   r   r   r   r   Ú<module>   sR   û	ü÷