
    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                   $ )BaseClass.getterr   r!   s    r   spamBaseClass.spam        zzr   c                     Xl         g Nr   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)SubClass.getter)r   r    r!   s    r   r'   SubClass.spam'   s     $**%%r   c                 ,    [        U R                  5      er+   )r   r    r,   s     r   r'   r7   ,       $**%%r   c                 ,    [        U R                  5      er+   )r   r    r!   s    r   r'   r7   0   r9   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    rA   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                   $ )z*The decorator does not use this doc stringr   r!   s    r   r'   PropertyDocSub.spam;   r)   r   r   N)r	   r
   r   r   r=   r'   r;   r   r   r   r   rG   rG   :   s        !r   rG   c                   L    \ rS rSr\R
                  R                  S 5       rSrg)PropertySubNewGetter@   c                     g)new docstringr   r   r!   s    r   r'   PropertySubNewGetter.spamA        r   r   N)r	   r
   r   r   r   r'   r;   r   r   r   r   rL   rL   @   s    ^^ r   rL   c                   H    \ rS rSr\S 5       r\R                  S 5       rSrg)PropertyNewGetterF   c                     g)zoriginal docstringr?   r   r!   s    r   r'   PropertyNewGetter.spamG   rQ   r   c                     g)rO   r   r   r!   s    r   r'   rV   K   rQ   r   r   N)r	   r
   r   r   r/   r'   r;   r   r   r   r   rS   rS   F   s,      
[[ r   rS   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 )Nr6   )r3   r]   	__class__r'   __doc__ri   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 )Nr&   )r   r]   rp   r'   rq   ra   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 )NrC   )r=   rG   r]   rp   r'   rq   )r"   rb   rj   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   rO   r   )rL   r]   r'   rp   rq   rS   )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   boolrf   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basicrD   extendedr/   r]   rq   )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)Eggs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   r   Spam)r   r]   rp   r'   rq   )r"   r   rj   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fdelrE   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Nr?   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r   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   rc   rk   unittestskipIfr   flagsoptimizerr   ru   rx   r}   r   r   r   r   refcount_testr   r   r   r   r  r   r   r   r   rY   rY   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   rY   c                       \ rS rSrSrSrg)PropertySubi  This is a subclass of propertyr   N)r	   r
   r   r   rq   r   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Srg)PropertySubSlotsi$  z5This is a subclass of property that defines __slots__r   N)r	   r
   r   r   rq   	__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)z5Trying to copy this docstring will raise an exceptionr?   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  )rf   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   Nr	   r
   r   r   r  r   r   r   r   slotted_propr  :       Ir   r!  rq   c                      g)N   r   r   r   r   undocumented_getterXPropertySubclassTests.test_property_with_slots_no_docstring.<locals>.undocumented_getter@      r   )r/   r   rg   )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   rm   rn   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 uprD   c                      g)zgetter doc.r$  r   r   r   r   documented_getterdPropertySubclassTests.test_property_with_slots_docstring_silently_dropped.<locals>.documented_getterP      r   )r/   r   rq   rf   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   rq   r   Nr   r   r   r   r!  r7  ]  s    *Ir   r!  r-  rD   c                      g)what's up getter doc?r$  r   r   r   r   r/  hPropertySubclassTests.test_property_with_slots_and_doc_slot_docstring_present.<locals>.documented_getterc  r1  r   r9  r   r2  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 )Nr  z+Docstring of `property` subclass is ignoredzissue 41287 is fixedz;Subclasses of `property` ignores `doc` constructor argumentc                     g)Getter docstringNr   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)r?  z&Getter docstring is not picked-up (%s)z3Property class doc appears in instance __doc__ (%s))r]   r
  rq   r/   r  r	   r   )r"   rE   r;   rE  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)!spam wrapped in property subclassr?   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  rL         r   r  rN  r   r]   r'   rq   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)	a  
Property tries to provide the best docstring it finds for its instances.
If a user-provided docstring is available, it is preserved on copies.
If no docstring is available during property creation, the property
will utilize the docstring from the getter if available.
c                     gr   r   r!   s    r   getter1;PropertySubclassTests.test_docstring_copy2.<locals>.getter1  r'  r   c                     g)doc 2rm   r   r!   s    r   getter2;PropertySubclassTests.test_docstring_copy2.<locals>.getter2  r1  r   c                     g)doc 3r   r   r!   s    r   getter3;PropertySubclassTests.test_docstring_copy2.<locals>.getter3  r1  r   Nzdoc-Ar[  r_  user)r/   r;   r]   rq   )r"   rX  r\  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 docrD   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 docrD   c                     g)zignored as doc already setr?   r   r!   s    r   r'   @PropertySubclassTests.test_prefer_explicit_doc.<locals>.Foo.spam  rP  r   c                     g)zignored as doc set directlyNr   r!   s    r   _stuff_getterIPropertySubclassTests.test_prefer_explicit_doc.<locals>.Foo._stuff_getter  rC  r   stuff doc argument)rE   r   r   N)
r	   r
   r   r   r
  r'   r;   rl  stuffr   r   r   r   r  rh    s5    #67D[[ 2$8}MEr   r  rn  )r]   r/   rq   r
  ro  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   rq   KPropertySubclassTests.test_property_no_doc_on_getter.<locals>.NoDoc.__doc__  s    $$r   r   N)r	   r
   r   r   r/   rq   r   r   r   r   NoDocrt    s    % %r   rw  )r]   r/   rq   r
  )r"   rw  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 r   r   r!   s    r   r#   XPropertySubclassTests.test_property_setter_copies_getter_docstring.<locals>.Foo.__init__  s    Q
r   c                     U R                   $ )rN  r   r!   s    r   r'   TPropertySubclassTests.test_property_setter_copies_getter_docstring.<locals>.Foo.spam  s     zz!r   c                     Xl         g)zthis docstring is ignoredNr   r,   s     r   r'   r    s	     #
r   r   N)	r	   r
   r   r   r#   r
  r'   r0   r   r   r   r   r  r|    s/    ." " [[# #r   r  r?   rm   rN  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)zanother ignored docstringr   Nr   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   rS  )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za docstringr?   r   r!   s    r   r'   NPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.Foo.spam  rP  r   c                     ga new docstringrm   r   r!   s    r   r'   r    rP  r   r   N)r	   r
   r   r   r
  r'   r;   r   r   r   r   r  r    s,      [[ r   r  r  c                   $    \ rS rSr\S 5       rSrg)MPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.FooBasei#  c                     gr  r   r!   s    r   r'   RPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.FooBase.spam$  rP  r   r   NrQ  r   r   r   FooBaser  #  rR  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r  r   r!   s    r   r'   OPropertySubclassTests.test_property_new_getter_new_docstring.<locals>.Foo2.spam)  rP  r   r   N)r	   r
   r   r   r'   r;   r   )r  s   r   Foo2r  (  s    \\   !r   r  rS  )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  r3  r;  rH  rT  rd  rp  rx  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=   rG   rL   rS   TestCaserY   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   