B
    ç|²bÕ(  ã               @   s”  d Z ddlmZ ddlZddlZddlZddlZyddlmZm	Z	 W n e
k
r\   dZY nX ddlmZmZmZ dZdZd	jeŽ Zerpe ¡ Zee e e¡¡ƒZejZe d
e¡ZejrÌee ¡ ƒZndZee ¡ ƒZe dd„ e !¡ D ƒƒZ"ee #¡ ƒZ$e$r$e de$¡Zej%e&e'e !¡ ƒŽ Z(e ¡ Z)e *e e)¡¡ e)jZ+e ¡ Z,e -e e,¡¡ e,jZ.dekZ/[[[)[,d dd„Z0d!dd„Z1d"dd„Z2e dk	r¤e  3de¡Z [e4dkre5ej6dd… ƒZ7de7ksÖde7kre8deƒ ye8eƒ W n e9k
r   Y nX nŠde7kr,x~e1ƒ D ]Z:e8e:ƒ qW ndde7krRxXe2ƒ D ]Z;e8e;ƒ q>W n>de7krˆe0ƒ Z<x,e<D ]Z=e8d e=e<e= ¡ƒ qhW ne8eƒ dS )#a·  :mod:`wand.version` --- Version data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You can find the current version in the command line interface:

.. sourcecode:: console

   $ python -m wand.version
   0.0.0
   $ python -m wand.version --verbose
   Wand 0.0.0
   ImageMagick 6.7.7-6 2012-06-03 Q16 http://www.imagemagick.org
   $ python -m wand.version --config | grep CC | cut -d : -f 2
   gcc -std=gnu99 -std=gnu99
   $ python -m wand.version --fonts | grep Helvetica
   Helvetica
   Helvetica-Bold
   Helvetica-Light
   Helvetica-Narrow
   Helvetica-Oblique
   $ python -m wand.version --formats | grep CMYK
   CMYK
   CMYKA

.. versionadded:: 0.2.0
   The command line interface.

.. versionadded:: 0.2.2
   The ``--verbose``/``-v`` option which also prints ImageMagick library
   version for CLI.

.. versionadded:: 0.4.1
   The ``--fonts``, ``--formats``, & ``--config`` option allows printing
   additional information about ImageMagick library.

é    )Úprint_functionNé   )Ú	libmagickÚlibrary)ÚbinaryÚstring_typeÚtext)ÚVERSIONÚVERSION_INFOÚMAGICK_VERSIONÚMAGICK_VERSION_DELEGATESÚMAGICK_VERSION_FEATURESÚMAGICK_VERSION_INFOÚMAGICK_VERSION_NUMBERÚMAGICK_RELEASE_DATEÚMAGICK_RELEASE_DATE_STRINGÚMAGICK_HDRIÚQUANTUM_DEPTHÚQUANTUM_RANGEÚconfigure_optionsÚfontsÚformats)r   é   é   z{0}.{1}.{2}z-^ImageMagick\s+(\d+)\.(\d+)\.(\d+)(?:-(\d+))?Ú c             c   s   | ]}t |pd ƒV  qdS )r   N)Úint)Ú.0Úv© r   úO/home/ankuromar296_gmail_com/.local/lib/python3.7/site-packages/wand/version.pyú	<genexpr>v   s    r    z^(\d{4})-?(\d\d)-?(\d\d)$ZHDRIÚ*c             C   s²   t | tƒstdt| ƒ ƒ‚t ¡  t t| ƒ¡}t 	d¡}i }t 
|t |¡¡}xNt|jƒD ]@}t || ¡}t |¡}|r\tt |¡ƒ|t|ƒ< t |¡}q\W |r®t |¡}|S )ap  
    Queries ImageMagick library for configurations options given at
    compile-time.

    Example: Find where the ImageMagick documents are installed::

        >>> from wand.version import configure_options
        >>> configure_options('DOC*')
        {'DOCUMENTATION_PATH': '/usr/local/share/doc/ImageMagick-6'}

    :param pattern: A term to filter queries against. Supports wildcard '*'
                    characters. Default patterns '*' for all options.
    :type pattern: :class:`basestring`
    :returns: Directory of configuration options matching given pattern
    :rtype: :class:`collections.defaultdict`
    zpattern must be a string, not r   )Ú
isinstancer   Ú	TypeErrorÚreprr   ÚMagickWandGenesisÚctypesÚcreate_string_bufferr   Úc_size_tZMagickQueryConfigureOptionsÚbyrefÚrangeÚvalueÚ	string_atZMagickQueryConfigureOptionr   ÚMagickRelinquishMemory)ÚpatternÚ	pattern_pZconfig_countZconfigsZ	configs_pÚcursorÚconfigZval_pr   r   r   r       s"    



r   c             C   s’   t | tƒstdt| ƒ ƒ‚t ¡  t t| ƒ¡}t 	d¡}g }t 
|t |¡¡}x.t|jƒD ] }t || ¡}| t|ƒ¡ q\W |rŽt |¡}|S )a‚  
    Queries ImageMagick library for available fonts.

    Available fonts can be configured by defining `types.xml`,
    `type-ghostscript.xml`, or `type-windows.xml`.
    Use :func:`wand.version.configure_options` to locate system search path,
    and `resources <http://www.imagemagick.org/script/resources.php>`_
    article for defining xml file.

    Example: List all bold Helvetica fonts::

        >>> from wand.version import fonts
        >>> fonts('*Helvetica*Bold*')
        ['Helvetica-Bold', 'Helvetica-Bold-Oblique', 'Helvetica-BoldOblique',
         'Helvetica-Narrow-Bold', 'Helvetica-Narrow-BoldOblique']


    :param pattern: A term to filter queries against. Supports wildcard '*'
                    characters. Default patterns '*' for all options.
    :type pattern: :class:`basestring`
    :returns: Sequence of matching fonts
    :rtype: :class:`collections.Sequence`
    zpattern must be a string, not r   )r"   r   r#   r$   r   r%   r&   r'   r   r(   ZMagickQueryFontsr)   r*   r+   r,   Úappendr   r-   )r.   r/   Znumber_fontsr   Zfonts_pr0   Úfontr   r   r   r   Å   s    


r   c             C   s’   t | tƒstdt| ƒ ƒ‚t ¡  t t| ƒ¡}t 	d¡}g }t 
|t |¡¡}x.t|jƒD ] }t || ¡}| t|ƒ¡ q\W |rŽt |¡}|S )a  
    Queries ImageMagick library for supported formats.

    Example: List supported PNG formats::

        >>> from wand.version import formats
        >>> formats('PNG*')
        ['PNG', 'PNG00', 'PNG8', 'PNG24', 'PNG32', 'PNG48', 'PNG64']


    :param pattern: A term to filter formats against. Supports wildcards '*'
                    characters. Default pattern '*' for all formats.
    :type pattern: :class:`basestring`
    :returns: Sequence of matching formats
    :rtype: :class:`collections.Sequence`
    zpattern must be a string, not r   )r"   r   r#   r$   r   r%   r&   r'   r   r(   ZMagickQueryFormatsr)   r*   r+   r,   r2   r   r-   )r.   r/   Znumber_formatsr   Z	formats_pr0   r+   r   r   r   r   î   s    


r   z0.0.0Ú__main__z-vz	--verboseZWandz--fontsz	--formatsz--configz
{:24s}: {})r!   )r!   )r!   )>Ú__doc__Ú
__future__r   r&   ÚdatetimeÚreÚsysÚapir   r   ÚImportErrorÚcompatr   r   r   Ú__all__r
   Úformatr	   r(   Zc_magick_versionZGetMagickVersionr)   r   r+   r   ÚmatchZ_matchZGetMagickDelegatesr   ZGetMagickFeaturesr   ÚtupleÚgroupsr   ZGetMagickReleaseDater   ÚdateÚmapr   r   Zc_quantum_depthZGetMagickQuantumDepthr   Zc_quantum_rangeZGetMagickQuantumRanger   r   r   r   r   ÚreplaceÚ__name__Ú	frozensetÚargvÚoptionsÚprintÚ	NameErrorr3   Zsupported_formatZconfig_optionsÚkeyr   r   r   r   Ú<module>$   s~   




%
)
"






