
    w:i|                        d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZmZmZmZmZ d dlmZmZmZ  G d dej                  Z G d	 d
ej                  Zd Zedk    r ej        d           dS dS )    N)mkstemp)Markup)Context)
ExpressionSuite	UndefinedUndefinedError	UNDEFINED)BytesIO
IS_PYTHON2wrapped_bytesc                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4e5j6        d4k    rd5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdMS )NExpressionTestCasec                     t          d          }|                     |t          d                     |                     |t          d                     d S Nzx,yzy, x)r   assertEqualassertNotEqualselfexprs     W/var/www/html/trac/venv/lib/python3.11/site-packages/genshi/template/tests/test_eval.pytest_eqzExpressionTestCase.test_eq   sQ    %  z%00111D*V"4"455555    c                    t          d          }|                     t          |          t          t          d                               |                     t          |          t          t          d                               d S r   )r   r   hashr   r   s     r   	test_hashzExpressionTestCase.test_hash#   sm    %  dT*U*;*;%<%<===DJJZ-?-?(@(@AAAAAr   c                    t          d          }t                      }t          j        ||d           |                    d           t          j        |          }|                    i           du sJ |j        |j        k    sJ d S )N1 < 2   r   T)r   r   pickledumpseekloadevaluatecode)r   r   buf	unpickleds       r   test_picklezExpressionTestCase.test_pickle(   s    '""iiD#q!!!K$$	!!"%%----~******r   c                    |                      dt          d                              ddi                     |                      t          t          d                              i                      |                      dt          d                              ddi                     |                      d t          d                              dd i                     d S )Nbarfooid)r   r   r$   r,   r   s    r   test_name_lookupz#ExpressionTestCase.test_name_lookup1   s    
5 1 1 : :E5> J JKKKZ--66r::;;;
4 0 0 9 94- H HIIIz$//88$FFGGGGGr   c                     t          d          }|                     |                    i           t                     d S )Nr   )r   r   r$   r   r   s     r   test_builtinsz ExpressionTestCase.test_builtins7   s7    (##r**F33333r   c                    |                      dt          d                              i                      |                      dt          d                              i                      |                      d                    d          t          t	          d                                        i                      |                      dt          d                              i                      |                      dt          d                              i                      |                      dt          d                              i                      d S )	Nr+   z"foo"z	"""foo"""utf-8zb'foo'z	'''foo'''zu'foo'zr'foo')r   r   r$   encoder   r-   s    r   test_str_literalz#ExpressionTestCase.test_str_literal;   s.   
7 3 3 < <R @ @AAA
; 7 7 @ @ D DEEEw//#M($;$;<<EEbII	K 	K 	K
; 7 7 @ @ D DEEE
8 4 4 = =b A ABBB
8 4 4 = =b A ABBBBBr   c                    t          d          }|                     d|                    i                      t          d          }|                     d|                    i                      t          t          d                    }t          r+|                     d|                    i                      d S |                     d                    d          |                    i                      d S )Nu   u'þ'   þzb'\xc3\xbe'r2   )r   r   r$   r   r   r3   r   s     r   test_str_literal_non_asciiz-ExpressionTestCase.test_str_literal_non_asciiD   s    *%%b 1 1222)$$b 1 1222
 -7788 	GUDMM"$5$566666U\\'22DMM"4E4EFFFFFr   c                    |                      dt          d                              i                      t          r6|                      dt          d                              i                      |                      dt          d                              i                      t          r6|                      dt          d                              i                      |                      dt          d	                              i                      |                      dt          d
                              i                      d S )N*   4242LgzG?z.42   07   0xF20XF2)r   r   r$   r   r-   s    r   test_num_literalz#ExpressionTestCase.test_num_literalS   s!   Z--66r::;;; 	ARE!2!2!;!;B!?!?@@@j//88<<=== 	?Q
4 0 0 9 9" = =>>>z&11::2>>???z&11::2>>?????r   c                     |                      i t          d                              i                      |                      ddit          d                              ddi                     d S )Nz{}keyTz{'key': value}valuer   r   r$   r-   s    r   test_dict_literalz$ExpressionTestCase.test_dict_literal]   sy    Z--66r::;;;%#$455>>OO	Q 	Q 	Q 	Q 	Qr   c                 T   |                      g t          d                              i                      |                      g dt          d                              i                      |                      dgt          d                              ddi                     d S )Nz[]   r      z	[1, 2, 3]Tz[value]rD   rE   r-   s    r   test_list_literalz$ExpressionTestCase.test_list_literalb   s    Z--66r::;;;J{$;$;$D$DR$H$HIII$#I..77$HH	J 	J 	J 	J 	Jr   c                 N   |                      dt          d                              i                      |                      dt          d                              i                      |                      dt          d                              ddi                     d S )	N z()rH   z	(1, 2, 3))Tz(value,)rD   TrE   r-   s    r   test_tuple_literalz%ExpressionTestCase.test_tuple_literalh   s    Z--66r::;;;J{$;$;$D$DR$H$HIII#J//88'4II	K 	K 	K 	K 	Kr   c                     |                      dt          d                              i                      |                      dt          d                              ddi                     d S )NrI   z+1z+xxrE   r-   s    r   test_unaryop_posz#ExpressionTestCase.test_unaryop_posn   sd    Jt,,55b99:::Jt,,55sAh??@@@@@r   c                     |                      dt          d                              i                      |                      dt          d                              ddi                     d S )Nz-1z-xrP   rI   rE   r-   s    r   test_unaryop_negz#ExpressionTestCase.test_unaryop_negr   d    Z--66r::;;;Z--66Qx@@AAAAAr   c                     |                      dt          d                              i                      |                      dt          d                              ddi                     d S )NFznot Trueznot xrP   TrE   r-   s    r   test_unaryop_notz#ExpressionTestCase.test_unaryop_notv   sd    
: 6 6 ? ? C CDDD
7 3 3 < <c4[ I IJJJJJr   c                     |                      dt          d                              i                      |                      dt          d                              ddi                     d S )Nz~1z~xrP   rI   rE   r-   s    r   test_unaryop_invz#ExpressionTestCase.test_unaryop_invz   rU   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NrJ   z2 + 1zx + yr   rI   rP   yrE   r-   s    r   test_binop_addz!ExpressionTestCase.test_binop_add~   h    Jw//88<<===Jw//88qq9I9IJJKKKKKr   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NrI   2 - 1x - yr\   rE   r-   s    r   test_binop_subz!ExpressionTestCase.test_binop_sub   r_   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NrI   ra   rb   r   r\   rE   r-   s    r   rc   z!ExpressionTestCase.test_binop_sub   r_   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )N   z2 * 2zx * yr   r\   rE   r-   s    r   test_binop_mulz!ExpressionTestCase.test_binop_mul   r_   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )Nrf   z2 ** 2zx ** yr   r\   rE   r-   s    r   test_binop_powz!ExpressionTestCase.test_binop_pow   h    Jx0099"==>>>Jx0099:J:JKKLLLLLr   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )Nr   z4 / 2zx / yrf   r\   rE   r-   s    r   test_binop_divz!ExpressionTestCase.test_binop_div   r_   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NrI   z3 // 2zx // yrJ   r   r\   rE   r-   s    r   test_binop_floordivz&ExpressionTestCase.test_binop_floordiv   rj   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NrI   z3 % 2zx % yrJ   r   r\   rE   r-   s    r   test_binop_modz!ExpressionTestCase.test_binop_mod   r_   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )Nr   z1 & 0zx & yrI   r\   rE   r-   s    r   test_binop_andz!ExpressionTestCase.test_binop_and   r_   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NrI   z1 | 0zx | yr   r\   rE   r-   s    r   test_binop_orz ExpressionTestCase.test_binop_or   r_   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NrI   z1 ^ 0zx ^ yr   r\   rE   r-   s    r   test_binop_xorz!ExpressionTestCase.test_binop_xor   r_   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTz1 in (1, 2, 3)zx in yrI   rH   r\   rE   r-   s    r   test_binop_containsz&ExpressionTestCase.test_binop_contains   s    z*:;;DDRHHIIIz(33<<1CL>N >N  O  O 	P 	P 	P 	P 	Pr   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTz4 not in (1, 2, 3)z
x not in yrf   rH   r\   rE   r-   s    r   test_binop_not_containsz*ExpressionTestCase.test_binop_not_contains   s    z*>??HHLLMMMz,77@@qGPBR BR  S  S 	T 	T 	T 	T 	Tr   c                    |                      dt          d                              i                      |                      dt          d                              ddd                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTzTrue is Truezx is yr\   FzTrue is FalserE   r-   s    r   test_binop_isz ExpressionTestCase.test_binop_is   s    z.99BB2FFGGGz(33<<4d=S=STTUUU
? ; ; D DR H HIII
8 4 4 = =Du>U>U V VWWWWWr   c                    |                      dt          d                              i                      |                      dt          d                              ddd                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTzTrue is not Falsez
x is not yFr\   zTrue is not TruerE   r-   s    r   test_binop_is_notz$ExpressionTestCase.test_binop_is_not   s    z*=>>GGKKLLLz,77@@tGLBN BN  O  O 	P 	P 	P
+= > > G G K KLLL
< 8 8 A AHLCN CN !O !O 	P 	P 	P 	P 	Pr   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NFzTrue and Falsezx and yTr\   rE   r-   s    r   test_boolop_andz"ExpressionTestCase.test_boolop_and   s    
+; < < E Eb I IJJJ
9 5 5 > >TEJ@L @L !M !M 	N 	N 	N 	N 	Nr   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTzTrue or Falsezx or yFr\   rE   r-   s    r   test_boolop_orz!ExpressionTestCase.test_boolop_or   s    z/::CCBGGHHHz(33<<4CH>J >J  K  K 	L 	L 	L 	L 	Lr   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTz1 == 1zx == yrI   r\   rE   r-   s    r   test_compare_eqz"ExpressionTestCase.test_compare_eq   h    z(33<<R@@AAAz(33<<11=M=MNNOOOOOr   c                    |                      dt          d                              i                      |                      dt          d                              ddd                     t          j        dk     rq|                      dt          d                              i                      |                      dt          d                              ddd                     d S d S )	NFz1 != 1zx != yrI   r\   3z1 <> 1zx <> y)r   r   r$   sysversionr-   s    r   test_compare_nez"ExpressionTestCase.test_compare_ne   s    
8 4 4 = =b A ABBB
8 4 4 = =AA>N>N O OPPP;UJx$8$8$A$A"$E$EFFFUJx$8$8$A$APQBRBR$S$STTTTT r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTr   zx < yrI   r   r\   rE   r-   s    r   test_compare_ltz"ExpressionTestCase.test_compare_lt   h    z'22;;B??@@@z'22;;!!<L<LMMNNNNNr   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTz1 <= 1zx <= yrI   r\   rE   r-   s    r   test_compare_lez"ExpressionTestCase.test_compare_le   r   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTz2 > 1zx > yr   rI   r\   rE   r-   s    r   test_compare_gtz"ExpressionTestCase.test_compare_gt   r   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTz1 >= 1zx >= yrI   r\   rE   r-   s    r   test_compare_gez"ExpressionTestCase.test_compare_ge   r   r   c                     |                      dt          d                              i                      |                      dt          d                              ddd                     d S )NTz1 != 3 == 3zx != y == yrI   rJ   r\   rE   r-   s    r   test_compare_multiz%ExpressionTestCase.test_compare_multi   s    z-88AA"EEFFFz-88AAHICK CK  L  L 	M 	M 	M 	M 	Mr   c                 ~   |                      dt          d                              dd i                     ddi}|                      dt          d                              |                     ddt          d          ii}|                      dt          d                              |                     d S )	Nr9   zfoo()r+   c                      dS )Nr9   rM   rM   r   r   <lambda>z7ExpressionTestCase.test_call_function.<locals>.<lambda>   s    " r   r*   BARzfoo.upper()zlen(foo.bar))r   r   r$   ranger   datas     r   test_call_functionz%ExpressionTestCase.test_call_function   s    Z00995**:MNNOOOu~
= 9 9 B B4 H HIIIuRyy)*Z77@@FFGGGGGr   c                 z    |                      dt          d                              d dd                     d S )Nr9   z
foo(x=bar)c                     | S NrM   rP   s    r   r   z7ExpressionTestCase.test_call_keywords.<locals>.<lambda>   s    QR r   r+   r*   rE   r-   s    r   test_call_keywordsz%ExpressionTestCase.test_call_keywords   s\    Z55>>{{GI@K @K L L 	M 	M 	M 	M 	Mr   c                 |    |                      dt          d                              d dgd                     d S )Nr9   z	foo(*bar)c                     | S r   rM   r   s    r   r   z8ExpressionTestCase.test_call_star_args.<locals>.<lambda>   s    PQ r   r   rE   r-   s    r   test_call_star_argsz&ExpressionTestCase.test_call_star_args   s\    Z44==kkGId?L ?L M M 	N 	N 	N 	N 	Nr   c                     d }t          d          }|                     d|                    |ddid                     d S )Nc                     | S r   rM   r   s    r   r+   z4ExpressionTestCase.test_call_dstar_args.<locals>.foo   s    Hr   z
foo(**bar)r9   rP   r   r   r   r$   )r   r+   r   s      r   test_call_dstar_argsz'ExpressionTestCase.test_call_dstar_args   sR    	 	 	,''T]]3Ry+I+IJJKKKKKr   c                     dt          d          i}t          d          }|                     ddgt          |                    |                               d S )Nitems   zfilter(lambda x: x > 2, items)rJ   rf   )r   r   r   listr$   r   r   r   s      r   test_lambdazExpressionTestCase.test_lambda  sT    q":;;!QdmmD&9&9!:!:;;;;;r   c                     t           sd S dddgi}t          d          }|                     dgt          |                    |                               d S )Nr   rI   r   )r   rI   z#filter(lambda (x, y): x > y, items))r   r   r   r   r$   r   s      r   test_lambda_tuple_argz(ExpressionTestCase.test_lambda_tuple_arg  s^     	F&&)*?@@&4d(;(;#<#<=====r   c           
         t          d          }|                     ddg|                    dt          d          i                     t          d          }|                     g d|                    dt          d          i                     t          d          }|                     g d	|                    t          d          d
d                     t          d          }|                     g d|                    dt          d
          t          d          gi                     t          d          }|                     g d|                    ddgddgd                     d S )Nz[n for n in numbers if n < 2]r   rI   numbersr   z+[(i, n + 1) for i, n in enumerate(numbers)])r   rI   r   )r   rJ   )rJ   rf   )rf   r   z[offset + n for n in numbers]r   rJ   rf   r      r   r   offsetz&[n for group in groups for n in group]r   rI   r   rI   r   groupsrJ   z[(a, b) for a in x for b in y])x0y0)r   y1)x1r   )r   r   r   r   r   r   r\   r   r   r$   r   r   s     r   test_list_comprehensionz*ExpressionTestCase.test_list_comprehension  s   9::!Q	588/D!E!EFFFGHHAAA	588'<==	? 	? 	? 9::588q'I'IJJ	L 	L 	L BCC588U1XX2F'GHH	J 	J 	J :;;QQQdD\t'M'MNN	P 	P 	P 	P 	Pr   c                     ddddddg}t          d          }|                     dg|                    d|i                     d S )NarI   namerD   br   z&[i.name for i in items if i.value > 1]r   r   r   r   r   s      r   $test_list_comprehension_with_getattrz7ExpressionTestCase.test_list_comprehension_with_getattr"  sY    **S1,E,EFBCC#w.> ? ?@@@@@r   c                     ddddddg}t          d          }|                     dg|                    d|i                     d S )Nr   rI   r   r   r   z,[i['name'] for i in items if i['value'] > 1]r   r   r   s      r   $test_list_comprehension_with_getitemz7ExpressionTestCase.test_list_comprehension_with_getitem'  sY    **S1,E,EFHII#w.> ? ?@@@@@r   c           
         t          d          }|                     ddg|                    dt          d          i                     t          d          }|                     g d|                    dt          d          i                     t          d          }|                     g d	|                    t          d          d
d                     t          d          }|                     g d|                    dt          d
          t          d          gi                     t          d          }|                     g d|                    ddgddgd                     d S )Nz!list(n for n in numbers if n < 2)r   rI   r   r   z/list((i, n + 1) for i, n in enumerate(numbers))r   z!list(offset + n for n in numbers)r   r   r   z*list(n for group in groups for n in group)r   r   rJ   z"list((a, b) for a in x for b in y)r   r   r   r   r   r\   r   r   s     r   test_generator_expressionz,ExpressionTestCase.test_generator_expression,  s   =>>!Q	588/D!E!EFFFKLLAAA	588'<==	? 	? 	? =>>588q'I'IJJ	L 	L 	L FGG588U1XX2F'GHH	J 	J 	J >??QQQdD\t'M'MNN	P 	P 	P 	P 	Pr   c                     ddddddg}t          d          }|                     dg|                    d|i                     d S )Nr   rI   r   r   r   z*list(i.name for i in items if i.value > 1)r   r   r   s      r   &test_generator_expression_with_getattrz9ExpressionTestCase.test_generator_expression_with_getattr@  sY    **S1,E,EFFGG#w.> ? ?@@@@@r   c                     ddddddg}t          d          }|                     dg|                    d|i                     d S )Nr   rI   r   r   r   z0list(i['name'] for i in items if i['value'] > 1)r   r   r   s      r   &test_generator_expression_with_getitemz9ExpressionTestCase.test_generator_expression_with_getitemE  sY    **S1,E,EFLMM#w.> ? ?@@@@@r   )r   r   c                     t          d          }|                     d|                    ddi                     |                     d|                    ddi                     d S )Nz'T' if foo else 'F'Tr+   TFFr   r   s     r   test_conditional_expressionz.ExpressionTestCase.test_conditional_expressionK  sb    344DS$--">">???S$--"?"?@@@@@r   c                     t          d          }|                     ddg|                    dt          t	          d                    i                     d S )Nznumbers[0:2]r   rI   r   r   r   r   r$   r   r   r   s     r   
test_slicezExpressionTestCase.test_sliceP  sL    .))!Q	4a>>/J!K!KLLLLLr   c                     t          d          }|                    t          t          d                    ddd          }|                     ddg|           d S )Nznumbers[start:end]r   r   r   r   startendrI   r   r$   r   r   r   r   r   ress      r   test_slice_with_varsz'ExpressionTestCase.test_slice_with_varsT  sW    .//mmU1XX1MMNN!Q%%%%%r   c                     t          d          }|                    dt          t          d                    i          }|                     g d|           d S )Nz
numbers[:]r   r   r   rI   r   rJ   rf   r   r   s      r   test_slice_copyz"ExpressionTestCase.test_slice_copyY  sQ    ,''mmYU1XX788#.....r   c                     t          d          }|                    t          t          d                    dd          }|                     g d|           d S )Nznumbers[::stride]r   r   r   strider   r   rf   r   r   s      r   test_slice_stridez$ExpressionTestCase.test_slice_stride^  sU    -..mmU1XX!DDEEC(((((r   c                     t          d          }|                     dg|                    dt          t	          d                    i                     d S )Nznumbers[-1:]rf   r   r   r   r   s     r   test_slice_negative_startz,ExpressionTestCase.test_slice_negative_startc  sJ    .))!dmmYU1XX,GHHIIIIIr   c                     t          d          }|                    dt          t          d                    i          }|                     g d|           d S )Nznumbers[:-1]r   r   r   rI   r   rJ   r   r   s      r   test_slice_negative_endz*ExpressionTestCase.test_slice_negative_endg  sQ    .))mmYU1XX788s+++++r   c                     t          d          }|                    dt          t          d                    i          }|                     |d           d S )Nz
numbers[1]r   r   rI   r   r   s      r   test_slice_constantz&ExpressionTestCase.test_slice_constantl  sM    ,''mmYU1XX788a     r   c                     d }t          d          }|                    t          t          d                    |d          }|                     |d           d S )Nc                      dS Nr   rM   rM   r   r   fz-ExpressionTestCase.test_slice_call.<locals>.fr      1r   znumbers[f()]r   r   r   r   r   )r   r   r   r   s       r   test_slice_callz"ExpressionTestCase.test_slice_callq  s_    	 	 	.))mmU1XXQ??@@a     r   c                     t          d          }|                    t          t          d                    dd          }|                     |d           d S )Nz
numbers[v]r   r   r   vr   r   s      r   test_slice_namez"ExpressionTestCase.test_slice_namex  sP    ,''mmU1XXQ??@@a     r   c                      G d d          }t          d          }|                    t          t          d                     |            d          }|                     |d           d S )Nc                       e Zd Zd ZdS )<ExpressionTestCase.test_slice_attribute.<locals>.ValueHolderc                     d| _         d S NrJ   rD   r-   s    r   __init__zEExpressionTestCase.test_slice_attribute.<locals>.ValueHolder.__init__      


r   N__name__
__module____qualname__r  rM   r   r   ValueHolderr   ~  #            r   r  znumbers[obj.value]r   r   objrJ   r   )r   r  r   r   s       r   test_slice_attributez'ExpressionTestCase.test_slice_attribute}  s    	 	 	 	 	 	 	 	 .//mmU1XX{{}}MMNNa     r   c                     t          dddd          }|                    i           }t          |t                    sJ |                     d|j                   |j        t          u sJ d S )Nnothing
index.html2   lenientfilenamelinenolookup)r   r$   
isinstancer   r   _name_ownerr
   )r   r   retvals      r   test_access_undefinedz(ExpressionTestCase.test_access_undefined  sw    )l2!*, , ,r""&),,,,,FL111}	))))))r   c                     G d dt                     } |            }t          dddd          }|                    d|i          }t          |t                    sJ |                     d	|j                   |j        |u sJ d S )
Nc                       e Zd Zd ZdS )<ExpressionTestCase.test_getattr_undefined.<locals>.Somethingc                     dS Nz<Something>rM   r-   s    r   __repr__zEExpressionTestCase.test_getattr_undefined.<locals>.Something.__repr__      $}r   Nr  r  r  r   rM   r   r   	Somethingr    #        % % % % %r   r#  something.nilr  r  r  r  	somethingnilobjectr   r$   r  r   r   r  r  r   r#  r&  r   r  s        r   test_getattr_undefinedz)ExpressionTestCase.test_getattr_undefined  s    	% 	% 	% 	% 	% 	% 	% 	% IKK	/L!*, , ,Y788&),,,,,---}	))))))r   c                     G d dt                     }|                     t          t          d          j        d |            i           |                     t
          t          d          j        d |            i           d S )Nc                   F    e Zd Zd Z ee          Zd Z ee          ZdS )<ExpressionTestCase.test_getattr_exception.<locals>.Somethingc                     t           r   NotImplementedErrorr-   s    r   prop_azCExpressionTestCase.test_getattr_exception.<locals>.Something.prop_a      ))r   c                     t           r   )AttributeErrorr-   s    r   prop_bzCExpressionTestCase.test_getattr_exception.<locals>.Something.prop_b  s    $$r   N)r  r  r  r2  propertyr6  rM   r   r   r#  r.    sJ        * * *Xf%%F% % %Xf%%FFFr   r#  zs.prop_aszs.prop_b)r)  assertRaisesr1  r   r$   r5  r   r#  s     r   test_getattr_exceptionz)ExpressionTestCase.test_getattr_exception  s    	& 	& 	& 	& 	& 	& 	& 	& 	-$Z009C;M	O 	O 	O.$Z009C;M	O 	O 	O 	O 	Or   c                     G d dt                     } |            }t          dddd          }|                    d|i          }t          |t                    sJ |                     d	|j                   |j        |u sJ d S )
Nc                       e Zd Zd ZdS )CExpressionTestCase.test_getitem_undefined_string.<locals>.Somethingc                     dS r  rM   r-   s    r   r   zLExpressionTestCase.test_getitem_undefined_string.<locals>.Something.__repr__  r!  r   Nr"  rM   r   r   r#  r>    r$  r   r#  something["nil"]r  r  r  r  r&  r'  r(  r*  s        r   test_getitem_undefined_stringz0ExpressionTestCase.test_getitem_undefined_string  s    	% 	% 	% 	% 	% 	% 	% 	% IKK	,|B!*, , ,Y788&),,,,,---}	))))))r   c                      G d dt                     }|                     t          t          d          j        d |            i           d S )Nc                       e Zd Zd ZdS )<ExpressionTestCase.test_getitem_exception.<locals>.Somethingc                     t           r   r0  )r   rC   s     r   __getitem__zHExpressionTestCase.test_getitem_exception.<locals>.Something.__getitem__  r3  r   N)r  r  r  rF  rM   r   r   r#  rD    s#        * * * * *r   r#  zs["foo"]r8  )r)  r9  r1  r   r$   r:  s     r   test_getitem_exceptionz)ExpressionTestCase.test_getitem_exception  ss    	* 	* 	* 	* 	* 	* 	* 	* 	-$Z009C;M	O 	O 	O 	O 	Or   c                 z   t          dddd          }	 |                    i            |                     d           d S # t          $ r}t	          j                    \  }}}|j        }g }|j        r#|j        }|                    |           |j        #|                     dt          |                     |                     d|d	         j
        j        j                   |                     d|d	         j
        j        j                   |                     d|d	         j                   Y d }~d S d }~ww xY w)
Nr  r  r  strictr  Expected UndefinedErrorz"nothing" not definedz<Expression 'nothing'>)r   r$   failr	   r   exc_infotb_nextappendr   strtb_framef_codeco_nameco_filename	tb_lineno)r   r   eexc_type	exc_valueexc_tracebackframeframess           r   test_error_access_undefinedz.ExpressionTestCase.test_error_access_undefined  se   )l2!)+ + +	7MM"II/00000 	7 	7 	714.Hi!)EF- %e$$$ - % 4c!ff===5#BZ07?A A A\#BZ07CE E ER!5666666666	7s   *A 
D:C$D55D:c                 b    G d dt                     }t          dddd          }	 |                    d |            i           |                     d	           d S # t          $ r}|                     d
t          |                     t          j                    \  }}}d}|j	        }|j	        r&|j	        }|j
        j        }	|	j        |k    rn|j	        &|                     d           |                     d|	j                   |                     d|j                   Y d }~d S d }~ww xY w)Nc                       e Zd Zd ZdS )BExpressionTestCase.test_error_getattr_undefined.<locals>.Somethingc                     dS r  rM   r-   s    r   r   zKExpressionTestCase.test_error_getattr_undefined.<locals>.Something.__repr__  r!  r   Nr"  rM   r   r   r#  r_    r$  r   r#  r%  r  r  rI  r  r&  rJ  %<Something> has no member named "nil"z<Expression 'something.nil'>'never found the frame I was looking forr)  r   r$   rL  r	   r   rP  r   rM  rN  rQ  rR  rS  rT  rU  
r   r#  r   rV  rW  rX  rY  search_stringrZ  r%   s
             r   test_error_getattr_undefinedz/ExpressionTestCase.test_error_getattr_undefined  sr   	% 	% 	% 	% 	% 	% 	% 	% /L!)+ + +	2MM;		4555II/00000 	2 	2 	2Dc!ffMMM14.Hi:M!)E- E~,<=00	 - E 		CDDD\4+;<<<R111111111	2   4A 
D.(B;D))D.c                 b    G d dt                     }t          dddd          }	 |                    d |            i           |                     d	           d S # t          $ r}|                     d
t          |                     t          j                    \  }}}d}|j	        }|j	        r&|j	        }|j
        j        }	|	j        |k    rn|j	        &|                     d           |                     d|	j                   |                     d|j                   Y d }~d S d }~ww xY w)Nc                       e Zd Zd ZdS )IExpressionTestCase.test_error_getitem_undefined_string.<locals>.Somethingc                     dS r  rM   r-   s    r   r   zRExpressionTestCase.test_error_getitem_undefined_string.<locals>.Something.__repr__  r!  r   Nr"  rM   r   r   r#  rj    r$  r   r#  r@  r  r  rI  r  r&  rJ  ra  z<Expression 'something["nil"]'>rb  rc  rd  s
             r   #test_error_getitem_undefined_stringz6ExpressionTestCase.test_error_getitem_undefined_string  ss   	% 	% 	% 	% 	% 	% 	% 	% ,|B!)+ + +	2MM;		4555II/00000 	2 	2 	2Dc!ffMMM14.HiAM!)E- E~,<=00	 - E 		CDDD\4+;<<<R111111111	2rg  c                     t          ddi          }|                     dt          d                              |                     d S )Nsomething)dictzdict['some']rp  r   r   r$   r   s     r   !test_getitem_with_constant_stringz4ExpressionTestCase.test_getitem_with_constant_string  sI    &'*+++*^"<"<"E"Ed"K"KLLLLLr   c                 N   t          dddddd          }|                     dt          d                              |                     |                     dt          d	                              |                     |                     dt          d
                              |                     |                     dt          d                              |                     |                     dt          d                              |                     d S )Nr*   bazquoxquoooxfoobar)Tg      @Nr9   s   foovalueszvalues[True]zvalues[2.5]z
values[42]zvalues[b"foo"]zvalues[None]rq  r   s     r   test_getitem_with_simple_indexz1ExpressionTestCase.test_getitem_with_simple_index  s   
 
    	
> : : C CD I IJJJ
= 9 9 B B4 H HIII:l#;#;#D#DT#J#JKKK:.>#?#?#H#H#N#NOOON!;!;!D!DT!J!JKKKKKr   c                    t          g d          }|                     dt          d                              |                     |                     dt          d                              |                     d S )NrH   )r   rI   zitems[0]rJ   z	items[-1]rq  r   s     r   test_array_indicesz%ExpressionTestCase.test_array_indices  st    )))$$$Jz22;;DAABBBJ{33<<TBBCCCCCr   c                     G d dt                     } |            dd}|                     dt          d                              |                     |                     dt          d                              |                     |                     dt          d                              |                     d S )	Nc                       e Zd ZdZdS )CExpressionTestCase.test_item_access_for_attributes.<locals>.MyClassBarN)r  r  r  myattrrM   r   r   MyClassr    s        FFFr   r  r  )minerC   r  zmine.myattrzmine["myattr"]z	mine[key])r)  r   r   r$   )r   r  r   s      r   test_item_access_for_attributesz2ExpressionTestCase.test_item_access_for_attributes  s    	 	 	 	 	f 	 	 			(33
= 9 9 B B4 H HIII
+; < < E Ed K KLLL
; 7 7 @ @ F FGGGGGr   c                     t          ddi          }|                     dt          d                              |                     d S )Nr+   r*   rx  zvalues[str("foo")]rq  r   s     r   test_function_in_item_accessz/ExpressionTestCase.test_function_in_item_access  sI    E5>***
+? @ @ I I$ O OPPPPPr   N)Or  r  r  r   r   r(   r.   r0   r4   r7   rA   rF   rK   rN   rQ   rT   rW   rZ   r^   rc   rg   ri   rl   rn   rp   rr   rt   rv   rx   rz   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   version_infor   r   r   r   r   r   r   r   r   r   r  r  r+  r;  rA  rG  r\  rf  rl  rr  rz  r|  r  r  rM   r   r   r   r      s3       6 6 6
B B B
+ + +H H H4 4 4C C CG G G@ @ @Q Q Q
J J JK K KA A AB B BK K KB B BL L LL L LL L LL L LM M ML L LM M ML L LL L LL L LL L LP P P
T T T
X X XP P PN N N
L L L
P P PU U UO O OP P PO O OP P PM M M
H H HM M MN N NL L L< < <
> > >P P P(A A A
A A A
P P P(A A A
A A A
 6!!	A 	A 	A
M M M& & &
/ / /
) ) )
J J J, , ,
! ! !
! ! !! ! !
! ! !* * *
* 
* 
*O O O
* 
* 
*O O O7 7 7(2 2 202 2 20M M ML L LD D D
H H HQ Q Q Q Qr   r   c                   `   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zesd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,e-j.        d*k    rd+ Z/d, Z0d- Z1d. Z2d/ Z3d0 Z4d1 Z5d2 Z6d3 Z7d4 Z8d5 Z9d6S )7SuiteTestCasec                 H   t          d          }t                      }t          j        ||d           |                    d           t          j        |          }i }|                    |           |                     d|d                    |j        |j        k    sJ d S )Nfoo = 42r   r   r9   r+   )	r   r   r    r!   r"   r#   executer   r%   )r   suiter&   r'   r   s        r   r(   zSuiteTestCase.test_pickle#  s    j!!iiE3"""K$$	$T%[)))~++++++r   c                     t          d          }ddi}|                    |           |                     d|d                    d S )Nzdata = []
bar = foo
r+   r9   r*   r   r  r   r   r  r   s      r   test_internal_shadowingz%SuiteTestCase.test_internal_shadowing.  sU         r{dT%[)))))r   c                     t          d          }i }|                    |           |                     d|d                    d S )Nr  r9   r+   r  r  s      r   test_assignzSuiteTestCase.test_assign;  sF    j!!dT%[)))))r   c                     t          d          }i }|                    |           d|v sJ |                     d  |d                                d S )Nzdef donothing(): pass	donothingr  r  s      r   test_defzSuiteTestCase.test_defA  sb    -..dd""""0tK02233333r   c                     t          d          }ddi}|                    |           d|v sJ |                     d |d                                d S )Nz2
def donothing():
    if True:
        return foo
r+   r*   r  r  r  s      r   !test_def_with_multiple_statementsz/SuiteTestCase.test_def_with_multiple_statementsH  sn       
 u~dd"""" 1[ 1 3 344444r   c                     t          d          }i }|                    |           |                     ddg|d                    d S )Nzl
values = []
def add(value):
    if value not in values:
        values.append(value)
add('foo')
add('bar')
r+   r*   ry  r  r  s      r   test_def_using_nonlocalz%SuiteTestCase.test_def_using_nonlocalS  sS        d%h88888r   c                     t          d          }i }|                    |           |                     d|d                    |                     d|d                    d S )NzY
def difference(v1, v2=10):
    return v1 - v2
x = difference(20, 19)
y = difference(20)
rI   rP   
   r]   r  r  s      r   test_def_some_defaultsz$SuiteTestCase.test_def_some_defaults`  si        dDI&&&T#Y'''''r   c                     t          d          }i }|                    |           |                     d|d                    |                     d|d                    |                     d|d                    d S )Nzn
def difference(v1=100, v2=10):
    return v1 - v2
x = difference(20, 19)
y = difference(20)
z = difference()
rI   rP   r  r]   Z   zr  r  s      r   test_def_all_defaultsz#SuiteTestCase.test_def_all_defaultsl  s        dDI&&&T#Y'''T#Y'''''r   c                     t          d          }i }|                    |           |                     d|d                    d S )Nzj
def mysum(*others):
    rv = 0
    for n in others:
        rv = rv + n
    return rv
x = mysum(1, 2, 3)
r   rP   r  r  s      r   test_def_varargzSuiteTestCase.test_def_varargz  sO        dDI&&&&&r   c                     t          d          }i }|                    |           |                     ddgt          |d                              d S )Nz^
def smash(**kw):
    return [''.join(i) for i in kw.items()]
x = smash(foo='abc', bar='def')
bardeffooabcrP   )r   r  r   sortedr  s      r   test_def_kwargszSuiteTestCase.test_def_kwargs  s\       
 d(H-vd3i/@/@AAAAAr   c                     t          d          }i }|                    |           |                     d|d                    d S )Nz8
def kwonly(*args, k):
    return k
x = kwonly(k="foo")
r+   rP   r  r  s      r   test_def_kwonlyargz SuiteTestCase.test_def_kwonlyarg  sO       E
 DMM$UDI.....r   c                     t          d          }i }|                    |           |                     d|d                    |                     d|d                    d S )NzK
def kwonly(*args, k="bar"):
    return k
x = kwonly(k="foo")
y = kwonly()
r+   rP   r*   r]   r  r  s      r   test_def_kwonlyarg_with_defaultz-SuiteTestCase.test_def_kwonlyarg_with_default  si       E DMM$UDI...UDI.....r   c                     t          d          }i }|                    |           |                     ddg|d                    d S )Nz
def doit():
    values = []
    def add(value):
        if value not in values:
            values.append(value)
    add('foo')
    add('bar')
    return values
x = doit()
r+   r*   rP   r  r  s      r   test_def_nestedzSuiteTestCase.test_def_nested  sS     
 
 
 d%c33333r   c                     t          d          }i }|                    |           |                     d|d                    d S )Nzl
def lower(fun):
    return lambda: fun().lower()

@lower
def say_hi():
    return 'Hi!'

result = say_hi()
zhi!resultr  r  s      r   test_def_with_decoratorz%SuiteTestCase.test_def_with_decorator  sO     	 	 	 dX/////r   c                 ^    t          d          }i }|                    |           d|vsJ d S )Nzfoo = 42
del foo
r+   r   r  r  s      r   test_deletezSuiteTestCase.test_delete  sF        dD      r   c                 ^    t          d          }i }|                    |           d|v sJ d S )Nzclass plain(object): passplainr  r  s      r   
test_classzSuiteTestCase.test_class  s8    122d$r   c                     t          d          }i }|                    |           |                     dt          |d                              d S )Nz
def create():
    class Foobar(object):
        def __str__(self):
            return 'foobar'
    return Foobar()
x = create()
rw  rP   )r   r  r   rP  r  s      r   test_class_in_defzSuiteTestCase.test_class_in_def  sU        d3tCy>>22222r   c                 ^    t          d          }i }|                    |           d|v sJ d S )Nz7class plain(object):
    def donothing():
        pass
r  r  r  s      r   test_class_with_methodsz%SuiteTestCase.test_class_with_methods  s@        d$r   c                 ^    t          d          }i }|                    |           d|v sJ d S )Nzfrom itertools import repeatrepeatr  r  s      r   test_importzSuiteTestCase.test_import  s>    455d4r   c                 v    t          d          }t                      }|                    |           d|v sJ d S )Nzfrom itertools import *r  )r   r   r  r  s      r   test_import_starzSuiteTestCase.test_import_star  sB    /00yyd4r   c                     t          d          }t                      }|                    |           d|vsJ |                     g dt	           |d                                          d S )NzDdef fun():
    from itertools import repeat
    return repeat(1, 3)
r  )rI   rI   rI   fun)r   r   r  r   r   r  s      r   test_import_in_defz SuiteTestCase.test_import_in_def  sv        yydt####De$7$788888r   c                     t          d          }i }|                    |           |                     g d|d                    d S )Nz-x = []
for i in range(3):
    x.append(i**2)
)r   rI   rf   rP   r  r  s      r   test_forzSuiteTestCase.test_for  sS        dDI.....r   c                     t          d          }i }|                    |           d|v sJ |                     d |d                                d S )NzVdef loop():
    for i in range(10):
        if i == 5:
            break
    return i
loopr   r  r  s      r   test_for_in_defzSuiteTestCase.test_for_in_def
  sb        d~~~~LDLNN+++++r   c                     t          d          }ddi}|                    |           |                     d|d                    d S )Nzif foo == 42:
    x = True
r+   r9   TrP   r  r  s      r   test_ifzSuiteTestCase.test_if  sS        r{dtCy)))))r   c                 f    t          d          }|                     t          |j        i            d S )Nzraise NotImplementedError)r   r9  r1  r  r   r  s     r   
test_raisezSuiteTestCase.test_raise  s1    566-u}bAAAAAr   c                     t          d          }i }|                    |           |                     d |d                    d S )NzXtry:
    import somemod
except ImportError:
    somemod = None
else:
    somemod.dosth()somemodr  r  s      r   test_try_exceptzSuiteTestCase.test_try_except"  sO        dtI/////r   c                     t          d          }i }|                    |           |                     d |d                    d S )Nz%try:
    x = 2
finally:
    x = None
rP   r  r  s      r   test_finallyzSuiteTestCase.test_finally-  sO       
 dtCy)))))r   c                     t          d          }ddi}|                    |           |                     d|d                    d S )Nz>x = 0
while x < 5:
    x += step
    if x == 4:
        break
stepr   rf   rP   r  r  s      r   test_while_breakzSuiteTestCase.test_while_break7  sS        {dDI&&&&&r   c                     t          d          }ddi}|                    d|i           |                     d|d                    d S )Nzd['k'] += 42krI   d+   r  r   r  r  s      r   #test_augmented_attribute_assignmentz1SuiteTestCase.test_augmented_attribute_assignmentB  sN    n%%!HsAhQsV$$$$$r   c                 J    t          d                              i            d S )Nzx = 1; x += 42; assert x == 43r  r-   s    r   test_local_augmented_assignz)SuiteTestCase.test_local_augmented_assignH  s%    .//77;;;;;r   c                     i }t          d                              |           |                     d|d                    d S )Nz6def foo():
    i = 1
    i += 1
    return i
x = foo()r   rP   r  r   r  s     r   test_augmented_assign_in_defz*SuiteTestCase.test_augmented_assign_in_defK  sH      	 	 gajjjAcF#####r   c                     i }t          d                              |           |                     d|d                    d S )NzQdef foo():
    i = 0
    for n in range(5):
        i += n
    return i
x = foo()r  rP   r  r  s     r   $test_augmented_assign_in_loop_in_defz2SuiteTestCase.test_augmented_assign_in_loop_in_defT  sH      	 	
 gajjjQsV$$$$$r   c                     t          d          }ddi}|                    d|i           |                     d|d                    d S )Nz)[d['k']] = 'foo',; assert d['k'] == 'foo'r  r*   r  r+   r  r  s      r   test_assign_in_listz!SuiteTestCase.test_assign_in_list^  sO    ABB%LsAh#'''''r   c                 V    t          d          }|                    dddii           d S )Nz&x = 1; exec(d['k']); assert x == 42, xr  r  zx = 42r  r  s     r   	test_execzSuiteTestCase.test_execd  s1    >??sS(O,-----r   c                 R    t          d          }|                    ddi           d S )Nz)
def f():
    return v

assert f() == 42
r   r9   r  r  s     r   test_returnzSuiteTestCase.test_returnh  s4        	sBi     r   c                     t          d          }di i}|                    |           |                     d|d         d                    d S )Nzd['k'] = 'foo'r  r+   r  r  r  s      r   test_assign_to_dict_itemz&SuiteTestCase.test_assign_to_dict_itemq  sO    &''RydS	#/////r   c                      G d dt                     } |            }t          d          }d|i}|                    |           |                     d|j                   d S )Nc                       e Zd ZdS )9SuiteTestCase.test_assign_to_attribute.<locals>.SomethingN)r  r  r  rM   r   r   r#  r  x  s          r   r#  zobj.attr = 'foo'r  r+   )r)  r   r  r   attr)r   r#  r&  r  r   s        r   test_assign_to_attributez&SuiteTestCase.test_assign_to_attributew  so    %%%%%%%%IKK	())y!d	/////r   c                      G d dt                     } |            }t          d                              d|i           |                     t	          |d                     d S )Nc                       e Zd Zd ZdS )-SuiteTestCase.test_delattr.<locals>.Somethingc                     d| _         d S )Nr+   )r  r-   s    r   r  z6SuiteTestCase.test_delattr.<locals>.Something.__init__  s    !			r   Nr  rM   r   r   r#  r    s#        " " " " "r   r#  zdel obj.attrr  r  )r)  r   r  assertFalsehasattr)r   r#  r  s      r   test_delattrzSuiteTestCase.test_delattr  s}    	" 	" 	" 	" 	" 	" 	" 	" ikkn%%ucl333f--.....r   c                     ddi}t          d                              d|i           |                     d|           d S )Nr  r+   z
del d['k']r  )r   r  assertNotInr  s     r   test_delitemzSuiteTestCase.test_delitem  sG    %Ll##S!H---a     r   c                    t                      \  }}t          j        |d          }	 |                    d           |                    d           |                                 d|i}t          d          }|                    |           |                     ddg|d                    t          j	        |           d S # t          j	        |           w xY w)	Nwzfoo
bar
r   pathz{from __future__ import with_statement
lines = []
with open(path) as file:
    for line in file:
        lines.append(line)
foo
zbar
lines
r   osfdopenwriter"   closer   r  r   remover   fdr  r   r  r  s         r   test_with_statementz!SuiteTestCase.test_with_statement  s    99DIb#	GGL!!!FF1IIIGGIIIA   E MM!gw/7<<<IdOOOOOBIdOOOO   BC Cc                     i }t          d          }|                    |           |                     g d|d                    d S )Na  
results = []
def counter(maximum):
    i = 0
    while i < maximum:
        val = (yield i)
        if val is not None:
            i = val
        else:
            i += 1
it = counter(5)
results.append(next(it))
results.append(it.send(3))
results.append(next(it))
)r   rJ   rf   resultsr  )r   r  r  s      r   test_yield_expressionz#SuiteTestCase.test_yield_expression  sS        	aAiL11111r   )rJ   rJ   c                    t                      \  }}t          j        |d          }	 |                    d           |                    d           |                                 d|i}t          d          }|                    |           |                     ddg|d                    t          j	        |           d S # t          j	        |           w xY w)Nr  r  r   r  zfrom __future__ import with_statement
lines = []
with open(path) as file1, open(path) as file2:
    for line in file1:
        lines.append(line)
    for line in file2:
        lines.append(line)
r  r  r  s         r   'test_with_statement_with_multiple_itemsz5SuiteTestCase.test_with_statement_with_multiple_items  s    yyHB	"c""A    q						TN    a     '7!3QwZ@@@	$	$r  c                     t          d          }dg di}|                    |           |                     ddg|d                    d S )Nzx = numbers[0:2]r   r   r   rI   rP   r  r  s      r   r   zSuiteTestCase.test_slice  sT    ())<<<(d!Qc+++++r   c                     t          d          }g dddd}|                    |           |                     ddg|d                    d S )Nzx = numbers[start:end]r   r   r   r   rI   rP   r  r  s      r   r   z"SuiteTestCase.test_slice_with_vars  sY    .//'<<!A>>d!Qc+++++r   c                     t          d          }dg di}|                    |           |                     g d|d                    d S )Nzx = numbers[:]r   r   rP   r  r  s      r   r   zSuiteTestCase.test_slice_copy  sT    &''<<<(dtCy11111r   c                     t          d          }g ddd}|                    |           |                     g d|d                    d S )Nzx = numbers[::stride]r   r   r   r   rP   r  r  s      r   r   zSuiteTestCase.test_slice_stride  sW    -..*??a88dDI.....r   c                     t          d          }g ddd}|                    |           |                     dg|d                    d S )Nzx = numbers[-1:]r   r   r   rf   rP   r  r  s      r   r   z'SuiteTestCase.test_slice_negative_start  sU    ())*??a88d!d3i(((((r   c                     t          d          }g ddd}|                    |           |                     g d|d                    d S )Nzx = numbers[:-1]r   r   r   r   rP   r  r  s      r   r   z%SuiteTestCase.test_slice_negative_end  sW    ())*??a88dtCy11111r   c                     t          d          }dg di}|                    |           |                     d|d                    d S )Nzx = numbers[1]r   r   rI   rP   r  r  s      r   r   z!SuiteTestCase.test_slice_constant  sP    &''???+dDI&&&&&r   c                     d }t          d          }g d|d}|                    |           |                     d|d                    d S )Nc                      dS r   rM   rM   r   r   r   z(SuiteTestCase.test_slice_call.<locals>.f  r   r   zx = numbers[f()]r   r   r   rP   r  )r   r   r  r   s       r   r   zSuiteTestCase.test_slice_call  sb    	 	 	())*??33dDI&&&&&r   c                     t          d          }g ddd}|                    |           |                     d|d                    d S )Nzx = numbers[v]r   r   r   rP   r  r  s      r   r   zSuiteTestCase.test_slice_name  sS    &''*??33dDI&&&&&r   c                      G d d          }t          d          }g d |            d}|                    |           |                     d|d                    d S )Nc                       e Zd Zd ZdS )7SuiteTestCase.test_slice_attribute.<locals>.ValueHolderc                     d| _         d S r   r  r-   s    r   r  z@SuiteTestCase.test_slice_attribute.<locals>.ValueHolder.__init__  r  r   Nr  rM   r   r   r  r    r	  r   r  zx = numbers[obj.value]r   r
  rJ   rP   r  )r   r  r  r   s       r   r  z"SuiteTestCase.test_slice_attribute  s    	 	 	 	 	 	 	 	 .//*??;;==AAdDI&&&&&r   N):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  rM   r   r   r  r  !  s@       	, 	, 	,* * ** * *4 4 4	5 	5 	59 9 9
( 
( 
(( ( (' ' 'B B B  /	/ 	/ 	/
	/ 
	/ 
	/4 4 4 0 0 0! ! !  3 3 3            9 9 9/ / /
, 
, 
,* * *B B B	0 	0 	0* * *	' 	' 	'% % %< < <$ $ $% % %( ( (. . .! ! !0 0 00 0 0/ / /! ! !
  (2 2 2( 6!!	  	  	 ,, , ,, , ,2 2 2/ / /) ) )2 2 2' ' '' ' '' ' '' ' ' ' 'r   r  c                  j   t          j                    } |                     t          j        t
          j                             |                     t           j                            t                               |                     t           j                            t                               | S r   )unittest	TestSuiteaddTestdoctestDocTestSuiter   r  defaultTestLoaderloadTestsFromTestCaser   r  )r  s    r   r  r    s|      E	MM'&z'<==>>>	MM(,BBCUVVWWW	MM(,BB=QQRRRLr   __main__r  )defaultTest)r   r   r    r   tempfiler   r  genshi.corer   genshi.template.baser   genshi.template.evalr   r   r   r	   r
   genshi.compatr   r   r   TestCaser   r  r  r  mainrM   r   r   <module>r-     s    				  



              ( ( ( ( ( (+ + + + + + + + + + + + + + < < < < < < < < < <BQ BQ BQ BQ BQ* BQ BQ BQJi' i' i' i' i'H% i' i' i'X   zHMg&&&&&& r   