o
    HXh                     @   s&  d dl Z d dlZd dlmZ d dlmZmZ d dlmZmZm	Z	 d dl
Z
d dlZd dlZd dlZd dlZg dZG dd dZG dd	 d	ZG d
d dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dejZedkre  dS dS )    N)cpython_only)TESTFNunlink)check_free_after_iterating	ALWAYS_EQNEVER_EQ))r   r   r   )r   r      )r   r      )r   r   r   )r   r   r   r   r   r	   )r   r	   r   )r   r	   r   )r   r	   r	   )r   r   r   )r   r   r   )r   r   r	   )r   r   r   )r   r   r   )r   r   r	   )r   r	   r   )r   r	   r   )r   r	   r	   )r	   r   r   )r	   r   r   )r	   r   r	   )r	   r   r   )r	   r   r   )r	   r   r	   )r	   r	   r   )r	   r	   r   )r	   r	   r	   c                   @   $   e Zd Zdd Zdd Zdd ZdS )BasicIterClassc                 C      || _ d| _d S Nr   )niselfr    r   8/opt/python-3.10.19/usr/lib/python3.10/test/test_iter.py__init__      
zBasicIterClass.__init__c                 C   s"   | j }|| jkr
t|d | _ |S Nr   )r   r   StopIterationr   resr   r   r   __next__!   s
   

zBasicIterClass.__next__c                 C      | S Nr   r   r   r   r   __iter__'      zBasicIterClass.__iter__N__name__
__module____qualname__r   r   r   r   r   r   r   r      s    r   c                   @      e Zd Zdd Zdd ZdS )IteratingSequenceClassc                 C   
   || _ d S r   r   r   r   r   r   r   +      
zIteratingSequenceClass.__init__c                 C   
   t | jS r   )r   r   r   r   r   r   r   -   r)   zIteratingSequenceClass.__iter__Nr"   r#   r$   r   r   r   r   r   r   r&   *       r&   c                   @   r   )IteratorProxyClassc                 C   r'   r   r   r   r   r   r   r   r   1   r)   zIteratorProxyClass.__init__c                 C   r*   r   )nextr   r   r   r   r   r   3   r)   zIteratorProxyClass.__next__c                 C   r   r   r   r   r   r   r   r   5   r    zIteratorProxyClass.__iter__Nr!   r   r   r   r   r-   0   s    r-   c                   @   r%   )SequenceClassc                 C   r'   r   r(   r   r   r   r   r   9   r)   zSequenceClass.__init__c                 C   s"   d|  kr| j k r|S  ttr   )r   
IndexErrorr/   r   r   r   __getitem__;   s   zSequenceClass.__getitem__Nr"   r#   r$   r   r3   r   r   r   r   r1   8   r,   r1   c                   @   r%   )SequenceProxyClassc                 C   r'   r   s)r   r7   r   r   r   r   B   r)   zSequenceProxyClass.__init__c                 C   s
   | j | S r   r6   r/   r   r   r   r3   D   r)   zSequenceProxyClass.__getitem__Nr4   r   r   r   r   r5   A   r,   r5   c                   @      e Zd Zdd ZdS )UnlimitedSequenceClassc                 C      |S r   r   r/   r   r   r   r3   H   r    z"UnlimitedSequenceClass.__getitem__Nr"   r#   r$   r3   r   r   r   r   r9   G       r9   c                   @   s   e Zd ZdS )DefaultIterClassN)r"   r#   r$   r   r   r   r   r=   K   s    r=   c                   @   s   e Zd Zdd ZdZdS )NoIterClassc                 C   r:   r   r   r/   r   r   r   r3   O   r    zNoIterClass.__getitem__N)r"   r#   r$   r3   r   r   r   r   r   r>   N   s    r>   c                   @   r8   )BadIterableClassc                 C      t r   )ZeroDivisionErrorr   r   r   r   r   T   r    zBadIterableClass.__iter__Nr"   r#   r$   r   r   r   r   r   r?   S   r<   r?   c                   @   r%   )EmptyIterClassc                 C      dS r   r   r   r   r   r   __len__X   r    zEmptyIterClass.__len__c                 C   r@   r   r   r/   r   r   r   r3   Z   r    zEmptyIterClass.__getitem__N)r"   r#   r$   rE   r3   r   r   r   r   rC   W   r,   rC   c                   @   s  e Zd ZdyddZdyddZdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Z d>d? Z!d@dA Z"dBdC Z#dDdE Z$dFdG Z%dHdI Z&dJdK Z'dLdM Z(dNdO Z)dPdQ Z*dRdS Z+dTdU Z,dVdW Z-e.dXdY Z/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8dldm Z9dndo Z:e.dpdq Z;drds Z<dtdu Z=dvdw Z>dxS )zTestCaseTc                 C   sR   |r|  || g }	 zt|}W n	 ty   Y nw || q| || d S r   )check_pickler0   r   appendassertEqual)r   itseqpickler   valr   r   r   check_iteratorb   s   
zTestCase.check_iteratorc                 C   s<   |r
|  t|| g }|D ]}|| q| || d S r   )rH   iterrI   rJ   )r   exprrL   rM   r   rN   r   r   r   check_for_loopo   s   zTestCase.check_for_loopc              	   C   s   t tjd D ]K}t||}t|}| t|tjj	 | 
t|| t|}zt| W n	 ty:   Y qw t||}t|}| 
t||dd   qd S r   )rangerM   HIGHEST_PROTOCOLdumpsloads
assertTrue
isinstancecollectionsabcIteratorrJ   listr0   r   )r   ZitorgrL   protodrK   r   r   r   rH   x   s   


zTestCase.check_picklec                 C       |  ttdttd d S N
   )rO   rP   rS   r\   r   r   r   r   test_iter_basic       zTestCase.test_iter_basicc                 C   s.   t td}t|}t|}| ||u  d S r`   )r\   rS   rP   rW   )r   rL   rK   Zit2r   r   r   test_iter_idempotency   s   zTestCase.test_iter_idempotencyc                 C   r_   r`   rR   rP   rS   r\   r   r   r   r   test_iter_for_loop   rc   zTestCase.test_iter_for_loopc                 C   sV   t d}g }t|D ]}t|D ]}t|D ]
}||||f qqq
| |t d S N   )rS   rP   rI   rJ   TRIPLETS)r   rL   r   r   jkr   r   r   test_iter_independence   s   zTestCase.test_iter_independencec                    s.   t d  fddt D }| |t d S )Nrh   c                    s2   g | ]}t  D ]}t  D ]}|||fqqqS r   )rP   .0r   rj   rk   rL   r   r   
<listcomp>   s    z<TestCase.test_nested_comprehensions_iter.<locals>.<listcomp>)rS   rP   rJ   ri   r   r   ro   r   test_nested_comprehensions_iter   s
   
z(TestCase.test_nested_comprehensions_iterc                    s*   t d  fdd D }| |t d S )Nrh   c                    s*   g | ]} D ]} D ]}|||fq
qqS r   r   rm   ro   r   r   rp      s   * z;TestCase.test_nested_comprehensions_for.<locals>.<listcomp>)rS   rJ   ri   r   r   ro   r   test_nested_comprehensions_for   s   z'TestCase.test_nested_comprehensions_forc                 C      |  tdttd d S r`   )rR   r&   r\   rS   r   r   r   r   test_iter_class_for      zTestCase.test_iter_class_forc                 C       |  ttdttd d S r`   )rO   rP   r&   r\   rS   r   r   r   r   test_iter_class_iter   rc   zTestCase.test_iter_class_iterc                 C   rs   r`   )rR   r1   r\   rS   r   r   r   r   test_seq_class_for   ru   zTestCase.test_seq_class_forc                 C   rv   r`   )rO   rP   r1   r\   rS   r   r   r   r   test_seq_class_iter   rc   zTestCase.test_seq_class_iterc                 C   s  t d}ttjd D ]}t|}t||f|}t|\}}d|_| t	|t	| | 
t|ttd t| t||f|}t|\}}d|_| t	|t	| | 
t|ttdd tddD ]}t| qkt||f|}t|\}}d|_| t	|t	| | 
t|ttdd | tt| t||f|}t|\}}d|_| t|tjj | 
t|g  qd S )N   r      )r1   rS   rM   rT   rP   rU   rV   r   ZassertIstyperJ   r\   r0   assertRaisesr   rW   rX   rY   rZ   r[   )r   origr]   Zitorigr^   rK   rL   r   r   r   r   #test_mutating_seq_class_iter_pickle   s8   
z,TestCase.test_mutating_seq_class_iter_picklec                 C   sl   t d}t|}t|}|D ]}t| qd|_| t|g  | t|ddg | t|g d d S )Nrz   r{      )r   r   r	   rh      rz   r   )r1   rP   r0   r   rJ   r\   )r   aZexhitZempitxr   r   r   &test_mutating_seq_class_exhausted_iter   s   
z/TestCase.test_mutating_seq_class_exhausted_iterc                    sp  t j ttdd fdd	}t ftdftdfddd dfg}znt|d	}| 	|d
d	 df | 	|g dd	 g ff | 	|dd t
tdtg ff |D ]}| 	|| d	 df q[W  D ] \}}tt  |= W d    n1 sw   Y  | |< qod S  D ] \}}tt  |= W d    n1 sw   Y  | |< qw )N)rP   reversedc                    sH   |d u rt |nt ||}G dd d} | = |   || |< | S )Nc                   @   r   )zKTestCase.test_reduce_mutating_builtins_iter.<locals>.run.<locals>.CustomStrc                 S      || _ || _d S r   )nameiterator)r   r   r   r   r   r   r      r   zTTestCase.test_reduce_mutating_builtins_iter.<locals>.run.<locals>.CustomStr.__init__c                 S   r*   r   )hashr   r   r   r   r   __hash__   r)   zTTestCase.test_reduce_mutating_builtins_iter.<locals>.run.<locals>.CustomStr.__hash__c                 S   s   t | j || jkS r   )r\   r   r   )r   otherr   r   r   __eq__  s   

zRTestCase.test_reduce_mutating_builtins_iter.<locals>.run.<locals>.CustomStr.__eq__N)r"   r#   r$   r   r   r   r   r   r   r   	CustomStr       r   )rP   
__reduce__)builtin_nameitemsentinelrK   r   Zbuiltins_dictr~   r   r   run   s
   z8TestCase.test_reduce_mutating_builtins_iter.<locals>.run   )r   r	   rh   c                   S   rD   r   r   r   r   r   r   <lambda>  s    z=TestCase.test_reduce_mutating_builtins_iter.<locals>.<lambda>r   rP   Zxyz) r   r   )r   r   )builtins__dict__rP   r   rC   bytes	bytearray	functoolspartialrJ   r\   rS   items
contextlibsuppressKeyError)r   r   typesZrun_itercasekeyfuncr   r   r   "test_reduce_mutating_builtins_iter   s>   



z+TestCase.test_reduce_mutating_builtins_iterc                 C   s$   G dd dt }| tt|  d S )Nc                   @   r8   )z5TestCase.test_new_style_iter_class.<locals>.IterClassc                 S   r   r   r   r   r   r   r   r   :  r    z>TestCase.test_new_style_iter_class.<locals>.IterClass.__iter__NrB   r   r   r   r   	IterClass9  r<   r   )objectr}   	TypeErrorrP   )r   r   r   r   r   test_new_style_iter_class8  s   z"TestCase.test_new_style_iter_classc                 C   s2   G dd d}| j t| dttddd d S )Nc                   @   r%   )z&TestCase.test_iter_callable.<locals>.Cc                 S   s
   d| _ d S r   r.   r   r   r   r   r   A  r)   z/TestCase.test_iter_callable.<locals>.C.__init__c                 S   s    | j }|d | _ |dkrt|S )Nr   d   )r   r2   r/   r   r   r   __call__C  s
   
z/TestCase.test_iter_callable.<locals>.C.__call__N)r"   r#   r$   r   r   r   r   r   r   C@  r,   r   ra   FrM   rO   rP   r\   rS   )r   r   r   r   r   test_iter_callable?  s   $	zTestCase.test_iter_callablec                 C   s0   dgfdd}| j t|dttddd d S )Nr   c                 S   s   | d }|d | d< |S Nr   r   r   stater   r   r   r   spamM  s   z)TestCase.test_iter_function.<locals>.spamra   Fr   r   r   r   r   r   r   test_iter_functionL  s   "zTestCase.test_iter_functionc                 C   s0   dgfdd}| j t|dttddd d S )Nr   c                 S   s$   | d }|dkr
t |d | d< |S )Nr   ra   r   rF   r   r   r   r   r   U  s
   z.TestCase.test_iter_function_stop.<locals>.spam   ra   Fr   r   r   r   r   r   test_iter_function_stopT  s   "z TestCase.test_iter_function_stopc                    sn   d ddd  fddd_ t_| t tj W d    d S 1 s0w   Y  d S )Nr   r	   c                 S   s   t |  dS )z2Exhaust an iterator without raising StopIteration.N)r\   )r   r   r   r   exhaustd  s   zLTestCase.test_iter_function_concealing_reentrant_exhaustion.<locals>.exhaustc                      s   j rS d_ j  S )NT)is_recursive_callr   r   ZHAS_MOREZNO_MOREr   r   r   r   r   h  s
   
zITestCase.test_iter_function_concealing_reentrant_exhaustion.<locals>.spamF)r   rP   r   r}   r   r0   r   r   r   r   2test_iter_function_concealing_reentrant_exhaustion]  s   	"z;TestCase.test_iter_function_concealing_reentrant_exhaustionc              	   C   sh   dgfdd}g }zt |dD ]}|| qW n ty,   | |ttd Y d S w | d d S )Nr   c                 S   s$   | d }|d | d< |dkrt |S )Nr   r   ra   )RuntimeErrorr   r   r   r   r   x  s
   z.TestCase.test_exception_function.<locals>.spamr   ra   should have raised RuntimeError)rP   rI   r   rJ   r\   rS   fail)r   r   r   r   r   r   r   test_exception_functionw  s   z TestCase.test_exception_functionc              	   C   sh   G dd dt }g }z|dD ]}|| qW n ty,   | |ttd Y d S w | d d S )Nc                   @   r8   )z9TestCase.test_exception_sequence.<locals>.MySequenceClassc                 S      |dkrt t| |S r`   )r   r1   r3   r/   r   r   r   r3        zETestCase.test_exception_sequence.<locals>.MySequenceClass.__getitem__Nr;   r   r   r   r   MySequenceClass  r<   r   r   ra   r   )r1   rI   r   rJ   r\   rS   r   )r   r   r   r   r   r   r   test_exception_sequence  s   z TestCase.test_exception_sequencec                 C   s0   G dd dt }| j|dttddd d S )Nc                   @   r8   )z4TestCase.test_stop_sequence.<locals>.MySequenceClassc                 S   r   r`   )r   r1   r3   r/   r   r   r   r3     r   z@TestCase.test_stop_sequence.<locals>.MySequenceClass.__getitem__Nr;   r   r   r   r   r     r<   r   r   ra   Fr   )r1   rR   r\   rS   )r   r   r   r   r   test_stop_sequence  s    zTestCase.test_stop_sequencec                 C   r_   )Ni'  re   r   r   r   r   test_iter_big_range  rc   zTestCase.test_iter_big_rangec                 C   s   |  tg g  d S r   rR   rP   r   r   r   r   test_iter_empty  s   zTestCase.test_iter_emptyc                 C   s   |  tdttd d S )N)
r   r   r	   rh   r   rz   r   r{   r   	   ra   )rR   rP   r\   rS   r   r   r   r   test_iter_tuple  ru   zTestCase.test_iter_tuplec                 C   r_   r`   re   r   r   r   r   test_iter_range  rc   zTestCase.test_iter_rangec                 C   s   |  tdg d d S NZabcde)r   bcr^   er   r   r   r   r   test_iter_string  s   zTestCase.test_iter_stringc                 C   s2   i }t dD ]}d ||< q| |t|  d S r`   )rS   rR   r\   keys)r   dictr   r   r   r   test_iter_dict  s   
zTestCase.test_iter_dictc                 C   s   t tddd}ztdD ]	}|d|  qW |  n|  w t tddd}z)| j|g ddd	 | j|g dd	 W |  ztt W d S  tyQ   Y d S w |  ztt W w  tye   Y w w )
Nwutf-8encodingrz   %d
rz0
1
2
3
4
Fr   )openr   rS   writecloserR   r   OSError)r   fr   r   r   r   test_iter_file  s,   zTestCase.test_iter_filec                 C   s\  |  ttdttd |  ttdg  |  tdg  dddd}|  t|t|  | ttt | ttd ttd	d
d}ztdD ]	}|	d|  qLW |
  n|
  w ttdd
d}z1|  t|g d |dd |  t|g d W |
  ztt W d S  ty   Y d S w |
  ztt W w  ty   Y w w )Nrz   r   r   r   r	   rh   onetwothree*   r   r   r   r   r   r   )rJ   r\   r1   rS   r   r}   r   r   r   r   r   seekr   r   r   r^   r   r   r   r   r   test_builtin_list  s@   
zTestCase.test_builtin_listc                 C   sl  |  ttdd |  ttdd |  tg d |  tdd |  tdd ddd	d
}|  t|t|  | ttt | ttd ttddd}zt	dD ]	}|
d|  qXW |  n|  w ttddd}z-|  t|d |dd |  t|d W |  ztt W d S  ty   Y d S w |  ztt W w  ty   Y w w )Nrz   r   r   r	   rh   r   r   r   rZ   r   r   r   r   r	   rh   r   r   r   r   r   r   r   r   )rJ   tupler1   r   r}   r   r\   r   r   rS   r   r   r   r   r   r   r   r   r   test_builtin_tuple  sD   
zTestCase.test_builtin_tuplec                 C   s<  |  ttd tdttdd |  ttd tdg  |  ttd dg  |  ttd dg d dddd	}|  ttd |t|  | ttd t | ttd d
 G dd d}|d}|d}G dd d}|||gd  }|  ttdd ||gd  |  ttdd t||gd  d S )Nrz   r   r   r   rZ   r   r	   rh   r   r   c                   @   r%   )z-TestCase.test_builtin_filter.<locals>.Booleanc                 S   r'   r   truth)r   r   r   r   r   r     r)   z6TestCase.test_builtin_filter.<locals>.Boolean.__init__c                 S   s   | j S r   r   r   r   r   r   __bool__  s   z6TestCase.test_builtin_filter.<locals>.Boolean.__bool__N)r"   r#   r$   r   r   r   r   r   r   Boolean  r,   r   TFc                   @   r%   )z)TestCase.test_builtin_filter.<locals>.Seqc                 W   r'   r   vals)r   argsr   r   r   r   %  r)   z2TestCase.test_builtin_filter.<locals>.Seq.__init__c                 S   s   G dd d}|| j S )Nc                   @   r   )zCTestCase.test_builtin_filter.<locals>.Seq.__iter__.<locals>.SeqIterc                 S   r   r   )r   r   )r   r   r   r   r   r   )  r   zLTestCase.test_builtin_filter.<locals>.Seq.__iter__.<locals>.SeqIter.__init__c                 S   r   r   r   r   r   r   r   r   ,  r    zLTestCase.test_builtin_filter.<locals>.Seq.__iter__.<locals>.SeqIter.__iter__c                 S   s,   | j }|d | _ |t| jk r| j| S tr   )r   lenr   r   r/   r   r   r   r   .  s
   

zLTestCase.test_builtin_filter.<locals>.Seq.__iter__.<locals>.SeqIter.__next__Nr"   r#   r$   r   r   r   r   r   r   r   SeqIter(  r   r   r   )r   r   r   r   r   r   '  s   
z2TestCase.test_builtin_filter.<locals>.Seq.__iter__Nr+   r   r   r   r   Seq$  r,   r      c                 S      |  S r   r   r   r   r   r   r   8      z.TestCase.test_builtin_filter.<locals>.<lambda>c                 S   r   r   r   r   r   r   r   r   9  r   )	rJ   r\   filterr1   rS   r   r}   r   rP   )r   r^   r   ZbTrueZbFalser   rL   r   r   r   test_builtin_filter  s"    (zTestCase.test_builtin_filterc                 C   sz  |  ttdd |  ttdd |  tddd |  tddd dddd	}|  t|d
 |  t|d |  t| d |  tt| d ttddd}z|d |d |d W |	  n|	  w ttddd}z-|  t|d |
dd |  t|d W |	  ztt W d S  ty   Y d S w |	  ztt W w  ty   Y w w )Nrz   r   r   r   r   r	   rh   r   r   r   r   r   r   zmedium line
zxtra large line
zitty-bitty line
r   )rJ   maxr1   minvaluesrP   r   r   r   r   r   r   r   )r   r^   r   r   r   r   test_builtin_max_min<  s@   

zTestCase.test_builtin_max_minc                    sL  |  ttdd tdttdd dddd |  tt fd	d t   t   fd
dtdD }ttddd}ztdD ]}|	d| d  qKW |
  n|
  w ttddd}z(|  ttt|ttddd W |
  ztt W d S  ty   Y d S w |
  ztt W w  ty   Y w w )Nc                 S   s   | d S r   r   r   r   r   r   r   ]      z+TestCase.test_builtin_map.<locals>.<lambda>rz   r   r   r	   rh   r   c                 S   s   | ||  fS r   r   )rk   r^   r   r   r   r   a  s    c                    s>   g | ]}|t  k r| pd ||t  k r| pd fqS r   )r   rn   r   r^   Zdkeysr   r   rp   d  s    z-TestCase.test_builtin_map.<locals>.<listcomp>r   r   r   ra   Zxy
r      )rJ   r\   mapr1   rS   r   r   r   r   r   r   r   r   r   )r   expectedr   r   r   r
  r   test_builtin_map\  s@   
$zTestCase.test_builtin_mapc                 C   s  |  tt g  |  ttg  g  |  ttddg ddg | ttd  | tttdd | tttdt |  tttdg d |  tttdg d d	d
dd}|  t| tt||	  G dd d}t
tddd}z|d W |  n|  w t
tddd}z'|  tt|d||dg d W |  ztt W n ty   Y nw |  ztt W w  ty   Y w w |  tttddd tdD  G dd d}G dd d|}G dd d|}dd  }|  t| d |  t| d! |  || |td |  || |td |  || |td d"d tdD }| | | fD ]}	| | | fD ]}
|  ||	|
| qSqId S )#Nr   r	   ab)r   r   )r	   r   ra   r   rh   )r   )r   )r	   r   r	   r   c                   @   r   )z+TestCase.test_builtin_zip.<locals>.IntsFromc                 S   r'   r   r.   )r   startr   r   r   r     r)   z4TestCase.test_builtin_zip.<locals>.IntsFrom.__init__c                 S   r   r   r   r   r   r   r   r     r    z4TestCase.test_builtin_zip.<locals>.IntsFrom.__iter__c                 S   s   | j }|d | _ |S r   r.   r/   r   r   r   r     s   
z4TestCase.test_builtin_zip.<locals>.IntsFrom.__next__Nr   r   r   r   r   IntsFrom  s    r  r   r   r   z	a
bbb
cc
r   r   ))r   a
r  )r   zbbb
i)r	   zcc
irz   c                 S   s   g | ]}|fqS r   r   r	  r   r   r   rp     s    z-TestCase.test_builtin_zip.<locals>.<listcomp>c                   @   r8   )z.TestCase.test_builtin_zip.<locals>.NoGuessLen5c                 S   s   |dkrt |S Nrz   )r2   r/   r   r   r   r3     s   z:TestCase.test_builtin_zip.<locals>.NoGuessLen5.__getitem__Nr;   r   r   r   r   NoGuessLen5  r<   r  c                   @   r8   )z-TestCase.test_builtin_zip.<locals>.Guess3Len5c                 S   rD   rg   r   r   r   r   r   rE     r    z5TestCase.test_builtin_zip.<locals>.Guess3Len5.__len__Nr"   r#   r$   rE   r   r   r   r   
Guess3Len5  r<   r  c                   @   r8   )z.TestCase.test_builtin_zip.<locals>.Guess30Len5c                 S   rD   )N   r   r   r   r   r   rE     r    z6TestCase.test_builtin_zip.<locals>.Guess30Len5.__len__Nr  r   r   r   r   Guess30Len5  r<   r  c                  W   s   t t|  S r   )r\   zip)r   r   r   r   lzip  s   z'TestCase.test_builtin_zip.<locals>.lzipr  c                 S   s   g | ]}||fqS r   r   r	  r   r   r   rp     s    )rJ   r\   r  r}   r   rS   r&   r1   r   r  r   r   r   r   r   r   r   )r   r^   r  r   r  r  r  r  r  r   yr   r   r   test_builtin_zipz  sh   "&zTestCase.test_builtin_zipc                 C   s   G dd d}t tddd}z|d W |  n|  w t tddd}z$d||}| |d	 W |  ztt W d S  tyJ   Y d S w |  ztt W w  ty^   Y w w )
Nc                   @   r   )z4TestCase.test_unicode_join_endcase.<locals>.OhPhooeyc                 S   s   t || _d| _d S r   )rP   rK   r   )r   rL   r   r   r   r     s   

z=TestCase.test_unicode_join_endcase.<locals>.OhPhooey.__init__c                 S   r   r   r   r   r   r   r   r     r    z=TestCase.test_unicode_join_endcase.<locals>.OhPhooey.__iter__c                 S   s&   | j }|d | _ |dkrdS t| jS )Nr   r	   zfooled you!)r   r0   rK   r/   r   r   r   r     s
   

z=TestCase.test_unicode_join_endcase.<locals>.OhPhooey.__next__Nr   r   r   r   r   OhPhooey  s    r!  r   r   r   a
b
c
r   z - za
 - b
 - fooled you! - c
)r   r   r   r   joinrJ   r   r   )r   r!  r   Zgotr   r   r   test_unicode_join_endcase  s*   z"TestCase.test_unicode_join_endcasec                 C   st  t dtdfD ]%}tdD ]}| || qdddddg ddid|f	D ]}| || q$q| tttdg | ttdg | tttt	g | ttt	g | t	tttg | t	ttg | 
tdd	  | 
td
d	  | 
tdd	  ddddd}|D ]}| || | ||  q| D ]}| ||  | || q| D ]\}}| ||f|  | ||f|  qttddd}z|d W |  n|  w ttddd}z7dD ]}|dd | || |dd | |d | qW |  ztt W d S  ty$   Y d S w |  ztt W w  ty9   Y w w )Nrz   rZ   r  g(\5E@)rh   r   r   y      @      (c                   S   s   ddv S )Nrh      r   r   r   r   r   r     r  z-TestCase.test_in_and_not_in.<locals>.<lambda>c                   S   s   dt vS rg   )r  r   r   r   r   r     r  c                   S   s
   dt  v S rg   )r?   r   r   r   r   r     s   
 r	   rh                  @r   r   r                 ?r   r   r   r"  r   r   r  )r&   r1   rS   ZassertInZassertNotInr   r-   rP   r5   r   r}   r   rA   r  r   r   r   r   r   r   r   r   )r   Zsc5r   r^   rk   vr   chunkr   r   r   test_in_and_not_in  sb   zTestCase.test_in_and_not_inc                 C   s  ddl m} | |g ddd | |ddd | |ddd | |ddd | t|d	d
 | t||| ddddd}|D ]}| |||d
 qE| || dd | || dd
 | || dd ttddd}z|d W |	  n|	  w ttddd}z/dD ]\}}|
dd | |||d | qW |	  ztt W d S  ty   Y d S w |	  ztt W w  ty   Y w w )Nr   )countOfr   r	   r	   rh   r	   rz   r	   rh   12232526r   r   r&  r'  r(  r   r   r   za
b
c
b
r   ))r   r   )r   r	   )r   r   )r^   r   r  )operatorr,  rJ   r}   r   r  r   r   r   r   r   r   r   )r   r,  r^   rk   r   Zlettercountr   r   r   test_countOf$  sF   zTestCase.test_countOfc                 C   s  ddl m} | |g ddd | |ddd | |ddd | |ddd | t|dd | t|dd | |d	d
d | |d	dd | t|d	d | t|dd | t||| | t|t d tt	ddd}z|
d W |  n|  w tt	ddd}z<t|}| ||dd | ||dd | ||dd | t||d W |  ztt	 W n ty   Y nw |  ztt	 W w  ty   Y w w td}tdD ]}| |||| q| t||d d S )Nr   )indexOfr-  r   r	   rh   rz   r   r.  r/  5r0  r   r   r   r   z
a
b
c
d
e
r   zb
zd
ze
r  r  )r1  r4  rJ   r}   
ValueErrorr   rA   r?   r   r   r   r   rP   r   r   r&   rS   )r   r4  r   ZfiterZiclassr   r   r   r   test_indexOfG  sP   zTestCase.test_indexOfc                    s  t tddd}zs| t|jd  | t|jd |ddg |d |dd i |i  G d	d
 d
 G  fddd}||dd |  t tdd}dd tddD }| t|| W |  zt	t W d S  t
yz   Y d S w |  zt	t W w  t
y   Y w w )Nr   r   r   r   r   r   )r   r   z5
c                   @   r   )z*TestCase.test_writelines.<locals>.Iteratorc                 S   s   || _ || _| j | _d S r   )r  finishr   r   r  r8  r   r   r   r     s   z3TestCase.test_writelines.<locals>.Iterator.__init__c                 S   s0   | j | jkrtt| j d }|  j d7  _ |S )Nr  r   )r   r8  r   str)r   resultr   r   r   r     s
   z3TestCase.test_writelines.<locals>.Iterator.__next__c                 S   r   r   r   r   r   r   r   r     r    z3TestCase.test_writelines.<locals>.Iterator.__iter__Nr!   r   r   r   r   r[   ~  s    r[   c                           e Zd Zdd Z fddZdS )z*TestCase.test_writelines.<locals>.Whateverc                 S   r   r   r  r8  r9  r   r   r   r     r   z3TestCase.test_writelines.<locals>.Whatever.__init__c                    s    | j | jS r   r=  r   r[   r   r   r     s   z3TestCase.test_writelines.<locals>.Whatever.__iter__Nr+   r   r>  r   r   Whatever  s    r?  r   i  c                 S   s   g | ]}t |d  qS )r  )r:  r	  r   r   r   rp     s    z,TestCase.test_writelines.<locals>.<listcomp>r   )r   r   r}   r   
writelinesr   rS   rJ   r\   r   r   )r   r   r?  r  r   r>  r   test_writelinesq  s6   

zTestCase.test_writelinesc                 C   s  d\}}|  ||fd td\}}}|  |||fd ztd\}}W n	 ty-   Y nw | d z	td\}}}W n	 tyE   Y nw | d zt\}}}W n	 ty[   Y nw | d dddd \}}}|  |||fd	 ttd
dd}d}z|D ]}|	| qW |
  n|
  w ttddd}z#|\}}}|  |||f| W |
  ztt W n ty   Y nw |
  ztt W w  ty   Y w w tdddi\}}\}|  |||fd d S )Nr  rh   r
   zshould have raised ValueErrorr	   zshould have raised TypeErrorr   r   )r   r   r   r   r   r   )r  zbb
zccc
r      )r   r   r   )rJ   r&   r6  r   r   r   r  r   r   r   r   r   r   )r   r   r   r   r   linesliner   r   r   test_unpack_iter  sb   



zTestCase.test_unpack_iterc                 C   s   G dd dt }| }| |jd ~| |jd | | | g}| |jd zt|\}}W n	 ty:   Y nw ~| |jd d S )Nc                   @   s    e Zd ZdZdd Zdd ZdS )z.TestCase.test_ref_counting_behavior.<locals>.Cr   c                 S   s   |  j d7  _ t| S r   )r2  r   __new__)clsr   r   r   rF    s   
z6TestCase.test_ref_counting_behavior.<locals>.C.__new__c                 S   s&   | j }|jdks
J | jd8  _d S r   )	__class__r2  )r   rG  r   r   r   __del__  s   z6TestCase.test_ref_counting_behavior.<locals>.C.__del__N)r"   r#   r$   r2  rF  rI  r   r   r   r   r     s    r   r   r   rh   )r   rJ   r2  rP   r6  )r   r   r   lr   r   r   r   r   test_ref_counting_behavior  s   	z#TestCase.test_ref_counting_behaviorc                 C   sP   t td}t|}| t |t td |tdd | t |g  d S Nrz   ra   )r\   rS   rP   rJ   extendr   r   r   r   r   r   test_sinkstate_list  s
   zTestCase.test_sinkstate_listc                 C   s8   d}t |}| t|ttd | t|g  d S )Nr   rz   rP   rJ   r\   rS   rN  r   r   r   test_sinkstate_tuple   s   zTestCase.test_sinkstate_tuplec                 C   s4   d}t |}| t|g d | t|g  d S r   )rP   rJ   r\   rN  r   r   r   test_sinkstate_string  s   zTestCase.test_sinkstate_stringc                 C   sB   t d}t|}| t|ttd d|_| t|g  d S rL  )r1   rP   rJ   r\   rS   r   rN  r   r   r   test_sinkstate_sequence  s
   z TestCase.test_sinkstate_sequencec                 C   sD   dgfdd}t |d}| t|ttd | t|g  d S )Nr   c                 S   s(   | d }|d | d< |dkrt d|S )Nr   r   ra   zshouldn't have gotten this far)AssertionErrorr   r   r   r   r     s
   z.TestCase.test_sinkstate_callable.<locals>.spamrz   rP  )r   r   r   r   r   r   test_sinkstate_callable  s   
z TestCase.test_sinkstate_callablec                 C   sb   dddddd}t || | | fD ]}t |}| tt|d | t|g  qd S )Nr   r	   r   r   rh   )r   r	   r   r   rh   rz   )rP   r   r   r  rJ   r   r\   rN  r   r   r   test_sinkstate_dict   s    zTestCase.test_sinkstate_dictc                 C   s:   dd }| }|  t|ttd |  t|g  d S )Nc                  s       t dD ]} | V  qd S r  rS   r.   r   r   r   gen*     z*TestCase.test_sinkstate_yield.<locals>.genrz   )rJ   r\   rS   )r   rY  r   r   r   r   test_sinkstate_yield)  s   zTestCase.test_sinkstate_yieldc                 C   s<   t d}t|}| t|tt d | t|g  d S r  )rS   rP   rJ   r\   rN  r   r   r   test_sinkstate_range1  s   zTestCase.test_sinkstate_rangec                 C   sN   t d}t|}t|}| t|ttt dt d | t|g  d S r  )rS   	enumeraterP   rJ   r\   r  )r   r   r   r   r   r   r   test_sinkstate_enumerate7  s
   "z!TestCase.test_sinkstate_enumeratec                    s<   G  fdddt  z	  D ]}qW d S  ty   Y d S w )Nc                       r<  )z'TestCase.test_3720.<locals>.BadIteratorc                 S   r   r   r   r   r   r   r   r   A  r    z0TestCase.test_3720.<locals>.BadIterator.__iter__c                    s    ` dS r   )r   r   BadIteratorr   r   r   C  s   z0TestCase.test_3720.<locals>.BadIterator.__next__N)r"   r#   r$   r   r   r   r_  r   r   r`  @  s    r`  )r   r   r/   r   r_  r   	test_3720>  s   
zTestCase.test_3720c                 C   sJ   dd }dgd }t dD ]}|d q||  | t|d d S )Nc                  s   rW  )N  rX  r.   r   r   r   rY  S  rZ  zITestCase.test_extending_list_with_iterator_does_not_segfault.<locals>.genr   rb     i  )rS   poprM  rJ   r   )r   rY  Zlstr   r   r   r   3test_extending_list_with_iterator_does_not_segfaultM  s   
z<TestCase.test_extending_list_with_iterator_does_not_segfaultc                 C   s   t t }|tjd  | t|tjd  | t|tjd  | t t| W d    n1 s7w   Y  | t t| W d    d S 1 sQw   Y  d S )Nr	   r   )	rP   r9   __setstate__sysmaxsizerJ   r0   r}   OverflowErrorr   rK   r   r   r   test_iter_overflow\  s   


"zTestCase.test_iter_overflowc                 C   s8   t t }|d | t|d | t|d d S )Nir   r   )rP   r9   rf  rJ   r0   rj  r   r   r   test_iter_neg_setstatej  s   

zTestCase.test_iter_neg_setstatec                 C   s   t | ttd d S )Nr  )r   rP   r1   r   r   r   r   test_free_after_iteratingp  s   z"TestCase.test_free_after_iteratingc                 C   s2   t tfD ]
}| tt|  q| ttt  d S r   )r=   r>   r}   r   rP   rA   r?   )r   typr   r   r   test_error_iters  s   zTestCase.test_error_iterN)T)?r"   r#   r$   rO   rR   rH   rb   rd   rf   rl   rq   rr   rt   rw   rx   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r$  r+  r3  r7  rA  rE  r   rK  rO  rQ  rR  rS  rU  rV  r[  r\  r^  ra  re  rk  rl  rm  ro  r   r   r   r   rG   _   s|    

	
$H		!- O*1#*55
	
rG   __main__)rg  ZunittestZtest.supportr   Ztest.support.os_helperr   r   r   r   r   rM   collections.abcrY   r   r   r   ri   r   r&   r-   r1   r5   r9   r=   r>   r?   rC   rG   r"   mainr   r   r   r   <module>   sB   	        "