
    0hhxP                     .   S SK r S SKrS SKJr   " S S\5      r " S S\5      r " S S\5      r " S	 S
\5      r " S S\	5      r
 " S S\
5      r " S S\	5      r " S S\5      r " S S\
5      r " S S\	5      r " S S\R                   5      r " S S\5      r " S S\5      r " S S\5      r " S S \R                   5      r " S! S"5      r " S# S$\\R                   5      r " S% S&\\R                   5      r\S':X  a  \R6                  " 5         gg)(    N)supportc                       \ rS rSrSrg)PropertyBase    N__name__
__module____qualname____firstlineno____static_attributes__r       ;/opt/python-3.13.8/usr/lib/python3.13/test/test_property.pyr   r          r   r   c                       \ rS rSrSrg)PropertyGet   r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)PropertySet   r   Nr   r   r   r   r   r      r   r   r   c                       \ rS rSrSrg)PropertyDel   r   Nr   r   r   r   r   r      r   r   r   c                   r    \ rS rSrS r\S 5       r\R                  S 5       r\R                  S 5       rSr	g)	BaseClass   c                     SU l         g N   _spamselfs    r   __init__BaseClass.__init__   s	    
r   c                     U R                   $ Nr    r"   s    r   spamBaseClass.spam        zzr   c                     Xl         g r'   r    r#   values     r   r(   r)      s    
r   c                     U ? g r'   r    r"   s    r   r(   r)   !   s    Jr   r    N)
r	   r
   r   r   r$   propertyr(   setterdeleterr   r   r   r   r   r      sK       
[[  
\\ r   r   c                       \ rS rSr\R
                  R                  S 5       r\R                  S 5       r\R                  S 5       rSr	g)SubClass%   c                 ,    [        U R                  5      er'   )r   r!   r"   s    r   r(   SubClass.spam'   s     $**%%r   c                 ,    [        U R                  5      er'   )r   r!   r,   s     r   r(   r6   ,       $**%%r   c                 ,    [        U R                  5      er'   )r   r!   r"   s    r   r(   r6   0   r8   r   r   N)
r	   r
   r   r   r   r(   getterr0   r1   r   r   r   r   r3   r3   %   sN    ^^& & 
[[& & 
\\& &r   r3   c                   ,    \ rS rSrSrS r\" \SS9rSrg)PropertyDocBase4      c                     U R                   $ r'   r    r"   s    r   	_get_spamPropertyDocBase._get_spam6   s    zzr   spam spam spamdocr   N)	r	   r
   r   r   r!   r@   r/   r(   r   r   r   r   r<   r<   4   s    EI#34Dr   r<   c                   L    \ rS rSr\R
                  R                  S 5       rSrg)PropertyDocSub:   c                     U R                   $ r'   r    r"   s    r   r(   PropertyDocSub.spam;   r*   r   r   N)r	   r
   r   r   r<   r(   r:   r   r   r   r   rF   rF   :   s        !r   rF   c                   L    \ rS rSr\R
                  R                  S 5       rSrg)PropertySubNewGetter@   c                     gr   r   r"   s    r   r(   PropertySubNewGetter.spamA        r   r   N)r	   r
   r   r   r   r(   r:   r   r   r   r   rK   rK   @   s    ^^ r   rK   c                   H    \ rS rSr\S 5       r\R                  S 5       rSrg)PropertyNewGetterF   c                     gNr>   r   r"   s    r   r(   PropertyNewGetter.spamG   rO   r   c                     g)Nr   r   r"   s    r   r(   rU   K   rO   r   r   N)r	   r
   r   r   r/   r(   r:   r   r   r   r   rQ   rQ   F   s,      
[[ r   rQ   c                   f   \ rS rSrS rS r\R                  " \R                  R                  S:  S5      S 5       r\R                  " \R                  R                  S:  S5      S 5       rS r\R                  " \R                  R                  S:  S5      S	 5       rS
 r\R                  " \R                  R                  S:  S5      S 5       r\R                  " \R                  R                  S:  S5      S 5       r\R&                  S 5       r\R&                  S 5       rS rS rS rSrg)PropertyTestsP   c                    [        5       nU R                  UR                  S5        U R                  UR                  S5        SUl        U R                  UR                  S5        U R                  UR                  S5        [	        US5        U R                  [        US5      (       + 5        U R                  [        US5      (       + 5        SUl        U R                  UR                  S5        U R                  UR                  S5        g )Nr   
   r(   r!   r   )r   assertEqualr(   r!   delattr
assertTruehasattrr#   bases     r   !test_property_decorator_baseclass/PropertyTests.test_property_decorator_baseclassQ   s    {A&Q'	B'R(fGD&112GD'223	B'R(r   c                     [        5       nU R                  [        [        US5        U R                  [        [
        USS 5        U R                  [        [        US5        g )Nr(   )r3   assertRaisesr   getattrr   setattrr   r]   r#   subs     r    test_property_decorator_subclass.PropertyTests.test_property_decorator_subclass`   sG    j+wV<+wVTB+wV<r      )Docstrings are omitted with -O2 and abovec                 x    [        5       nU R                  UR                  R                  R                  S5        g )NzSubClass.getter)r3   r\   	__class__r(   __doc__rh   s     r   $test_property_decorator_subclass_doc2PropertyTests.test_property_decorator_subclass_docg   s,     j++335FGr   c                 x    [        5       nU R                  UR                  R                  R                  S5        g )NzBaseClass.getter)r   r\   ro   r(   rp   r`   s     r   %test_property_decorator_baseclass_doc3PropertyTests.test_property_decorator_baseclass_docm   s,     {,,446HIr   c                     [        5       n[        5       nU R                  UR                  R                  R
                  S5        U R                  UR                  R                  R
                  S5        g )NrB   )r<   rF   r\   ro   r(   rp   )r#   ra   ri   s      r   test_property_decorator_doc)PropertyTests.test_property_decorator_docs   sT     ,,446FG++335EFr   c                 \   [        5       nU R                  UR                  S5        U R                  UR                  R                  R                  S5        [        5       nU R                  UR                  S5        U R                  UR                  R                  R                  S5        g )Nr   znew docstringr   )rK   r\   r(   ro   rp   rQ   )r#   newgettersub	newgetters      r   !test_property_getter_doc_override/PropertyTests.test_property_getter_doc_overridey   s     ,-**A.//44<<oN%'	+,,1199?Kr   c                 v  ^^ SS/ S/SS4 HD  m " U4S jS[         5      nU R                  UR                  R                  [	        T5      5        MF      " S S	[         5      mU R                  [        5          " U4S
 jS[         5      nUR                  R                    S S S 5        g ! , (       d  f       g = f)NTFr>    1c                   <   > \ rS rSrS r Y \l        \" \5      rSrg)EPropertyTests.test_property___isabstractmethod__descriptor.<locals>.C   c                     g r'   r   r"   s    r   fooIPropertyTests.test_property___isabstractmethod__descriptor.<locals>.C.foo       r   r   Nr	   r
   r   r   r   __isabstractmethod__r/   r   )vals   r   Cr      s    +.(smr   r   c                       \ rS rSrS r\rSrg)KPropertyTests.test_property___isabstractmethod__descriptor.<locals>.NotBool   c                     [        5       er'   )
ValueErrorr"   s    r   __bool__TPropertyTests.test_property___isabstractmethod__descriptor.<locals>.NotBool.__bool__   s
     l"r   r   N)r	   r
   r   r   r   __len__r   r   r   r   NotBoolr      s    #Gr   r   c                   F   > \ rS rSrS r Y " 5       \l        \" \5      rSrg)r      c                     g r'   r   r"   s    r   r   r      r   r   r   Nr   )r   s   r   r   r      s    +29(smr   )objectassertIsr   r   boolre   r   )r#   r   r   r   s     @@r   ,test_property___isabstractmethod__descriptor:PropertyTests.test_property___isabstractmethod__descriptor   s    %aS"c2C$F $
 MM!%%44d3i@ 3	f 	 z*$F $
 EE&& +**s   8)B**
B8c                     [        SS9nU R                  UR                  S5        SUl        U R                  UR                  S5        g )NbasicrC   extendedr/   r\   rp   )r#   ps     r   "test_property_builtin_doc_writable0PropertyTests.test_property_builtin_doc_writable   s=     !G,	J/r   c                 &    " S S[         5      nU" 5       nU R                  UR                  R                  R                  S5        SUR                  R                  l        U R                  UR                  R                  R                  S5        g )Nc                   $    \ rS rSr\S 5       rSrg)OPropertyTests.test_property_decorator_doc_writable.<locals>.PropertyWritableDoc   c                     gNeggsr   r"   s    r   r(   TPropertyTests.test_property_decorator_doc_writable.<locals>.PropertyWritableDoc.spam   s     r   r   N)r	   r
   r   r   r/   r(   r   r   r   r   PropertyWritableDocr      s     r   r   EggsSpam)r   r\   ro   r(   rp   )r#   r   ri   s      r   $test_property_decorator_doc_writable2PropertyTests.test_property_decorator_doc_writable   sj    	& 	 "#++33V<%+"++33V<r   c                     [         R                  " [        S5      n[        SSSS5      nU" 5       n[	        S5       H  nUR                  SSSS5        M     U R                  U" 5       U-
  SSS	9  g )
NgettotalrefcountfgetfsetfdelrD   d   r   r[   delta)r   get_attributesysr/   ranger$   assertAlmostEqual)r#   r   	fake_proprefs_beforeis        r   test_refleaks_in___init__'PropertyTests.test_refleaks_in___init__   sn    "006HIVVVU;	&(sAvvvu= /1K?"Mr   c                    [         R                  " [        S5      n[        5       nU" 5       n[	        S5       H  nUR                  S 5      nM     U R                  UR                  5        [	        S5       H  nUR                  S 5      nM     U R                  UR                  5        [	        S5       H  nUR                  S 5      nM     U R                  UR                  5        U R                  U" 5       U-
  SSS9  g )Nr   r   r   r[   r   )r   r   r   r/   r   r:   assertIsNoner   r0   r   r1   r   r   )r#   r   propr   r   s        r   test_gh_115618PropertyTests.test_gh_115618   s     #006HIz&(sA;;t$D $))$sA;;t$D $))$sA<<%D $))$/1K?"Mr   c                   ^^ S mS m " UU4S jS5      nU R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR                  R                  S5        U R                  UR
                  R                  S5        [        T5      Ul        U R                  UR                  R                  S	5        S
UR                  l        U R                  UR                  R                  S
5        U R                  UR                  R                  S5        S UR                  l        U R                  UR                  R                  5        U R                  [        S5         [        S T5      R                    S S S 5        U R                  [        S5         [        S5      R                    S S S 5         " S S5      n[        U" 5       5      nU R                  [        S5         UR                    S S S 5        SUl        U R                  UR                  S5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NT= f)Nc                     g)N*   r   r"   s    r   r:   0PropertyTests.test_property_name.<locals>.getter   s    r   c                     g r'   r   r,   s     r   r0   0PropertyTests.test_property_name.<locals>.setter       r   c                   p   > \ rS rSr\S 5       r\R                  S 5       r\"  Y 5      r\" S Y5      r	Sr
g)+PropertyTests.test_property_name.<locals>.A   c                     grT   r   r"   s    r   r   /PropertyTests.test_property_name.<locals>.A.foo   s    r   c                     g r'   r   r,   s     r   oof/PropertyTests.test_property_name.<locals>.A.oof   s    r   Nr   )r	   r
   r   r   r/   r   r0   r   barbazr   )r:   r0   s   r   Ar      sE      ZZ  6"C4(Cr   r   r   r   r   r   r:   myquuxz-'property' object has no attribute '__name__'r>   c                       \ rS rSrS rSrg)-PropertyTests.test_property_name.<locals>.Err   c                     [        S5      e)Nfail)RuntimeError)r#   attrs     r   __getattr__9PropertyTests.test_property_name.<locals>.Err.__getattr__   s    "6**r   r   N)r	   r
   r   r   r   r   r   r   r   Errr      s    +r   r   r   not_fail)r\   r   r	   r   r   r   r/   quuxr   assertRaisesRegexAttributeErrorr   )r#   r   r   r   r:   r0   s       @@r   test_property_name PropertyTests.test_property_name   s   		
	) 
	) 	////&!(3"(3/!&&//*##K
 T6"++

 ##K
 QK  

	+ 	+ SUO##L&9JJ :  
Z0'
 


 
 :9s$   I
II,

I
I),
I:c                     [        5       nS H9  nU R                  [        SU S35         UR                  " S/U-  6   S S S 5        M;     g ! , (       d  f       MM  = f)N)r   r>      z3^__set_name__\(\) takes 2 positional arguments but z were given$r   )r/   r   	TypeError__set_name__)r#   r   r   s      r   %test_property_set_name_incorrect_args3PropertyTests.test_property_set_name_incorrect_args  sY    JA''FqcV !q*	   s   A
A	c                      " S S[         5      n " S S5      n[         R                  U5      nUR                  US5        UR                  S 5      ng )Nc                       \ rS rSrS rSrg)EPropertyTests.test_property_setname_on_property_subclass.<locals>.proi  c                     g)Nabcdefr   )typargskwargss      r   __new__MPropertyTests.test_property_setname_on_property_subclass.<locals>.pro.__new__  s    r   r   N)r	   r
   r   r   r   r   r   r   r   pror     s     r   r   c                       \ rS rSrSrg)CPropertyTests.test_property_setname_on_property_subclass.<locals>.Ai  r   Nr   r   r   r   r   r     s    r   r   r>   c                     grT   r   r"   s    r   <lambda>JPropertyTests.test_property_setname_on_property_subclass.<locals>.<lambda>  s    1r   )r/   r   r   r:   )r#   r   r   r   nps        r   *test_property_setname_on_property_subclass8PropertyTests.test_property_setname_on_property_subclass  sF    	 ( 	 	 	 S!	q!XXn%r   r   N)r	   r
   r   r   rb   rj   unittestskipIfr   flagsoptimizerq   rt   rw   r|   r   r   r   r   refcount_testr   r   r   r   r  r   r   r   r   rX   rX   P   sd   )= __SYY''1,@BHBH __SYY''1,@BJBJG __SYY''1,@BLBL'. __SYY''1,@B0B0 __SYY''1,@B=B= N N N N"31j+&r   rX   c                       \ rS rSrSrg)PropertySubi  r   Nr   r   r   r   r	  r	    s     r   r	  c                       \ rS rSrSrg)PropertySubWoDoci!  r   Nr   r   r   r   r  r  !  r   r   r  c                       \ rS rSrSrSrg)PropertySubSlotsi$  r   Nr	   r
   r   r   	__slots__r   r   r   r   r  r  $  s    Ir   r  c                   D   \ rS rSr\R
                  S 5       rS r\R                  " \
R                  R                  S:  S5      S 5       r\R                  " \
R                  R                  S:  S5      S 5       r\R                  " \
R                  R                  S:  S5      S 5       r\R                  " \
R                  R                  S:  S5      S	 5       r\R                  " \
R                  R                  S:  S5      S
 5       r\R                  " \
R                  R                  S:  S5      S 5       rS r\R                  " \
R                  R                  S:  S5      S 5       r\R                  " \
R                  R                  S:  S5      S 5       rSrg)PropertySubclassTestsi(  c                     U R                  [        5          " S S[        5      nS S S 5        g ! , (       d  f       g = f)Nc                   $    \ rS rSr\S 5       rSrg)FPropertySubclassTests.test_slots_docstring_copy_exception.<locals>.Fooi2  c                     grT   r   r"   s    r   r(   KPropertySubclassTests.test_slots_docstring_copy_exception.<locals>.Foo.spam3  s     r   r   N)r	   r
   r   r   r  r(   r   r   r   r   Foor  2  s    ! "r   r  )re   r   r   r#   r  s     r   #test_slots_docstring_copy_exception9PropertySubclassTests.test_slots_docstring_copy_exception*  s*     ~.f  /..s   /
=c                      " S S[         5      nU" 5       nU R                  [        USS 5      5        S nU" U5      nU R                  [        USS 5      5        g )Nc                       \ rS rSrSrSrg)QPropertySubclassTests.test_property_with_slots_no_docstring.<locals>.slotted_propi:  r   r   Nr  r   r   r   slotted_propr  :       Ir   r  rp   c                      gN   r   r   r   r   undocumented_getterXPropertySubclassTests.test_property_with_slots_no_docstring.<locals>.undocumented_getter@      r   )r/   r   rf   )r#   r  r   r$  s       r   %test_property_with_slots_no_docstring;PropertySubclassTests.test_property_with_slots_no_docstring8  sW    	!8 	! N'!Y56	 ,-'!Y56r   rl   rm   c                      " S S[         5      nU" SS9nU R                  UR                  5        S nU R                  [        5         U" U5      nS S S 5        g ! , (       d  f       g = f)Nc                       \ rS rSrSrSrg)_PropertySubclassTests.test_property_with_slots_docstring_silently_dropped.<locals>.slotted_propiJ  r  r   Nr  r   r   r   r  r+  J  r   r   r  	what's uprC   c                      gr"  r   r   r   r   documented_getterdPropertySubclassTests.test_property_with_slots_docstring_silently_dropped.<locals>.documented_getterP      r   )r/   r   rp   re   r   r#   r  r   r.  s       r   3test_property_with_slots_docstring_silently_droppedIPropertySubclassTests.test_property_with_slots_docstring_silently_droppedF  sX    	!8 	! [)!))$	 ~../A /..s   		A
A)c                      " S S[         5      nU" SS9nU R                  SUR                  5        S nU" U5      nU R                  SUR                  5        g )Nc                       \ rS rSrSrSrg)cPropertySubclassTests.test_property_with_slots_and_doc_slot_docstring_present.<locals>.slotted_propi]  )r   rp   r   Nr  r   r   r   r  r6  ]  s    *Ir   r  r,  rC   c                      gr"  r   r   r   r   r.  hPropertySubclassTests.test_property_with_slots_and_doc_slot_docstring_present.<locals>.documented_getterc  r0  r   zwhat's up getter doc?r   r1  s       r   7test_property_with_slots_and_doc_slot_docstring_presentMPropertySubclassTests.test_property_with_slots_and_doc_slot_docstring_presentY  sU    	+8 	+ [)aii0	 *+0!))<r   c                 ~   U R                  [        R                  SS5        [        S S S S5      R                  nU R                  USS5        S nS n[        [        [        4 H  nU" US S S5      R                  nU R                  USSUR
                  -  5        U" US S S 5      R                  nU R                  USS	UR
                  -  5        U" US S S5      R                  nU R                  USSUR
                  -  5        U" US S S 5      R                  nU R                  US
UR
                  -  5        M     g )NzThis is a subclass of propertyz+Docstring of `property` subclass is ignoredzissue 41287 is fixedz;Subclasses of `property` ignores `doc` constructor argumentc                     g r'   r   xs    r   r:   5PropertySubclassTests.test_issue41287.<locals>.getteru      r   c                     g r'   r   r=  s    r   getter_wo_doc<PropertySubclassTests.test_issue41287.<locals>.getter_wo_docx  r   r   z1Getter overrides explicit property docstring (%s)zGetter docstringz&Getter docstring is not picked-up (%s)z3Property class doc appears in instance __doc__ (%s))r\   r	  rp   r/   r  r	   r   )r#   rD   r:   rB  pss        r   test_issue41287%PropertySubclassTests.test_issue41287j  sP    	,,.NF	H $d,BCKK4V	X	#	 K)99BVT4)?@HHCS"8PSUS^S^^` VT4.66CS"46^acalal6lm]D$0FGOOCS"8PSUS^S^^` ]D$5==Cc#X[][f[f#fg :r   c                 n     " S S[         5      nU R                  UR                  R                  S5        g )Nc                   $    \ rS rSr\S 5       rSrg)6PropertySubclassTests.test_docstring_copy.<locals>.Fooi  c                     grT   r   r"   s    r   r(   ;PropertySubclassTests.test_docstring_copy.<locals>.Foo.spam       r   r   Nr	   r
   r   r   r	  r(   r   r   r   r   r  rI         r   r  !spam wrapped in property subclassr   r\   r(   rp   r  s     r   test_docstring_copy)PropertySubclassTests.test_docstring_copy  s.    	& 	
 	HH/	1r   c                    S nS nS n[        US S S5      nUR                  U5      nU R                  UR                  S5        U R                  UR                  S5        [        US S S5      nUR                  U5      nU R                  UR                  S5        U R                  UR                  S5        [        US S S 5      nUR                  U5      nU R                  UR                  S5        U R                  UR                  S5        [        US S S 5      nSUl        UR                  U5      nU R                  UR                  S5        U R                  UR                  S5        [        US S S 5      nSUl        UR                  U5      nU R                  UR                  S5        U R                  UR                  S5        g )Nc                     grT   r   r"   s    r   getter1;PropertySubclassTests.test_docstring_copy2.<locals>.getter1  r&  r   c                     gNrl   r   r"   s    r   getter2;PropertySubclassTests.test_docstring_copy2.<locals>.getter2  r0  r   c                     g)Nr   r   r"   s    r   getter3;PropertySubclassTests.test_docstring_copy2.<locals>.getter3  r0  r   zdoc-Azdoc 2zdoc 3user)r/   r:   r\   rp   )r#   rU  rY  r\  r   p2s         r   test_docstring_copy2*PropertySubclassTests.test_docstring_copy2  s   			 WdD'2XXgG,W- WdD'2XXgG,W- WdD$/XXgG,W- WdD$/	XXgF+W- WdD$/	XXgF+V,r   c                     U R                  [        SS9R                  S5        U R                  [        SS9R                  S5         " S S5      nU R                  UR                  R                  S5        g )Nzexplicit docrC   c                   X    \ rS rSr\" SS9r\R                  S 5       rS r\" S\S9rSr	g	)
;PropertySubclassTests.test_prefer_explicit_doc.<locals>.Fooi  zspam explicit docrC   c                     grT   r   r"   s    r   r(   @PropertySubclassTests.test_prefer_explicit_doc.<locals>.Foo.spam  rL  r   c                     g r'   r   r"   s    r   _stuff_getterIPropertySubclassTests.test_prefer_explicit_doc.<locals>.Foo._stuff_getter  r@  r   stuff doc argument)rD   r   r   N)
r	   r
   r   r   r	  r(   r:   rh  stuffr   r   r   r   r  rd    s5    #67D[[ 2$8}MEr   r  rj  )r\   r/   rp   r	  rk  r  s     r   test_prefer_explicit_doc.PropertySubclassTests.test_prefer_explicit_doc  sc     	n5==~N8@@.Q
	N 
	N 	**,@Ar   c                      " S S5      nU R                  [        U" 5       5      R                  S 5        U R                  [        U" 5       5      R                  S 5        g )Nc                   $    \ rS rSr\S 5       rSrg)CPropertySubclassTests.test_property_no_doc_on_getter.<locals>.NoDoci  c                     [         er'   )r   r"   s    r   rp   KPropertySubclassTests.test_property_no_doc_on_getter.<locals>.NoDoc.__doc__  s    $$r   r   N)r	   r
   r   r   r/   rp   r   r   r   r   NoDocrp    s    % %r   rs  )r\   r/   rp   r	  )r#   rs  s     r   test_property_no_doc_on_getter4PropertySubclassTests.test_property_no_doc_on_getter  sH    	% 	%
 	%'*22D9UW-55t<r   c                   ^  " S S[         5      mT" 5       nU R                  UR                  S5        SUl        U R                  UR                  S5        U R                  TR                  R                  S5         " U4S jST5      nU" 5       nU R                  UR                  S5        SUl        U R                  UR                  S	5        U R                  UR                  R                  S5        g )
Nc                   N    \ rS rSrS r\S 5       r\R                  S 5       rSrg)OPropertySubclassTests.test_property_setter_copies_getter_docstring.<locals>.Fooi  c                     SU l         g rT   r    r"   s    r   r$   XPropertySubclassTests.test_property_setter_copies_getter_docstring.<locals>.Foo.__init__  s    Q
r   c                     U R                   $ r'   r    r"   s    r   r(   TPropertySubclassTests.test_property_setter_copies_getter_docstring.<locals>.Foo.spam  s     zz!r   c                     Xl         g r'   r    r,   s     r   r(   r|    s	     #
r   r    N)	r	   r
   r   r   r$   r	  r(   r0   r   r   r   r   r  rx    s/    ." " [[# #r   r  r>   rl   rO  c                   P   > \ rS rSr Y R                  R
                  S 5       rSrg)RPropertySubclassTests.test_property_setter_copies_getter_docstring.<locals>.FooSubi  c                     SU l         g r   r    r,   s     r   r(   WPropertySubclassTests.test_property_setter_copies_getter_docstring.<locals>.FooSub.spam	  s     $
r   r    N)r	   r
   r   r   r(   r0   r   )r  s   r   FooSubr    s    XX__$ $r   r     r   rP  )r#   r   r  foosubr  s       @r   ,test_property_setter_copies_getter_docstringBPropertySubclassTests.test_property_setter_copies_getter_docstring  s    		#& 		# e1%1%HH/	1	$S 	$
 a(f-KK/	1r   c                    ^  " S S[         5      nU R                  UR                  R                  S5         " S S[         5      m " U4S jST5      nU R                  UR                  R                  S5        g )Nc                   H    \ rS rSr\S 5       r\R                  S 5       rSrg)IPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.Fooi  c                     grT   r   r"   s    r   r(   NPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.Foo.spam  rL  r   c                     grX  r   r"   s    r   r(   r    rL  r   r   N)r	   r
   r   r   r	  r(   r:   r   r   r   r   r  r    s,      [[ r   r  za new docstringc                   $    \ rS rSr\S 5       rSrg)MPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.FooBasei#  c                     grT   r   r"   s    r   r(   RPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.FooBase.spam$  rL  r   r   NrM  r   r   r   FooBaser  #  rN  r   r  c                   P   > \ rS rSr Y R                  R
                  S 5       rSrg)JPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.Foo2i(  c                     grX  r   r"   s    r   r(   OPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.Foo2.spam)  rL  r   r   N)r	   r
   r   r   r(   r:   r   )r  s   r   Foo2r  (  s    \\   !r   r  rP  )r#   r  r  r  s      @r   &test_property_new_getter_new_docstring<PropertySubclassTests.test_property_new_getter_new_docstring  sa    	& 	 	))+<=	f 	
	7 	
 	))+<=r   r   N)r	   r
   r   r   r   requires_docstringsr  r'  r  r  r   r  r  r2  r9  rE  rQ  r`  rl  rt  r  r  r   r   r   r   r  r  (  s      !7 __SYY''1,@B0B0" __SYY''1,@B=B= __SYY''1,@BhBh< __SYY''1,@B1B1 __SYY''1,@B8-B8-t __SYY''1,@BBBB(
= __SYY''1,@B1B1> __SYY''1,@B>B>r   r  c                   H    \ rS rSrSrSrSrS r\S 5       r	S r
S rS rSrg)	_PropertyUnreachableAttributei0  Nc                 8    U R                   R                  U5      $ r'   )
msg_formatformat)r#   msgs     r   _format_exc_msg-_PropertyUnreachableAttribute._format_exc_msg5  s    %%c**r   c                 .    U R                  5       U l        g r'   )clsobj)r  s    r   
setUpClass(_PropertyUnreachableAttribute.setUpClass8  s    '')r   c                     U R                  [        U R                  S5      5         U R                  R                    S S S 5        g ! , (       d  f       g = f)Nzhas no getterr   r   r  r  r   r"   s    r   test_get_property/_PropertyUnreachableAttribute.test_get_property<  s5    ##ND4H4H4YZHHLL [ZZs   A
Ac                     U R                  [        U R                  S5      5         S U R                  l        S S S 5        g ! , (       d  f       g = f)Nzhas no setterr  r"   s    r   test_set_property/_PropertyUnreachableAttribute.test_set_property@  s5    ##ND4H4H4YZDHHL [ZZs   A
Ac                     U R                  [        U R                  S5      5         U R                  ?S S S 5        g ! , (       d  f       g = f)Nzhas no deleterr  r"   s    r   test_del_property/_PropertyUnreachableAttribute.test_del_propertyD  s4    ##ND4H4HIY4Z[ \[[s	   <
A
r   )r	   r
   r   r   r  r  r  r  classmethodr  r  r  r  r   r   r   r   r  r  0  s9    J
C
C+   r   r  c                   ,    \ rS rSrSr " S S5      rSrg)$PropertyUnreachableAttributeWithNameiI  zI^property 'foo' of 'PropertyUnreachableAttributeWithName\.cls' object {}$c                   "    \ rS rSr\" 5       rSrg)(PropertyUnreachableAttributeWithName.clsiL  r   N)r	   r
   r   r   r/   r   r   r   r   r   r  r  L  s	    jr   r  r   N)r	   r
   r   r   r  r  r   r   r   r   r  r  I  s    ]J r   r  c                   D    \ rS rSrSr " S S5      r\" 5       \l        Srg)"PropertyUnreachableAttributeNoNameiP  zA^property of 'PropertyUnreachableAttributeNoName\.cls' object {}$c                       \ rS rSrSrg)&PropertyUnreachableAttributeNoName.clsiS  r   Nr   r   r   r   r  r  S  s    r   r  r   N)	r	   r
   r   r   r  r  r/   r   r   r   r   r   r  r  P  s    UJ  jCGr   r  __main__)r   r  testr   	Exceptionr   r   r   r   r   r   r3   r<   rF   rK   rQ   TestCaserX   r/   r	  r  r  r  r  r  r  r	   mainr   r   r   <module>r     s"     	9 		, 		, 		, 	 "&y &5f 5_ 9  K&H%% K&\)( )	x 	x E>H-- E>P 2+H(J[J[ )FHYHY  zMMO r   