
    c                        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
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 j        d             Ze j                            d e            g g fddhdg fdhddff          d             Zd Zd Z d Z!e"dk    rd dl Z  e j#                     dS dS )    N)defaultdict)StringIO)	PosixPath)deepcopy)mangle_docstrings_clean_text_signatureupdate_config)DEFAULT_LINKS)ALL)loggingc                       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dS )
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     <lib/python3.11/site-packages/numpydoc/tests/test_numpydoc.pyr   r      sy        "&,0)%)"$%-Xm%<%<"355N)(,%!$"%#%%r!   r   c                   "    e Zd Z e            ZdS )MockBuilderN)r   r   r   r   configr    r!   r"   r$   r$      s        Z\\FFFr!   r$   c                   @    e Zd Z e            Z e            ZdZd ZdS )MockAppNc                 H    | | j         _        d| _        d| _        d| _        d S )N   r   F)builderapp	verbosity
_warncountwarningiserror)selfs    r"   __init__zMockApp.__init__%   s(    #r!   )	r   r   r   r   r%   r$   r*   
translatorr0   r    r!   r"   r'   r'       s>        Z\\FkmmGJ$ $ $ $ $r!   r'   c                     d} |                      d          }t          t                      ddt          i |           dd |D             v sJ |                      d          }t          t                      ddt          ddgi|           dd	 |D             vsJ dd
 |D             v sJ |                      d          }t          t                      ddt          dt          i|           dd |D             vsJ dd |D             vsJ |                      d          }t          t                      ddt          ddgi|           dd |D             v sJ dd |D             vsJ d S )Nz.
A top section before

.. autoclass:: str
    
classstr
rpartitionc                 6    g | ]}|                                 S r    strip.0xs     r"   
<listcomp>z0test_mangle_docstrings_basic.<locals>.<listcomp>5        555!AGGII555r!   membersupperc                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   z0test_mangle_docstrings_basic.<locals>.<listcomp>9        999a		999r!   c                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   z0test_mangle_docstrings_basic.<locals>.<listcomp>:   s     000Qqwwyy000r!   zexclude-membersc                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   z0test_mangle_docstrings_basic.<locals>.<listcomp>>   rB   r!   c                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   z0test_mangle_docstrings_basic.<locals>.<listcomp>?        44417799444r!   c                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   z0test_mangle_docstrings_basic.<locals>.<listcomp>E   r>   r!   c                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   z0test_mangle_docstrings_basic.<locals>.<listcomp>F   rF   r!   )splitr   r'   r5   r   )sliness     r"   test_mangle_docstrings_basicrL   -   s   	A
 GGDMMEgii%b%@@@55u5555555GGDMMEgii%y7)6LeTTT995999999900%0000000GGDMMEgii%7H#6NPUVVV995999999944e4444444GGDMME		7E3):WI(F   55u555555544e444444444r!   c                     d} |                      d          }t                      }t          |ddt          i |           d |D             }d|v sJ d|j        _        |                      d          }t          |ddt          i |           d |D             }d|vsJ t                      |j        _        |                      d          }t          |ddt          i |           d	 |D             }d|v sJ t          d
           |j        _        |                      d          }t          |ddt          i |           d |D             }d|vsJ d S )Nz8
A top section before

.. autoclass:: pathlib.PosixPath
r3   r4   zpathlib.PosixPathc                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   zBtest_mangle_docstrings_inherited_class_members.<locals>.<listcomp>S        &&&1QWWYY&&&r!   samefileFc                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   zBtest_mangle_docstrings_inherited_class_members.<locals>.<listcomp>X   rO   r!   c                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   zBtest_mangle_docstrings_inherited_class_members.<locals>.<listcomp>]   rO   r!   c                      dS )NFr    r    r!   r"   <lambda>z@test_mangle_docstrings_inherited_class_members.<locals>.<lambda>_   s    5 r!   c                 6    g | ]}|                                 S r    r8   r:   s     r"   r=   zBtest_mangle_docstrings_inherited_class_members.<locals>.<listcomp>b   rO   r!   )rI   r'   r   r   r%   r   dictr   )prK   r+   s      r"   .test_mangle_docstrings_inherited_class_membersrX   I   sv   	A
 GGDMME
))Cc7$7BNNN&&&&&E7<CJ4GGDMMEc7$7BNNN&&&&&EU""""7;vvCJ4GGDMMEc7$7BNNN&&&&&E7B==7Q7QCJ4GGDMMEc7$7BNNN&&&&&EU""""""r!   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 d S )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_signaturerZ   f   s    &&... //8;;;;<==AXX   !++t3333 &&$.... **h6666?@@"	#  
 	FGG)	*   !--5555 //8;;;;>??$	%  
 	>??$	%   !!:;;?XXXXX !4559LLLLL !;<<@SSSSS !4559LLLLL !566-GGGGGGr!   c                      d } | S )Nc                      dS )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    )r]   s    r"   fr^      s       21r!   )r   expected_warnnon_warningsSA01EX01)ra   rb   )ra   )rb   c           
      h   t                      }||j        _        t          |           t	                      t	                      }}t          j        |||           t          |dd| d | j        	                    d                     |
                                }|D ]}||v sJ 	|D ]}||vsJ 	d S )Nfunctionr^   r3   )r'   r%   r   r	   r   r   setupr   __doc__rI   getvalue)	r^   r   r_   r`   r+   statuswarningwarningsws	            r"   )test_mangle_docstring_validation_warningsrl      s    * ))C,FCJ)#jj(**GFM#vw'''c:sAtQY__T5J5JKKK!!H  H} ! !     ! !r!   c            
      t   d } t                      }dh|j        _        dg|j        _        t	          |           t                      t                      }}t          j        |||           t          |d| j	        | d | j
                            d                     |                                dk    sJ d S )Nc                      dS )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   s      r!   all_bad_rd   r3    )r'   r%   r   r   r	   r   r   re   r   r   rf   rI   rg   )ro   r+   rh   ri   s       r"   (test_mangle_docstring_validation_excluders      s    D D D ))C-2GCJ).6ZCJ*#jj(**GFM#vw'''#,##+11$77   ######r!   c                      t                      } t          d          | j        _        t	          j        t          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nrp   zUnrecognized validation codematch)r'   r   r%   r   pytestraises
ValueErrorr	   r+   s    r"   )test_update_config_invalid_validation_setr{      s    
))C,/JJCJ)	z)G	H	H	H  c                 s   A  A$'A$c                      t                      } t                      | j        _        d| j        _        t          j        t          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nzshouldnt-be-a-strz\['shouldnt-be-a-str'\]ru   )	r'   r   r%   r   r   rw   rx   ry   r	   rz   s    r"   test_update_config_exclude_strr}      s    
))C,/EECJ)-@CJ*	z)C	D	D	D  c                 s   A++A/2A/__main__)$rw   collectionsr   ior   pathlibr   copyr   numpydoc.numpydocr   r   r	   numpydoc.xrefr
   sphinx.ext.autodocr   sphinx.utilr   r   r$   r'   rL   rX   rZ   fixturer^   markparametrizer   rl   rs   r{   r}   r   mainr    r!   r"   <module>r      s7    # # # # # #                   U U U U U U U U U U ' ' ' ' ' ' " " " " " "      ( ( ( ( ( ( ( (        
$ 
$ 
$ 
$ 
$ 
$ 
$ 
$5 5 58# # #:H H HD 	2 	2 	2  
B
&	+R0
9i( ! ! !0$ $ $6     z MMMFKMMMMM r!   