o
    üÞh×,  ã                   @  s&  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dEdd„ZdFdd„ZdGdd„ZdddddœZdEdd „ZdFd!d"„ZdGd#d$„Zd%d%d%d&d'd(d)d*d+d,d-d.œZd/ed0< dHd2d3„ZdFd4d5„ZdGd6d7„ZdHd8d9„ZdFd:d;„ZdGd<d=„ZdIdJdCdD„ZdS )Ké    )ÚannotationsN)ÚIOé   )ÚImage)Ú	deprecate)úPIL._imagingÚPILLOW_VERSION)zPIL._tkinter_finderÚ
tk_version)úPIL._imagingftÚfreetype2_version)zPIL._imagingcmsÚlittlecms_version)ú	PIL._webpÚwebpdecoder_version)z	PIL._avifÚlibavif_version)ÚpilÚtkinterÚ	freetype2Ú
littlecms2ÚwebpÚavifÚfeatureÚstrÚreturnÚboolc              
   C  s|   | t vrd| › �}t|ƒ‚t |  \}}zt|ƒ W dS  ty$   Y dS  ty= } zt t|ƒ¡ W Y d}~dS d}~ww )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%   úL/var/www/html/premium_crap/venv/lib/python3.10/site-packages/PIL/features.pyÚcheck_module   s   
€þr'   ú
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,   ú	list[str]c                   C  ó   dd„ t D ƒS )z4
    :returns: A list of all supported modules.
    c                 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?   ó   r5   )ÚjpegÚjpeglib)Újpeg2kÚ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
   
rF   c                 C  sN   t | ƒsdS t|  \}}ttj|› d�ƒ}| dkr%| 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   )rF   rA   r+   r   rC   Úsplit)r   rD   rE   Úversionr%   r%   r&   Úversion_codec_   s   rK   c                   C  r.   )z3
    :returns: A list of all supported codecs.
    c                 S  r/   r%   )rF   r0   r%   r%   r&   r3   x   r4   z(get_supported_codecs.<locals>.<listcomp>)rA   r%   r%   r%   r&   Úget_supported_codecst   r6   rL   )r   TN)r
   Ú	HAVE_RAQMÚraqm_version)r
   ÚHAVE_FRIBIDIÚfribidi_version)r
   ÚHAVE_HARFBUZZÚharfbuzz_version)r   ÚHAVE_LIBJPEGTURBOÚlibjpeg_turbo_version)r   ÚHAVE_MOZJPEGrT   )r   ÚHAVE_ZLIBNGÚzlib_ng_version)r   ÚHAVE_LIBIMAGEQUANTÚimagequant_version)r   ÚHAVE_XCBN)Ú	webp_animÚwebp_muxÚtransp_webpÚraqmÚfribidiÚharfbuzzÚlibjpeg_turboÚmozjpegÚzlib_ngÚlibimagequantÚxcbz-dict[str, tuple[str, str | bool, str | None]]Úfeaturesúbool | Nonec              
   C  s¶   | t vrd| › �}t|ƒ‚t |  \}}}t|tƒr"td| › d�dƒ zt|dgd�}t|tƒr2|W S t||ƒW S  tyA   Y dS  tyZ } zt	 
t|ƒ¡ W Y d}~dS d}~ww )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)rf   r   Ú
isinstancer   r   r   r+   r   r   r   r    r   )r   r!   r"   Úflagr#   Ú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   rf   r+   r   )r   r"   rk   r#   r%   r%   r&   Úversion_feature¦   s   rn   c                  C  sp   g } t  ¡ D ]/\}\}}}|du r,t ¡ D ]\}\}}||kr*t|ƒr(|  |¡  nqqt|ƒr5|  |¡ q| S )z5
    :returns: A list of all supported features.
    T)rf   Úitemsr   r'   Úappendrm   )Úsupported_featuresr2   r"   rk   Ú_r   Úfeature_moduler%   r%   r&   Úget_supported_features·   s   
ý€
€rt   c                 C  sJ   | t v rt| ƒS | tv rt| ƒS | tv rt| ƒ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'   rA   rF   rf   rm   r   r    ©r   r%   r%   r&   ÚcheckÈ   s   rx   c                 C  s4   | t v rt| ƒS | tv rt| ƒS | tv rt| ƒ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,   rA   rK   rf   rn   rw   r%   r%   r&   rJ   Ú   s   rJ   c                  C  s"   t ƒ } |  tƒ ¡ |  tƒ ¡ | S )zJ
    :returns: A list of all supported modules, features, and codecs.
    )r5   Úextendrt   rL   )Úretr%   r%   r&   Úget_supportedê   s   r{   TÚoutúIO[str] | NoneÚsupported_formatsÚNonec              	   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� q3td| d� td	t j
pMd
› �| d� t jt jkrct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r½tdƒ}|dur½tdƒrµdnd}|d| 7 }|du rÅt|ƒ}|du�r"|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� q˜td#|d%| d� q˜td&|d'| d� q˜td| d� |�rÖt t¡}tj ¡ D ]\}}||  |¡ �qGttjƒD ]~}|› }|tjv �rn|› dtj| › �}t|| d� ||v �r‰td(  d" !t|| ƒ¡¡| d� g }|tj"v �r–| d)¡ |tj#v �r¡| d*¡ |tj$v �r¬| d+¡ |tj%v �r·| d,¡ |tj&v �rÂ| d-¡ td.  d" !|¡¡| d� td| d� �qYdS 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   ÚTKINTER)r   Ú	FREETYPE2)r   Ú
LITTLECMS2)r   ÚWEBP)r   ÚAVIF)r>   ÚJPEG)r?   zOPENJPEG (JPEG2000))r<   zZLIB (PNG/ZIP))r=   ÚLIBTIFF)r^   zRAQM (Bidirectional Text))rd   z#LIBIMAGEQUANT (Quantization method))re   zXCB (X protocol)r>   ra   rb   zlibjpeg-turboú )r   r>   r   c                 s  s   � | ]}t |ƒV  qd S )N)Úint)r1   Úxr%   r%   r&   Ú	<genexpr>:  s   € zpilinfo.<locals>.<genexpr>Ú.)ru   é   zcompiled forÚloadedr<   rc   z, compiled for zlib-ng r^   )r_   r`   z, z---zsupport ok,z
support okz***zsupport not installedzExtensions: {}ÚopenÚsaveÚsave_allÚdecodeÚencodezFeatures: {})'ÚsysÚstdoutr   ÚinitÚprintri   Ú__version__rJ   Ú
splitlinesÚstripÚ
executableÚprefixÚbase_prefixÚosÚpathÚdirnameÚ__file__rC   rx   rn   rm   ÚtuplerI   ÚcollectionsÚdefaultdictÚlistÚ	EXTENSIONro   rp   ÚsortedÚIDÚMIMEÚformatÚjoinÚOPENÚSAVEÚSAVE_ALLÚDECODERSÚENCODERS)r|   r~   Úpy_version_linesÚ
py_versionÚnamer   ÚvrT   Úversion_staticÚtrW   r2   Úv2Ú
extensionsÚextÚiÚlinerf   r%   r%   r&   Úpilinfoõ   s¤   
þþ

€

€

ÿ




ãr½   )r   r   r   r   )r   r   r   r(   )r   r-   )r   r   r   rg   )NT)r|   r}   r~   r   r   r   )Ú
__future__r   r¤   rŸ   r•   r   Útypingr   ri   Ú r   Ú
_deprecater   r   r'   r,   r5   rA   rF   rK   rL   rf   Ú__annotations__rm   rn   rt   rx   rJ   r{   r½   r%   r%   r%   r&   Ú<module>   s\    ú



ü


õ





