a
    Df'                  
   @  s   d dl mZ 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 ddddd	d
Z	dd Z
dd Zdd ZdddddZdd Zdd Zdd Zddddd d!d"d#d$d%	Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd5d3d4ZdS )6    )annotationsN   )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webpc              
   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warnstr)featuremsgmoduleverex r   Y/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/PIL/features.pycheck_module   s    
r   c                 C  s8   t | sdS t|  \}}|du 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>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  s8   | 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
    
r2   c                 C  sL   t | sdS t|  \}}ttj|d }| dkrH|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   )r2   r-   r   r   r/   split)r   r0   r1   versionr   r   r   version_codec_   s    r7   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   )r2   r!   r   r   r   r$   x   r%   z(get_supported_codecs.<locals>.<listcomp>)r-   r   r   r   r   get_supported_codecst   s    r8   )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_LIBJPEGTURBOZ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xcbc              
   C  s   | t vrd|  }t|t |  \}}}zt|dgd}t||W S  tyV   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 PILr   N)	featuresr   r   r   r   r   r   r   r   )r   r   r   flagr   Zimported_moduler   r   r   r   check_feature   s    
rE   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   )rE   rC   r   r   )r   r   rD   r   r   r   r   version_feature   s    rF   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   )rE   r!   r   r   r   r$      r%   z*get_supported_features.<locals>.<listcomp>)rC   r   r   r   r   get_supported_features   s    rG   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   r-   r2   rC   rE   r   r   r   r   r   r   check   s    rK   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    r-   r7   rC   rF   rJ   r   r   r   r6      s    r6   c                  C  s"   t  } | t  | t  | S )zJ
    :returns: A list of all supported modules, features, and codecs.
    )r&   extendrG   r8   )retr   r   r   get_supported   s    rN   Tc              	   C  sr  | 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
pd
 | d t jt jkrt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krdtdrddtd }nt|}|dur|dv }|dkrtdd |dD dk }|rdnd}|dkrdD ],}t|}	|	dur|d| d|	 7 }qtd|d ||| d ntd|d!| d ntd"|d#| d q0td| d |rntt}
tj D ]\}}|
| | qPttjD ]}| }|tjv r| dtj|  }t|| d ||
v rtd$ d!t|
| | d g }|tj"v r|d% |tj#v r|d& |tj$v r|d' |tj%v r0|d( |tj&v rF|d) td* d!|| d td| d qtd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)r9   zWEBP Animation)r*   ZJPEG)r+   zOPENJPEG (JPEG2000))r(   zZLIB (PNG/ZIP))r)   ZLIBTIFF)r<   zRAQM (Bidirectional Text))r@   z#LIBIMAGEQUANT (Quantization method))rA   zXCB (X protocol)r*   r?   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>.)rH      zcompiled forZloadedr<   )r=   r>   z,  z---zsupport ok,z
support okz***zsupport not installedzExtensions: {}opensaveZsave_alldecodeencodezFeatures: {})'sysstdoutr   initprintrB   __version__r6   
splitlinesstrip
executableprefixbase_prefixospathdirname__file__r/   rK   rE   rF   tupler5   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#   Zv2
extensionsextilinerC   r   r   r   pilinfo   s    












r{   )NT)
__future__r   rj   re   r[   r   rB    r   r   r   r    r&   r-   r2   r7   r8   rC   rE   rF   rG   rK   r6   rN   r{   r   r   r   r   <module>   sP   	