
    Rtf$                         d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZ d d	lmZ d d
lmZ  G d d      Z G d d      Z G d d      Zd Zd Zd Ze j8                  d        Ze j<                  j?                  d e        g g fddhdg fdhddff      d        Z!d Z"e j<                  j?                  di dhddhg      d         Z#d! Z$d" Z%d# Z&e'd$k(  rd dl Z  e jP                          yy)%    N)defaultdict)StringIO)	PosixPath)deepcopy)nodes)mangle_docstrings_clean_text_signatureupdate_configclean_backrefs)DEFAULT_LINKS)ALL)loggingc                   x    e Zd ZdZdZdZdZdZi Z e	e
      Z e       Zg ZdZdZ e       Z e       Z e       Zy)
MockConfigFTz[a-z0-9_.-]+N)__name__
__module____qualname__numpydoc_use_plotsnumpydoc_show_class_members%numpydoc_show_inherited_class_membersnumpydoc_class_members_toctreenumpydoc_xref_param_typenumpydoc_xref_aliasesr   r   numpydoc_xref_aliases_completesetnumpydoc_xref_ignoretemplates_pathnumpydoc_citation_re!numpydoc_attributes_as_param_listnumpydoc_validation_checksnumpydoc_validation_excludedictnumpydoc_validation_overrides     >/usr/lib/python3/dist-packages/numpydoc/tests/test_numpydoc.pyr   r      sb    "&,0)%)"$%-m%<"5N)(,%!$"%%$(F!r%   r   c                       e Zd Z e       Zy)MockBuilderN)r   r   r   r   configr$   r%   r&   r(   r(   %   s	    \Fr%   r(   c                   2    e Zd Z e       Z e       ZdZd Zy)MockAppNc                 P    | | j                   _        d| _        d| _        d| _        y )N   r   F)builderapp	verbosity
_warncountwarningiserror)selfs    r&   __init__zMockApp.__init__.   s$    #r%   )	r   r   r   r   r)   r(   r.   
translatorr4   r$   r%   r&   r+   r+   )   s    \FmGJ$r%   r+   c                     d} | j                  d      }t        t               ddt        i |       d|D cg c]  }|j	                          c}v sJ | j                  d      }t        t               ddt        ddgi|       d|D cg c]  }|j	                          c}vsJ d|D cg c]  }|j	                          c}v sJ | j                  d      }t        t               ddt        dt
        i|       d|D cg c]  }|j	                          c}vsJ d|D cg c]  }|j	                          c}vsJ | j                  d      }t        t               ddt        ddgi|       d|D cg c]  }|j	                          c}v sJ d|D cg c]  }|j	                          c}vsJ y c c}w c c}w c c}w c c}w c c}w c c}w c c}w )	Nz.
A top section before

.. autoclass:: str
    
classstr
rpartitionmembersupperzexclude-members)splitr   r+   r9   stripr   )slinesxs      r&   test_mangle_docstrings_basicrB   6   s   	A
 GGDMEgi%b%@u5!AGGI5555GGDMEgi%y7)6LeT59a	9999%0Qqwwy0000GGDMEgi%7H#6NPUV59a	9999e417794444GGDME	7E3):WI(F u5!AGGI5555e417794444# 6  :0  :4 64s)   F2F7)F<>G G2GGc                     d} | j                  d      }t               }t        |ddt        i |       |D cg c]  }|j	                          }}d|v sJ d|j
                  _        | j                  d      }t        |ddt        i |       |D cg c]  }|j	                          }}d|vsJ t               |j
                  _        | j                  d      }t        |ddt        i |       |D cg c]  }|j	                          }}d|v sJ t        d       |j
                  _        | j                  d      }t        |ddt        i |       |D cg c]  }|j	                          }}d|vsJ y c c}w c c}w c c}w c c}w )Nz8
A top section before

.. autoclass:: pathlib.PosixPath
r7   r8   zpathlib.PosixPathsamefileFc                       y)NFr$   r$   r%   r&   <lambda>z@test_mangle_docstrings_inherited_class_members.<locals>.<lambda>h       r%   )	r=   r+   r   r   r>   r)   r   r"   r   )pr@   r/   rA   s       r&   .test_mangle_docstrings_inherited_class_membersrI   R   sm   	A
 GGDME
)Cc7$7BN %&1QWWY&E&7<CJJ4GGDMEc7$7BN %&1QWWY&E&U"""7;vCJJ4GGDMEc7$7BN %&1QWWY&E&7B=7QCJJ4GGDMEc7$7BN %&1QWWY&E&U"""! '
 '
 '
 's   E3E80E=Fc                     t        d       J t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      d	k(  sJ t        d
      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ t        d      dk(  sJ y )Nzfunc($self)zfunc()zfunc($self, *args, **kwargs)zfunc(*args, **kwargs)z($self)z()zfunc($self, /, *args, **kwargs)z&func($self, other, /, *args, **kwargs)zfunc(other, *args, **kwargs)z	($module)zfunc($type)zfunc($self, foo="hello world")zfunc(foo="hello world")zfunc($self, foo='hello world')zfunc(foo='hello world')zfunc(foo="$self")zfunc($self, foo="$self")zfunc(self, other)zfunc($self, *args)zfunc(*args))r	   r$   r%   r&   test_clean_text_signaturerK   o   sx    &... /8;;;<=AXXX +t333 &$... *h666?@"	#	# 	FG)	*	* !-555 /8;;;>?$	%	% 	>?$	%	% !!:;?XXXX !459LLLL !;<@SSSS !459LLLL !56-GGGr%   c                      d } | S )Nc                       y)z
        A function whose docstring has no examples or see also section.

        Expect SA01 and EX01 errors if validation enabled.
        Nr$   r$   r%   r&   &_function_without_seealso_and_examplesz1f.<locals>._function_without_seealso_and_examples   s     	r%   r$   )rN   s    r&   frO      s     21r%   )r    expected_warnnon_warningsSA01EX01)rR   rS   )rR   )rS   c           
      L   t               }||j                  _        t        |       t	               t	               }}t        j                  |||       t        |dd| d | j                  j                  d             |j                         }|D ]  }||v rJ  |D ]  }||vrJ  y )NfunctionrO   r7   )r+   r)   r    r
   r   r   setupr   __doc__r=   getvalue)	rO   r    rP   rQ   r/   statuswarningwarningsws	            r&   )test_mangle_docstring_validation_warningsr]      s    * )C,FCJJ)#j(*GFMM#vw'c:sAtQYY__T5JK!H H}} !   !r%   c            
      b   d } t               }dh|j                  _        dg|j                  _        t	        |       t               t               }}t        j                  |||       t        |d| j                  | d | j                  j                  d             |j                         dk(  sJ y )Nc                       y)zA
        This docstring will raise docstring validation warnings.Nr$   r$   r%   r&   function_with_bad_docstringzMtest_mangle_docstring_validation_exclude.<locals>.function_with_bad_docstring   rG   r%   all_bad_rU   r7    )r+   r)   r    r!   r
   r   r   rV   r   r   rW   r=   rX   )r`   r/   rY   rZ   s       r&   (test_mangle_docstring_validation_excluderd      s    D )C-2GCJJ).6ZCJJ*#j(*GFMM#vw'#,,##++11$7 ###r%   	overridesSS02SS03c           
         d }t               }dh|j                  _        | D ci c]  }|dg c}|j                  _        t	        |       t               t               }}t        j                  |||       t        |d|j                  |d |j                  j                  d             |j                         }d|v sJ | D ]  }d| d|vrJ  y c c}w )	Nc                       y)zProcess something.Nr$   r$   r%   r&   process_something_noop_functionzItest_mangle_docstrings_overrides.<locals>.process_something_noop_function   rG   r%   ra   z	^Process rU   r7   z EX01:  z: )r+   r)   r    r#   r
   r   r   rV   r   r   rW   r=   rX   )re   rj   r/   checkrY   rZ   findingss          r&    test_mangle_docstrings_overridesrn      s    ! )C-2GCJJ) 0 	~0CJJ, # j(*GFMM#vw' '00''//55d; !H    -5'}H,,,--0s   Cc                      t               } t        d      | j                  _        t	        j
                  t        d      5  t        |        d d d        y # 1 sw Y   y xY w)Nra   zUnrecognized validation codematch)r+   r   r)   r    pytestraises
ValueErrorr
   r/   s    r&   )test_update_config_invalid_validation_setrv     sE    
)C,/JCJJ)	z)G	H c  s    AAc                      t               } t               | j                  _        d| j                  _        t        j                  t        d      5  t        |        d d d        y # 1 sw Y   y xY w)Nzshouldnt-be-a-strz\['shouldnt-be-a-str'\]rp   )	r+   r   r)   r    r!   rr   rs   rt   r
   ru   s    r&   test_update_config_exclude_strrx   	  sO    
)C,/ECJJ)-@CJJ*	z)C	D c  s   A%%A.c                     t        j                  dd      } t        j                  dddg      }|t        j                  ddd      z  }t        j                  dddgdg	      }|t        j
                  d
      z  }|t        j                  dd      z  }| |z  } | |z  } t        t               | d       d|d   v sJ y)z/Check ids are not cleaned from inline backrefs.rc   )	rawsourcetextid1)rz   r{   idsz[1]zr123-1)rz   r{   refidindex)rz   docnamebackrefsr}   1zAuthor. Title.)r/   docr   r   N)r   	paragraphinline	referencecitationlabelr   r+   )par
inline_refr   s      r&   test_clean_backrefsr     s    
//BR
0C%AJ%//BU(KKJ~~ghZH C  H"3CDDH:C8OCwyc7;HZ((((r%   __main__))rr   collectionsr   ior   pathlibr   copyr   docutilsr   numpydoc.numpydocr   r	   r
   r   numpydoc.xrefr   sphinx.ext.autodocr   sphinx.utilr   r   r(   r+   rB   rI   rK   fixturerO   markparametrizer   r]   rd   rn   rv   rx   r   r   mainr$   r%   r&   <module>r      s/    #      ( " + +" 
$ 
$58#:HD 	2 	2  
B
&	+R0
9i(!!0$6 rF8ff5E&FG- H-@)  zFKKM r%   