
    e                         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e      Z G d deee            Zdeee   ef   deee      fdZdeee   ef   deee      fdZy)    N)OptionalSequenceTypeVarUnion)BaseMatcher)Description)wrap_matcher)MatcherzJon ReidzCopyright 2011 hamcrest.orgzBSD, see License.txtTc                   n    e Zd Zdeee      dee   ddfdZdede	fdZ
de	fdZdede	fd	Zdede	fd
Zy)MatchingInOrdermatchersmismatch_descriptionreturnNc                 .    || _         || _        d| _        y )Nr   )r   r   next_match_index)selfr   r   s      Z/usr/lib/python3/dist-packages/hamcrest/library/collection/issequence_containinginorder.py__init__zMatchingInOrder.__init__   s     !$8! !    itemc                 J    | j                  |      xr | j                  |      S N)isnotsurplus	ismatchedr   r   s     r   matcheszMatchingInOrder.matches   s!      &?4>>$+??r   c                     | j                   t        | j                        k  rN| j                  rA| j                  j	                  d      j                  | j                  | j                             yy)NzNo item matched: FT)r   lenr   r   append_textappend_description_of)r   s    r   
isfinishedzMatchingInOrder.isfinished   s\      3t}}#55(())556IJ``MM$"7"78 r   c                 <   | j                   | j                     }|j                  |      s]| j                  rP| j                  j	                  dt        | j                        z   dz          |j                  || j                         y| xj                  dz  c_        y)Nzitem z: F   T)r   r   r   r   r    strdescribe_mismatch)r   r   matchers      r   r   zMatchingInOrder.ismatched$   s    -- 5 56t$(())55gDDYDY@Z6Z]a6ab))$0I0IJ"r   c                     t        | j                        | j                  k  r7| j                  r*| j                  j	                  d      j                  |       yy)NzNot matched: FT)r   r   r   r   r    r!   r   s     r   r   zMatchingInOrder.isnotsurplus.   sH    t}}!6!66(())55oF\\]abr   )__name__
__module____qualname__r   r
   r   r   r   r   boolr   r"   r   r    r   r   r   r      su    " ,"DL[DY"	"@A @$ @D a D  t r   r   c                        e Zd Zdeee      ddfdZ	 ddee   dee   de	f fdZ
dee   deddfdZd	eddfd
Z xZS )IsSequenceContainingInOrderr   r   Nc                     || _         y r   )r   )r   r   s     r   r   z$IsSequenceContainingInOrder.__init__7   s	     r   r   r   c                     	 t        | j                  |      }|D ]  }|j                  |      r y |j                         S # t        $ r |rt
        t        |   ||       Y yw xY w)NF)r   r   r   r"   	TypeErrorsuperr/   r&   )r   r   r   matchsequenceelement	__class__s        r   r   z#IsSequenceContainingInOrder.matches:   sw    	+DMM;OPM !$,,W5 ! !++-- 	#14J. 	s   ,A A A A%$A%c                 (    | j                  ||       y r   )r   )r   r   r   s      r   r&   z-IsSequenceContainingInOrder.describe_mismatchJ   s    T/0r   descriptionc                 ^    |j                  d      j                  ddd| j                         y )Nza sequence containing [z, ])r    append_listr   )r   r8   s     r   describe_toz'IsSequenceContainingInOrder.describe_toM   s*     89EEc4QTVZVcVcdr   r   )r)   r*   r+   r   r
   r   r   r   r   r,   r   r&   r=   __classcell__)r6   s   @r   r/   r/   6   s    !'!*!5 !$ ! PTQK7?7L	 1hqk 1 1Y] 1e{ et er   r/   itemsr   c                  ^    g }| D ]  }|j                  t        |              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/   )r?   r   r   s      r   contains_exactlyrB   Q   s4     H ,T*+,&x00r   c                  F    t        j                  dt               t        |  S )z)Deprecated - use contains_exactly(*items)z)deprecated - use contains_exactly(*items))warningswarnDeprecationWarningrB   )r?   s    r   containsrG   d   s    MM=?QRU##r   )rD   typingr   r   r   r   hamcrest.core.base_matcherr   hamcrest.core.descriptionr   "hamcrest.core.helpers.wrap_matcherr	   hamcrest.core.matcherr
   
__author____copyright____license__r   objectr   r/   rB   rG   r-   r   r   <module>rQ      s     5 5 2 1 ; )
-$CL#f #Le+hqk": e61U71:q=1 1ghqk6J 1&$U71:q=) $ghqk.B $r   