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 dl
mZ d dlmZ dZdZd	Zed
ƒZG dd„ deƒZG dd„ deee  ƒZdeee ef deee  fdd„Zdeee ef deee  fdd„ZdS )é    N)ÚOptionalÚSequenceÚTypeVarÚUnion)ÚBaseMatcher)ÚDescription)Úwrap_matcher)ÚMatcherzJon ReidzCopyright 2011 hamcrest.orgzBSD, see License.txtÚTc                   @   sr   e Zd Zdeee  dee ddfdd„Zdede	fdd	„Z
de	fd
d„Zdede	fdd„Zdede	fdd„ZdS )ÚMatchingInOrderÚmatchersÚmismatch_descriptionÚreturnNc                 C   s   || _ || _d| _d S )Nr   )r   r   Únext_match_index)Úselfr   r   © r   úZ/usr/lib/python3/dist-packages/hamcrest/library/collection/issequence_containinginorder.pyÚ__init__   s   
zMatchingInOrder.__init__Úitemc                 C   s   |   |¡o	|  |¡S ©N)ÚisnotsurplusÚ	ismatched©r   r   r   r   r   Úmatches   s   zMatchingInOrder.matchesc                 C   s8   | j t| jƒk r| jr| j d¡ | j| j  ¡ dS dS )NzNo item matched: FT)r   Úlenr   r   Úappend_textÚappend_description_of)r   r   r   r   Ú
isfinished   s   
ÿzMatchingInOrder.isfinishedc                 C   sZ   | j | j }| |¡s$| jr"| j dt| jƒ d ¡ | || j¡ dS |  jd7  _dS )Nzitem z: Fé   T)r   r   r   r   r   ÚstrÚdescribe_mismatch)r   r   Zmatcherr   r   r   r   $   s   
zMatchingInOrder.ismatchedc                 C   s0   t | jƒ| jkr| jr| j d¡ |¡ dS dS )NzNot matched: FT)r   r   r   r   r   r   r   r   r   r   r   .   s
   zMatchingInOrder.isnotsurplus)Ú__name__Ú
__module__Ú__qualname__r   r	   r
   r   r   r   Úboolr   r   r   r   r   r   r   r   r      s    
ÿÿ
þ	
r   c                       s|   e Zd Zdeee  ddfdd„Z	ddee dee de	f‡ fdd	„Z
dee deddfd
d„Zdeddfdd„Z‡  ZS )ÚIsSequenceContainingInOrderr   r   Nc                 C   s
   || _ d S r   )r   )r   r   r   r   r   r   7   s   
z$IsSequenceContainingInOrder.__init__r   r   c                    s^   zt | j|ƒ}|D ]}| |¡s W dS q	| ¡ W S  ty.   |r+tt| ƒ ||¡ Y dS w )NF)r   r   r   r   Ú	TypeErrorÚsuperr%   r    )r   r   r   ZmatchsequenceÚelement©Ú	__class__r   r   r   :   s   
ÿ

ÿûz#IsSequenceContainingInOrder.matchesc                 C   s   |   ||¡ d S r   )r   )r   r   r   r   r   r   r    J   s   z-IsSequenceContainingInOrder.describe_mismatchÚdescriptionc                 C   s   |  d¡ ddd| j¡ d S )Nza sequence containing ú[z, ú])r   Zappend_listr   )r   r+   r   r   r   Údescribe_toM   s   z'IsSequenceContainingInOrder.describe_tor   )r!   r"   r#   r   r	   r
   r   r   r   r$   r   r    r.   Ú__classcell__r   r   r)   r   r%   6   s    ÿÿÿþr%   Úitemsr   c                  G   s$   g }| D ]	}|  t|ƒ¡ qt|ƒS )a·  Matches if sequence's elements satisfy a given list of matchers, in order.

    :param match1,...: A comma-separated list of matchers.

    This matcher iterates the evaluated sequence and a given list of matchers,
    seeing if each element satisfies its corresponding matcher.

    Any argument that is not a matcher is implicitly wrapped in an
    :py:func:`~hamcrest.core.core.isequal.equal_to` matcher to check for
    equality.

    )Úappendr   r%   )r0   r   r   r   r   r   Úcontains_exactlyQ   s   r2   c                  G   s   t  dt¡ t| Ž S )z)Deprecated - use contains_exactly(*items)z)deprecated - use contains_exactly(*items))ÚwarningsÚwarnÚDeprecationWarningr2   )r0   r   r   r   Úcontainsd   s   r6   )r3   Útypingr   r   r   r   Zhamcrest.core.base_matcherr   Zhamcrest.core.descriptionr   Z"hamcrest.core.helpers.wrap_matcherr   Zhamcrest.core.matcherr	   Ú
__author__Z__copyright__Z__license__r
   Úobjectr   r%   r2   r6   r   r   r   r   Ú<module>   s    &&*