
    lhq                         d Z ddlZ	 ddlmZ n# e$ r	 ddlmZ Y nw xY wddlmZ d Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZddlmZ dS )z:mod:`wand.assertions` --- Input assertion helpers
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This module checks user input before calling MagickWands C-API methods.


.. versionadded:: 0.5.4
    N)Sequence   )string_typec                      |                                  D ]N\  }}t          |t                    s4d}|                    |t	          |                    }t          |          OdS )zEnsure all given values are boolean.

    :raises TypeError: if value is not ``True`` or ``False.

    .. versionadded:: 0.5.4
    z{0} must be a bool, not {1}N)items
isinstanceboolformatrepr	TypeErrorkwargslabelsubjectfmtmsgs        R/var/www/html/research.buxo.ca/env/lib/python3.11/site-packages/wand/assertions.pyassert_boolr      sj     !,,.. ! !w'4(( 	!/C**UDMM22CC.. 	!! !    c                      |                                  D ]N\  }}t          |t                    s4d}|                    |t	          |                    }t          |          OdS )zEnsure all given values are instances of :class:`~wand.color.Color`.

    :raises TypeError: if value is not :class:`~wand.color.Color`.

    .. versionadded:: 0.5.4
    z:Expecting an instance of wand.color.Color for {0}, not {1}N)r   r   Colorr
   r   r   r   s        r   assert_colorr   "   sj     !,,.. ! !w'5)) 	!NC**UDMM22CC.. 	!! !r   c                      t          di |  |                                 D ]2\  }}|dk     r'd}|                    ||          }t          |          3dS )zEnsure all given values are natural integer.

    :raises TypeError: if value is not an integer.
    :raises ValueError: if value is less than ``1``.

    .. versionadded:: 0.5.4
    r   z/{0}={1} must be a natural number greater than 0N assert_integerr   r
   
ValueErrorr   s        r   assert_counting_numberr   0   so     V ,,.. " "wQ;;CC**UG,,CS//! " "r   c                      |                                  D ]S\  }}t          |t          j                  s4d}|                    |t          |                    }t          |          TdS )z}Ensure all given values are an integer.

    :raises TypeError: if value is not an integer.

    .. versionadded:: 0.5.4
    z{0} must be an integer, not {1}N)r   r   numbersIntegralr
   r   r   r   s        r   r   r   @   sm     !,,.. ! !w'7#344 	!3C**UDMM22CC.. 	!! !r   c                      |                                  D ]S\  }}t          |t          j                  s4d}|                    |t          |                    }t          |          TdS )zEnsure all given values are real numbers.

    :raises TypeError: if value is not a real number.

    .. versionadded:: 0.5.4
    z"{0} must be a real number, not {1}N)r   r   r    Realr
   r   r   r   s        r   assert_realr$   N   sl     !,,.. ! !w'7<00 	!6C**UDMM22CC.. 	!! !r   c                      t          di |  |                                 D ]2\  }}|dk     r'd}|                    ||          }t          |          3dS )zEnsure all given values are positive integer.

    :raises TypeError: if value is not an integer.
    :raises ValueError: if value is less than ``0``.

    .. versionadded:: 0.5.4
    r   z"{0}={1} must be a positive integerNr   r   r   s        r   assert_unsigned_integerr&   \   so     V ,,.. " "wQ;;6C**UG,,CS//! " "r   c                     |                                  D ]J\  }}t          |t                    s4d}|                    |t	          |                    }t          |          t          |          dk    r4d}|                    |t          |                    }t          |          t          |d         t          j	                  s:d}|                    |t	          |d                             }t          |          t          |d         t          j	                  s:d}|                    |t	          |d                             }t          |          LdS )	zEnsure all given values are a sequence of 2 real numbers.

    :raises TypeError: if value is not a pair of doubles.

    .. versionadded:: 0.6.0
    z-'{0}' must be a pair of real numbers, not {1}   z/'{0}' must be a exactly 2 real numbers, not {1}r   z3first entry of '{0}' must be a real number, not {1}r   z4second entry of '{0}' must be a real number, not {1}N)
r   r   r   r
   r   r   lenr   r    r#   r   s        r   assert_coordinater*   l   s5    !,,.. ! !w'8,, 	!AC**UDMM22CC.. \\QCC**UCLL11CS//!GAJ55 	!GC**UD$4$455CC.. GAJ55 	!HC**UD$4$455CC.. 	!! !r   c                      |                                  D ]N\  }}t          |t                    s4d}|                    |t	          |                    }t          |          Od S )Nz{0} must be a string, not {1})r   r   r   r
   r   r   r   s        r   assert_stringr,      sh     ,,.. ! !w';// 	!1C**UDMM22CC.. 	!! !r   c                     |                                 D ]>\  }}|| vr5d}|                    ||t          |                    }t          |          ?d S )Nz#{0} must be defined in {1}, not {2})r   r
   r   r   )optionsr   r   subject_labelr   r   r   s          r   in_listr0      sd    "(,,.. " "w'!!7C**]E4==AACS//! "" "r   c                 :    t          di | t          | |fi | d S )Nr   )r,   r0   )r.   r   r   s      r   string_in_listr2      s4    FGU%%f%%%%%r   )r   )__doc__r    collections.abcr   ImportErrorcollectionscompatr   r   r   r   r   r$   r&   r*   r,   r0   r2   colorr   r   r   r   <module>r9      s+    %((((((( % % %$$$$$$$$%       ! ! !! ! !" " " ! ! !! ! !" " " ! ! !4! ! !" " "& & &        s    