o
    (]^                  
   @   s   d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 dZ
dZdZdZdZed	Zeddedee deddfddZeddededdfddZdddZdedee deddfddZddedee ddfddZdS )    N)OptionalTypeVarcastoverload)Matcher)StringDescriptionzJon ReidzCopyright 2011 hamcrest.orgzBSD, see License.txtTT actualmatcherreasonreturnc                 C      d S N r
   r   r   r   r   ;/usr/lib/python3/dist-packages/hamcrest/core/assert_that.pyassert_that      r   	assertionc                 C   r   r   r   r   r   r   r   r   r      r   c                 C   sV   t |trt| ||d dS t | trtdt|  ttt	| tt
|d dS )a  Asserts that actual value satisfies matcher. (Can also assert plain
    boolean condition.)

    :param actual: The object to evaluate as the actual value.
    :param matcher: The matcher to satisfy as the expected condition.
    :param reason: Optional explanation to include in failure description.

    ``assert_that`` passes the actual value to the matcher for evaluation. If
    the matcher is not satisfied, an exception is thrown describing the
    mismatch.

    ``assert_that`` is designed to integrate well with PyUnit and other unit
    testing frameworks. The exception raised for an unmet assertion is an
    :py:exc:`AssertionError`, which PyUnit reports as a test failure.

    With a different set of parameters, ``assert_that`` can also verify a
    boolean condition:

    .. function:: assert_that(assertion[, reason])

    :param assertion:  Boolean condition to verify.
    :param reason:  Optional explanation to include in failure description.

    This is equivalent to the :py:meth:`~unittest.TestCase.assertTrue` method
    of :py:class:`unittest.TestCase`, but offers greater flexibility in test
    writing by being a standalone function.

    r   z"arg1 should be boolean, but was {}r   N)
isinstancer   _assert_matchwarningswarnformattype_assert_boolr   boolstrr   r   r   r   r      s
   

c                 C   sN   | | s%t }||d|d || | |d t|d S )Nz
Expected: z
     but: 
)matchesr   append_textappend_description_ofdescribe_mismatchAssertionError)r
   r   r   descriptionr   r   r   r   A   s   

r   c                 C   s   | s
|sd}t |d S )NzAssertion failed)r%   r   r   r   r   r   L   s
   r   )r	   )Nr	   r   )r   typingr   r   r   r   hamcrest.core.matcherr    hamcrest.core.string_descriptionr   
__author____copyright____license__
__unittest__tracebackhide__r   r   r   r   r   r   r   r   r   r   <module>   s"    "
% 