a
    ç´«j×,  ã                   @  sn  U 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lmZ d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,d-d.œZd/ed0< dd1dœd2d3„Zdddœd4d5„Zddœd6d7„Zdd1dœd8d9„Zdddœd:d;„Zddœd<d=„ZdDd?dd@dAœdBdC„ZdS )Eé    )ÚannotationsN)ÚIOé   )ÚImage)Ú	deprecate)úPIL._imagingZPILLOW_VERSION)zPIL._tkinter_finderZ
tk_version)úPIL._imagingftZfreetype2_version)zPIL._imagingcmsZlittlecms_version)ú	PIL._webpZwebpdecoder_version)z	PIL._avifZlibavif_version)ÚpilÚtkinterÚ	freetype2Ú
littlecms2ÚwebpÚavifÚstrÚbool)ÚfeatureÚreturnc              
   C  s€   | t vrd| › �}t|ƒ‚t |  \}}zt|ƒ W dS  tyH   Y dS  tyz } zt t|ƒ¡ W Y d}~dS d}~0 0 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/laksyashrimp/venv/lib/python3.9/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_module0   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>C   ó    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 vrd| › �}t|ƒ‚t |  \}}|› d�ttjƒv 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_codecN   s
    
r7   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   )r7   r2   r$   r   r4   Úsplit)r   r5   r6   Úversionr   r   r    Úversion_codec_   s    r<   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   )r7   r&   r   r   r    r)   x   r*   z(get_supported_codecs.<locals>.<listcomp>)r2   r   r   r   r    Úget_supported_codecst   s    r=   )r	   TN)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_MOZJPEGr>   )r   ZHAVE_ZLIBNGÚzlib_ng_version)r   ZHAVE_LIBIMAGEQUANTZimagequant_version)r   ZHAVE_XCBN)Z	webp_animZwebp_muxZtransp_webpÚraqmÚfribidiÚharfbuzzÚlibjpeg_turboÚmozjpegÚzlib_ngÚlibimagequantÚxcbz-dict[str, tuple[str, str | bool, str | None]]Úfeatureszbool | Nonec              
   C  sº   | t vrd| › �}t|ƒ‚t |  \}}}t|tƒrDtd| › d�dƒ z*t|dgd�}t|tƒrd|W S t||ƒW S  ty‚   Y dS  ty´ } zt	 
t|ƒ¡ W Y d}~dS d}~0 0 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 zcheck_feature("z")é   ÚPILr"   N)rH   r   Ú
isinstancer   r   r   r$   r   r   r   r   r   )r   r   r   Úflagr   Zimported_moduler   r   r   r    Úcheck_featureŠ   s     


rM   c                 C  s:   t | ƒsdS t|  \}}}|du 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"   )rM   rH   r$   r   )r   r   rL   r   r   r   r    Úversion_feature¦   s    rN   c                  C  sp   g } t  ¡ D ]^\}\}}}|du rXt ¡ D ]*\}\}}||kr*t|ƒrP|  |¡  qjq*qt|ƒr|  |¡ q| S )z5
    :returns: A list of all supported features.
    T)rH   Úitemsr   r!   ÚappendrM   )Zsupported_featuresr(   r   rL   Ú_r   Zfeature_moduler   r   r    Úget_supported_features·   s    
rR   c                 C  sJ   | t v rt| ƒS | tv r t| ƒS | tv 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!   r2   r7   rH   rM   r   r   ©r   r   r   r    ÚcheckÈ   s    rV   c                 C  s4   | t v rt| ƒS | tv r t| ƒS | tv 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%   r2   r<   rH   rN   rU   r   r   r    r;   Ú   s    r;   c                  C  s"   t ƒ } |  tƒ ¡ |  tƒ ¡ | S )zJ
    :returns: A list of all supported modules, features, and codecs.
    )r+   ÚextendrR   r=   )Úretr   r   r    Úget_supportedê   s    rY   TzIO[str] | NoneÚNone)ÚoutÚsupported_formatsr   c              	   C  sÄ  | du 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 �]H\}}t|ƒ�rhd}|dk�r‚tdƒ}|du�r‚tdƒ�rrdnd}|d| 7 }|du �r”t|ƒ}|du�rV|dv }|dk�rÌtdd„ | d¡D ƒƒdk }|�rÖdnd}	|dk�rtdƒ}
|
du�r@|d|
 7 }n<|d k�r@d!D ],}t|ƒ}|du�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 ]\}}||  |¡ �q¢ttjƒD ]ø}|› }|tjv �rð|› dtj| › �}t|| d� ||v �r&td(  d" !t|| ƒ¡¡| d� g }|tj"v �r@| d)¡ |tj#v �rV| d*¡ |tj$v �rl| d+¡ |tj%v �r‚| d,¡ |tj&v �r˜| 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AVIF)r/   ZJPEG)r0   zOPENJPEG (JPEG2000))r-   zZLIB (PNG/ZIP))r.   ZLIBTIFF)r@   zRAQM (Bidirectional Text))rF   z#LIBIMAGEQUANT (Quantization method))rG   zXCB (X protocol)r/   rC   rD   zlibjpeg-turboú )r
   r/   r   c                 s  s   | ]}t |ƒV  qd S )N)Úint)r'   Úxr   r   r    Ú	<genexpr>:  r*   zpilinfo.<locals>.<genexpr>Ú.)rS   é   zcompiled forZloadedr-   rE   z, compiled for zlib-ng r@   )rA   rB   z, z---zsupport ok,z
support okz***zsupport not installedzExtensions: {}ÚopenÚsaveZsave_allÚdecodeÚencodezFeatures: {})'ÚsysÚstdoutr   ÚinitÚprintrJ   Ú__version__r;   Ú
splitlinesÚstripÚ
executableÚprefixÚbase_prefixÚosÚpathÚdirnameÚ__file__r4   rV   rN   rM   Útupler:   ÚcollectionsÚdefaultdictÚlistZ	EXTENSIONrO   rP   ÚsortedZIDÚMIMEÚformatÚjoinZOPENZSAVEZSAVE_ALLZDECODERSZENCODERS)r[   r\   Zpy_version_linesÚ
py_versionÚnamer   Úvr>   Zversion_staticÚtr?   r(   Úv2Ú
extensionsÚextÚiÚlinerH   r   r   r    Úpilinfoõ   sœ    
þþ











ÿ




rˆ   )NT)Ú
__future__r   rx   rs   ri   r   Útypingr   rJ   Ú r   Z
_deprecater   r   r!   r%   r+   r2   r7   r<   r=   rH   Ú__annotations__rM   rN   rR   rV   r;   rY   rˆ   r   r   r   r    Ú<module>   sZ   ú
üõ