
    (ph                         S r SSKrSSKr " S S\R                  5      rSr " S S\R                  5      r " S S	\R                  5      r " S
 S\R                  5      rg)as  Tests for advice

This module was adapted from 'protocols.tests.advice', part of the Python
Enterprise Application Kit (PEAK).  Please notify the PEAK authors
(pje@telecommunity.com and tsarna@sarna.org) if bugs are found or
Zope-specific changes are required, so that the PEAK version of this module
can be kept in sync.

PEAK is a Python application framework that interoperates with (but does
not require) Zope 3 and Twisted.  It provides tools for manipulating UML
models, object-relational persistence, aspect-oriented programming, and more.
Visit the PEAK home page at http://peak.telecommunity.com for more information.
    Nc                   ,    \ rS rSrS rS rS rS rSrg)FrameInfoTest    c                     SSK Jn  UR                  u  p#pEU R                  US5        UR                  XE4 H  nU R                  XaR                  5        M      g )Nr   advisory_testingmodule)zope.interface.testsr   moduleLevelFrameInfoassertEqual__dict__assertIs
my_globalsselfr   kindr	   f_locals	f_globalsds          S/var/www/html/venv/lib/python3.13/site-packages/zope/interface/tests/test_advice.pytest_w_moduleFrameInfoTest.test_w_module"   sM    9 0 E E		x((5AMM!889 6    c                     SSK Jn  UR                  R                  u  nnnnU R	                  US5        UR
                  U4 H  nU R                  XaR                  5        M      g )Nr   r   class)r
   r   NewStyleClassclassLevelFrameInfor   r   r   r   r   s          r   test_w_classFrameInfoTest.test_w_class*   s[    9 '44HH				w')+AMM!889 ,r   c                 b   SSK Jn  U" [        R                  " 5       5      u  p#pEU R	                  US5        [        R                  " 5       nU R	                  XFR
                  5        U R	                  U[        5       5        UR                  U4 H  nU R                  U[        5       5        M     g )Nr   getFrameInfozfunction call)
zope.interface.advicer"   sys	_getframer   r   localsr   r   globals)r   r"   r   r	   r   r   framer   s           r   test_inside_function_call'FrameInfoTest.test_inside_function_call5   s|    6,8,I)h/>>268,)+AMM!WY' ,r   c                     SSK Jn  SU0n0 n[        [        X#5        U R	                  US   S5        U R                  US   U5        U R                  US   5        U R                  US   U5        g )	Nr   r!   r"   r   execr   r	   r   )r#   r"   r,   _FUNKY_EXECr   r   assertIsNone)r   r"   _globals_localss       r   test_inside_execFrameInfoTest.test_inside_execA   sk    6"L1[(,&1gj)73'(+,gk*H5r    N)	__name__
__module____qualname____firstlineno__r   r   r)   r1   __static_attributes__r3   r   r   r   r       s    :	:
(6r   r   zMimport sys
kind, module, f_locals, f_globals = getFrameInfo(sys._getframe())
c                   ,    \ rS rSrS rS rS rS rSrg)Test_isClassAdvisorR   c                     SSK Jn  U" U0 UD6$ )Nr   )isClassAdvisor)r#   r=   )r   argskwr=   s       r   _callFUTTest_isClassAdvisor._callFUTT   s    8t*r**r   c                 F    U R                  U R                  U 5      S5        g )NFr   r@   r   s    r   test_w_non_function'Test_isClassAdvisor.test_w_non_functionX   s    t,e4r   c                 L    S nU R                  U R                  U5      S5        g )Nc                      [        5       eNNotImplementedErrorr3   r   r   foo7Test_isClassAdvisor.test_w_normal_function.<locals>.foo]       %''r   FrC   )r   rL   s     r   test_w_normal_function*Test_isClassAdvisor.test_w_normal_function[   s"    	( 	s+U3r   c                 j    S n[        5       Ul        U R                  U R                  U5      S5        g )Nc                      [        5       erI   rJ   r3   r   r   bar8Test_isClassAdvisor.test_w_advisor_function.<locals>.bard   rN   r   T)objectpreviousMetaclassr   r@   )r   rS   s     r   test_w_advisor_function+Test_isClassAdvisor.test_w_advisor_functionb   s,    	( !'s+T2r   r3   N)	r4   r5   r6   r7   r@   rE   rO   rW   r8   r3   r   r   r:   r:   R   s    +543r   r:   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
Test_determineMetaclassk   c                     SSK Jn  U" U0 UD6$ )Nr   )determineMetaclass)r#   r]   )r   r>   r?   r]   s       r   r@    Test_determineMetaclass._callFUTm   s    <!4.2..r   c                 f     " S S[         5      nU R                  U R                  SU5      U5        g )Nc                       \ rS rSrSrg)DTest_determineMetaclass.test_empty_w_explicit_metatype.<locals>.Metas   r3   Nr4   r5   r6   r7   r8   r3   r   r   Metara   s       r   rd   r3   typer   r@   r   rd   s     r   test_empty_w_explicit_metatype6Test_determineMetaclass.test_empty_w_explicit_metatypeq   s+    	4 	 	r40$7r   c                 n     " S S[         5      nU R                  U R                  U45      [         5        g )Nc                       \ rS rSrSrg)1Test_determineMetaclass.test_single.<locals>.Metaz   r3   Nrc   r3   r   r   rd   rm   z   re   r   rd   rf   rh   s     r   test_single#Test_determineMetaclass.test_singlex   s+    	4 	 	w/6r   c                      " S S[         5      n " S S[         US9nU R                  U R                  U[         45      U5        g )Nc                       \ rS rSrSrg)<Test_determineMetaclass.test_meta_of_class.<locals>.Metameta   r3   Nrc   r3   r   r   Metametars      re   r   ru   c                       \ rS rSrSrg)8Test_determineMetaclass.test_meta_of_class.<locals>.Meta   r3   Nrc   r3   r   r   rd   rw      re   r   rd   	metaclassrf   )r   ru   rd   s      r   test_meta_of_class*Test_determineMetaclass.test_meta_of_class   s;    	t 		48 	 	d|4h?r   c                      " S S[         5      n " S SU5      n " S S[         US9n " S S	[         US9nU R                  U R                  X445      U5        g )
Nc                       \ rS rSrSrg)GTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_A   r3   Nrc   r3   r   r   Meta_Ar      re   r   r   c                       \ rS rSrSrg)GTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.Meta_B   r3   Nrc   r3   r   r   Meta_Br      re   r   r   c                       \ rS rSrSrg)BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.A   r3   Nrc   r3   r   r   Ar      re   r   r   ry   c                       \ rS rSrSrg)BTest_determineMetaclass.test_multiple_in_hierarchy_py3k.<locals>.B   r3   Nrc   r3   r   r   Br      re   r   r   rf   r   r   r   r   r   s        r   test_multiple_in_hierarchy_py3k7Test_determineMetaclass.test_multiple_in_hierarchy_py3k   sS    	T 		V 		 		 	 	v.7r   c                      " S S[         5      n " S S[         5      n " S S[         US9n " S S	[         US9nU R                  [        U R                  X445        g )
Nc                       \ rS rSrSrg)KTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_A   r3   Nrc   r3   r   r   r   r      re   r   r   c                       \ rS rSrSrg)KTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.Meta_B   r3   Nrc   r3   r   r   r   r      re   r   r   c                       \ rS rSrSrg)FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.A   r3   Nrc   r3   r   r   r   r      re   r   r   ry   c                       \ rS rSrSrg)FTest_determineMetaclass.test_multiple_not_in_hierarchy_py3k.<locals>.B   r3   Nrc   r3   r   r   r   r      re   r   r   )rg   assertRaises	TypeErrorr@   r   s        r   #test_multiple_not_in_hierarchy_py3k;Test_determineMetaclass.test_multiple_not_in_hierarchy_py3k   sP    	T 		T 		 		 	 	)T]]QF;r   r3   N)r4   r5   r6   r7   r@   ri   ro   r{   r   r   r8   r3   r   r   rZ   rZ   k   s!    /87@8 <r   rZ   c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
Test_minimalBases   c                     SSK Jn  U" U5      $ )Nr   )minimalBases)r#   r   )r   klassesr   s      r   r@   Test_minimalBases._callFUT   s    6G$$r   c                 F    U R                  U R                  / 5      / 5        g rI   rC   rD   s    r   
test_emptyTest_minimalBases.test_empty   s    r*B/r   c                 Z    U R                  U R                  [        /5      [        /5        g rI   )r   r@   rg   rD   s    r   test_w_newstyle_meta&Test_minimalBases.test_w_newstyle_meta   s    v.7r   c                 ^     " S S5      nU R                  U R                  U/5      U/5        g )Nc                       \ rS rSrSrg)2Test_minimalBases.test_w_newstyle_class.<locals>.C   r3   Nrc   r3   r   r   Cr      re   r   r   rC   )r   r   s     r   test_w_newstyle_class'Test_minimalBases.test_w_newstyle_class   s+    	 	 	s+aS1r   c                     " S S5      n " S SU5      n " S SU5      n " S S5      nU R                  U R                  XU/5      U/5        U R                  U R                  X/5      U/5        U R                  U R                  X#/5      U/5        U R                  U R                  X/5      U/5        U R                  U R                  XBU/5      X$/5        g )	Nc                       \ rS rSrSrg)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.A   r3   Nrc   r3   r   r   r   r      re   r   r   c                       \ rS rSrSrg)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.B   r3   Nrc   r3   r   r   r   r      re   r   r   c                       \ rS rSrSrg)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.C   r3   Nrc   r3   r   r   r   r      re   r   r   c                       \ rS rSrSrg)@Test_minimalBases.test_simple_hierarchy_skips_implied.<locals>.D   r3   Nrc   r3   r   r   Dr      re   r   r   rC   )r   r   r   r   r   s        r   #test_simple_hierarchy_skips_implied5Test_minimalBases.test_simple_hierarchy_skips_implied   s    	 		 		 		 	 	ay1A37v.4v.4v.4ay1A6:r   c                 t     " S S5      n " S S5      nU R                  U R                  XU/5      X!/5        g )Nc                       \ rS rSrSrg)@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.A   r3   Nrc   r3   r   r   r   r      re   r   r   c                       \ rS rSrSrg)@Test_minimalBases.test_repeats_kicked_to_end_of_queue.<locals>.B   r3   Nrc   r3   r   r   r   r      re   r   r   rC   )r   r   r   s      r   #test_repeats_kicked_to_end_of_queue5Test_minimalBases.test_repeats_kicked_to_end_of_queue   s7    	 		 	 	ay1A6:r   r3   N)r4   r5   r6   r7   r@   r   r   r   r   r   r8   r3   r   r   r   r      s     %082;(;r   r   )	__doc__r$   unittestTestCaser   r-   r:   rZ   r   r3   r   r   <module>r      sc     )6H%% )6X3(++ 32<<h// <<~/;)) /;r   