
    4[gS                         d Z ddlZddlZddlZddlZddlmZ ddlmZ ddl	m
Z
mZ ddlZddlZd Z G d d      Z G d	 d
e      Z edg d      Z G d de      ZddZd ZddZ G d de      Z G d de      Zy)z=Extract reference documentation from the NumPy source tree.

    N)warn)
namedtuple)CallableMappingc                     | r,| d   j                         s| d= | r| d   j                         s| r,| d   j                         s| d= | r| d   j                         s| S )z<Remove leading and trailing blank lines from a list of linesr   strip)ls    P/var/www/html/bid-api/venv/lib/python3.12/site-packages/scipy/_lib/_docscrape.pystrip_blank_linesr      sU    
AaDJJLaD AaDJJL
AbEKKMbE AbEKKMH    c                   T    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZddZd Zy)Readerz!A line-based string reader.

    c                     t        |t              r|| _        n|j                  d      | _        | j	                          y)zs
        Parameters
        ----------
        data : str
           String with lines separated by '\n'.

        
N)
isinstancelist_strsplitreset)selfdatas     r   __init__zReader.__init__   s.     dD!DI

4(DI

r   c                      | j                   |   S N)r   r   ns     r   __getitem__zReader.__getitem__,   s    yy|r   c                     d| _         y )Nr   )_lr   s    r   r   zReader.reset/   s	    r   c                 p    | j                         s&| | j                     }| xj                  dz  c_        |S y)N    )eofr!   )r   outs     r   readzReader.read2   s-    xxztww-CGGqLGJr   c                 z    | | j                   d  D ])  }|j                         r y | xj                   dz  c_         + y Nr$   )r!   r
   )r   r   s     r   seek_next_non_empty_linezReader.seek_next_non_empty_line:   s/    dgghAwwy1	  r   c                 F    | j                   t        | j                        k\  S r   r!   lenr   r"   s    r   r&   z
Reader.eofA   s    ww#dii.((r   c                     | j                   }| |d  D ]T  } ||      r| || j                    c S | xj                   dz  c_         | j                         sB| || j                   dz    c S  g S r*   )r!   r&   )r   condition_funcstartlines       r   read_to_conditionzReader.read_to_conditionD   sf    LDd#E$''**GGqLGxxzE$''!),, ! 	r   c                 J    | j                          d }| j                  |      S )Nc                 $    | j                          S r   r	   r2   s    r   is_emptyz0Reader.read_to_next_empty_line.<locals>.is_emptyQ   s    zz|##r   )r+   r3   )r   r7   s     r   read_to_next_empty_linezReader.read_to_next_empty_lineN   s&    %%'	$ %%h//r   c                 *    d }| j                  |      S )Nc                 p    | j                         xr% t        | j                               t        |       k(  S r   )r
   r.   lstripr6   s    r   is_unindentedz:Reader.read_to_next_unindented_line.<locals>.is_unindentedW   s'    JJLFc$++-&8CI&EGr   )r3   )r   r<   s     r   read_to_next_unindented_linez#Reader.read_to_next_unindented_lineV   s    	H%%m44r   c                 r    | j                   |z   t        | j                        k  r| | j                   |z      S yNr%   r-   r   s     r   peekzReader.peek[   s0    77Q;TYY'!$$r   c                 V    dj                  | j                        j                          S r?   )joinr   r
   r"   s    r   r7   zReader.is_emptya   s!    77499%++---r   N)r   )__name__
__module____qualname____doc__r   r   r   r(   r+   r&   r3   r8   r=   r@   r7    r   r   r   r      s>    )05
.r   r   c                       e Zd Zd Zy)
ParseErrorc                 ^    | j                   d   }t        | d      r| d| j                  }|S )Nr   	docstring in )argshasattrrK   )r   messages     r   __str__zParseError.__str__f   s3    ))A,4% 	dnn%78Gr   N)rC   rD   rE   rP   rG   r   r   rI   rI   e   s    r   rI   	Parameter)nametypedescc                   $   e Zd ZdZi ddddgdg dg dg dg d	g d
g dg dg dg dg dg dg dg dddddi iZi fdZd Zd Zd Zd Z	d Z
d Zd Zd ZdAdZdZd Zd!Zd"ez   ez   d#z   ez   d$z   Zej'                  d%d&      Zej'                  d'd(      Zd)Z ej.                  d*ez   d+z         Z ej.                  d,ez   d-z   ez   d.z   d$z   d/z   ez         Zd0Zd1 Zd2 Zd3 Zd4 ZdBd5ZdCd6Z dDd7Z!d8 Z"d9 Z#d: Z$d; Z%d< Z&d= Z'd> Z(dEd?Z)y@)FNumpyDocStringzParses a numpydoc string to an abstract representation

    Instances define a mapping from section title to structured data.

    	Signaturer%   SummaryExtended Summary
ParametersReturnsYieldsReceivesRaisesWarnsOther Parameters
AttributesMethodsSee AlsoNotesWarnings
ReferencesExamplesindexc                    |}t        j                  |      j                  d      }t        |      | _        t        j                  | j                        | _        	 | j                          y # t        $ r}||_         d }~ww xY wNr   )textwrapdedentr   r   _doccopydeepcopysections_parsed_data_parserI   rK   )r   rK   configorig_docstringes        r   r   zNumpyDocString.__init__   si    "OOI.44T:	9%	 MM$--8	KKM 	(AK	s   A- -	B6A>>Bc                      | j                   |   S r   )rq   )r   keys     r   r   zNumpyDocString.__getitem__   s      %%r   c                 l    || j                   vr| j                  d|z  d       y || j                   |<   y )NzUnknown section %sFerror)rq   _error_location)r   rw   vals      r   __setitem__zNumpyDocString.__setitem__   s9    d'''  !5!;5 I%(Dc"r   c                 ,    t        | j                        S r   )iterrq   r"   s    r   __iter__zNumpyDocString.__iter__   s    D%%&&r   c                 ,    t        | j                        S r   )r.   rq   r"   s    r   __len__zNumpyDocString.__len__   s    4$$%%r   c                    | j                   j                          | j                   j                         ry| j                   j                         j	                         }|j                  d      ry| j                   j                  d      j	                         }|j                  dt        |      z        xs |j                  dt        |      z        S )NF
.. index::Tr$   -=)rm   r+   r&   r@   r
   
startswithr.   )r   l1l2s      r   _is_at_sectionzNumpyDocString._is_at_section   s    		**,99==?YY^^##%==&YY^^A$$&}}SR[)GR]]3s2w;-GGr   c                     d}d}t        |      D ]  \  }}|j                         s n t        |d d d         D ]  \  }}|j                         s n ||t        |      |z
   S )Nr   r   )	enumerater
   r.   )r   docijr2   s        r   _stripzNumpyDocString._strip   sj     ~GAtzz| & !TrT+GAtzz| , 1SXaZ  r   c                 |   | j                   j                         }| j                         s| j                   j                         sw| j                   j	                  d      j                         s|dgz  }|| j                   j                         z  }| j                         s| j                   j                         sw|S )Nr   r%   )rm   r8   r   r&   r@   r
   )r   sections     r   _read_to_next_sectionz$NumpyDocString._read_to_next_section   s    ))335%%'		99>>"%++-B4tyy88::G	 %%'		 r   c              #   R  K   | j                   j                         s| j                         }|d   j                         }|j	                  d      r
||dd  f n/t        |      dk  r	t         n|| j                  |dd        f | j                   j                         sy y w)Nr   ..r$      )rm   r&   r   r
   r   r.   StopIterationr   )r   r   rR   s      r   _read_sectionszNumpyDocString._read_sections   s     ))--/--/D7==?Dt$DHn$TQ##DKKQR111 ))--/s   B"B'%B'c                 p   t        |      }g }|j                         s|j                         j                         }d|v r|j	                  d      d d \  }}n|rd|}}n|d}}|j                         }t        |      }t        |      }|j                  t        |||             |j                         s|S )N : r   r%   )
r   r&   r(   r
   r   r=   dedent_linesr   appendrQ   )	r   contentsingle_element_is_typerparamsheaderarg_namearg_typerT   s	            r   _parse_param_listz NumpyDocString._parse_param_list   s    7O%%'VVX^^%F%+\\%%8!%<"())+VhH)/hH113D%D$T*DMM)Hh=> %%'  r   z:(?P<role>\w+):z'`(?P<name>(?:~\w+\.)?[a-zA-Z0-9_\.-]+)`z(?P<name2>[a-zA-Z0-9_\.-]+)(|)rolerolenextrR   namenextz/(?P<description>\s*:(\s+(?P<desc>\S+.*))?)?\s*$z^\s*z\s*z^\s*(?P<allfuncs>z(?P<morefuncs>([,]\s+z)*)z(?P<trailing>[,\.])?r   c                     g } fd}g }|D ]_  }|j                         s j                  j                  |      }d}|rK|j                  d      }|j                  d      r)|r' j	                  d|j                  d      |fz  d       |s1|j                  d      r |j                  |j                                |rg }|j                  d	      }		 |	j                         snP ||	      \  }
}}|j                  |
|f       |	|d j                         }	|	r|	d
   dk(  r|	dd j                         }	at        t        d|g            }|j                  ||f       Tt        d|z         |S )z
        func_name : Descriptive text
            continued text
        another_func_name : Descriptive text
        func_name1, func_name2, :meth:`func_name`, func_name3

        c                     j                   j                  |       }|st        d| z        |j                  d      }|r|j                  d      n|j                  d      }|||j	                         fS )zMatch ':role:`name`' or 'name'.%s is not a item namer   rR   name2)	_func_rgxmatchrI   groupend)textmr   rR   r   s       r   parse_item_namez7NumpyDocString._parse_see_also.<locals>.parse_item_name  se    $$T*A !84!?@@776?D&*1776?0@Dquuw&&r   NrT   trailingzGUnexpected comma or period after function list at index %d of line "%s"Fry    allfuncsr   ,r$   r   )r
   	_line_rgxr   r   r{   r   r   r   r   filterrI   )r   r   itemsr   restr2   
line_matchdescriptionfuncsr   rR   r   	match_ends   `            r   _parse_see_alsozNumpyDocString._parse_see_also  s~    	' D::<--d3JK(..v6##J/K((03=>>*3M37399 $	 ) %
 4??3#7DJJL)!''
3::<,;D,A)D$	LL$.	
+113DQ3#ABx~~/  F4+78eT]+ !84!?@@= > r   c                    d }i }|j                  d      }t        |      dkD  r  ||d   j                  d            d   |d<   |D ]B  }|j                  d      }t        |      dkD  s# ||d   j                  d            ||d   <   D |S )	zU
        .. index:: default
           :refguide: something, else, and more

        c                 H    | D cg c]  }|j                          c}S c c}w r   r	   )lstss     r   strip_each_inz2NumpyDocString._parse_index.<locals>.strip_each_inP  s     '*+s!AGGIs+++s   z::r$   r   r   default:r   )r   r.   )r   r   r   r   r'   r2   s         r   _parse_indexzNumpyDocString._parse_indexJ  s    	, --%w<!*71:+;+;C+@A!DC	ND::c?D4y1},T!W]]3-?@DG  
r   c                    | j                         ry	 | j                  j                         }dj                  |D cg c]  }|j	                          c}      j	                         }t        j                  d      }|j                  |      r|| d<   | j                         s	 ||| d<   | j                         s| j                         | d<   yyc c}w )z%Grab signature (if given) and summaryNr   z^([\w., ]+=)?\s*[\w\.]+\(.*\)$rW   rX   rY   )	r   rm   r8   rB   r
   recompiler   r   )r   summaryr   summary_strcompileds        r   _parse_summaryzNumpyDocString._parse_summary]  s      ii779G((w#?w!AGGIw#?@FFHKzz"CDH~~k*$/[!**,%DO""$'+'A'A'CD#$ % $@s   Cc                    | j                   j                          | j                          t        | j	                               }|D ch c]  \  }}|	 }}}d|v }d|v }|r|rd}t        |      |sd|v rd}t        |      |D ]  \  }}|j                  d      sNd |j                  d      D        }dj                  |      }| j                  |      r| j                  d	|z         |d
v r| j                  |      | |<   ~|dv r| j                  |d      | |<   |j                  d      r| j                  ||      | d<   |dk(  r| j                  |      | d<   || |<    y c c}}w )Nr[   r\   z5Docstring contains both a Returns and Yields section.r]   z5Docstring contains a Receives section but not Yields.r   c              3   <   K   | ]  }|j                           y wr   )
capitalize).0r   s     r   	<genexpr>z(NumpyDocString._parse.<locals>.<genexpr>  s     F3Ea1<<>3Es   r   zThe section %s appears twice)rZ   r`   ra   rb   )r[   r\   r^   r_   r]   T)r   r   rh   rc   )rm   r   r   r   r   
ValueErrorr   r   rB   getr{   r   r   r   )r   rp   r   r   section_nameshas_returns
has_yieldsmsgs           r   rr   zNumpyDocString._parses  s   		++-.9AB%5WgB=0.
:ICS/!jM9ICS/!"*Wg%%d+F7==3EF((7+88G$(()G+2*3 4  & & $ 6 6w ?W ) ) $ 6 6D !7 !:W##L1 $ 1 1'7 CWJ&#'#7#7#@Z  'W) #+ Cs   	E(c                     t        | d      r6	 t        j                  | j                        }|d| j                   d| dz   }|rt        |      t        |d       y # t        $ r d }Y >w xY w)N_objz in the docstring of rL   .   )
stacklevel)rN   inspectgetsourcefiler   	TypeErrorr   r   )r   r   rz   filenames       r   r{   zNumpyDocString._error_location  sr    4  "00; 04zKLCS/!#    s   A A,+A,c                 "    |t        |      |z  gS r   r.   )r   rR   symbols      r   _str_headerzNumpyDocString._str_header  s    c$i&''r   c                 0    g }|D ]  }|d|z  |z   gz  } |S )Nr   rG   )r   r   indentr'   r2   s        r   _str_indentzNumpyDocString._str_indent  s,    DCJ%&&C 
r   c                 F    | d   r| d   j                  dd      gdgz   S dgS )NrW   *z\*r%   )replacer"   s    r   _str_signaturezNumpyDocString._str_signature  s3    %--c59:bTAA4Kr   c                 "    | d   r	| d   dgz   S g S )NrX   r%   rG   r"   s    r   _str_summaryzNumpyDocString._str_summary  s    	?	?bT))Ir   c                 "    | d   r	| d   dgz   S g S )NrY   r%   rG   r"   s    r   _str_extended_summaryz$NumpyDocString._str_extended_summary  s#    "#*+rd22Ir   c                    g }| |   r|| j                  |      z  }| |   D ]  }g }|j                  r|j                  |j                         |j                  r|j                  |j                         |dj	                  |      gz  }|j
                  sudj	                  |j
                        j                         s|| j                  |j
                        z  } |dgz  }|S )Nr   r%   )r   rR   r   rS   rB   rT   r
   r   )r   rR   r'   parampartss        r   _str_param_listzNumpyDocString._str_param_list  s    :4##D))Cd::LL,::LL,

5)**::"''%**"5";";"=4++EJJ77C $ B4KC
r   c                 X    g }| |   r"|| j                  |      z  }|| |   z  }|dgz  }|S r?   )r   )r   rR   r'   s      r   _str_sectionzNumpyDocString._str_section  sA    :4##D))C4:CB4KC
r   c                    | d   sg S g }|| j                  d      z  }|dgz  }d}| d   D ]  \  }}t        |t              sJ g }|D ]3  \  }}|r
d| d| d}	n|r
d| d| d}	nd|z  }	|j                  |	       5 dj	                  |      }	||	gz  }|r'|| j                  d	j	                  |      g      z  }d}d
}|| j                  | j                  g      z  } |r|dgz  }|dgz  }|S )Nrc   r%   Tr   z:``z`%s`_, r   F)r   r   r   r   rB   r   empty_description)
r   	func_roler'   last_had_descr   rT   linksfuncr   links
             r   _str_see_alsozNumpyDocString._str_see_also  s8   JIt
++t
+KE4eT***E#
dtfBtfA.DykD63D"T>DT" $ 99U#DD6MCt''$(899 $ %t'')?)?(@AA% ,( B4KCt
r   c                     | d   }g }d}|j                  dd      }|rd}|d|z  gz  }|j                         D ]2  \  }}|dk(  rd}|dj                  |dj                  |            gz  }4 |r|S y)	Nrh   Fr   r%   Tz.. index:: %sz
   :{}: {}r   )r   r   formatrB   )r   idxr'   output_indexdefault_indexr   
referencess          r   
_str_indexzNumpyDocString._str_index  s    7m	2.L-/00#&99;GZ)#LL'':1FGHHC	 $/
 Jr   c                    g }|| j                         z  }|| j                         z  }|| j                         z  }dD ]  }|| j                  |      z  } || j	                  d      z  }|| j                  |      z  }dD ]  }|| j	                  |      z  } dD ]  }|| j                  |      z  } || j                         z  }dj                  |      S )N)rZ   r[   r\   r]   r`   r^   r_   re   )rd   rf   rg   )ra   rb   r   )r   r   r   r   r   r  r  rB   )r   r   r'   
param_listr   s        r   rP   zNumpyDocString.__str__  s    t""$$t  ""t))++BJ4''
33CB 	t  ,,t!!),,4A4$$Q''C 53J4''
33C 4t  yy~r   N)F)Tr      )r%   )*rC   rD   rE   rF   rp   r   r   r}   r   r   r   r   r   r   r   _role_funcbacktick
_funcplain	_funcnamer   _funcnamenext_descriptionr   r   r   r   r   r   r   r   rr   r{   r   r   r   r   r   r   r   r  r  rP   rG   r   r   rV   rV   p   s>   RB4 	B 	b	
 	2 	" 	B 	" 	 	B 	b 	2 	B 	 	B  	b!" 	B#$ 	%H* *, &)'&H!	
2J E>M/Ju},t3j@4GI%%fj9M!))&*=MEL

7Y.78I

		 	!	! $1	1 4:	: 			 	 	  		I 4l&D,%(N$( @$r   rV   c                 l    d|z  | S | j                  d      }dj                  fd|D              S )Nr   r   c              3   (   K   | ]	  }|z     y wr   rG   )r   r   
indent_strs     r   r   zindent.<locals>.<genexpr>%  s     3UZ!^Us   )r   rB   )strr   linesr  s      @r   r   r      s9    VJ
{IIdOE993U333r   c                 h    t        j                  dj                  |             j                  d      S )z"Deindent a list of lines maximallyr   )rk   rl   rB   r   )r  s    r   r   r   (  s%    ??499U+,22488r   c                 0    | dz   |t        |       z  z   dz   S rj   r   )r   styles     r   r   r   -  s    $;s4y(4//r   c                   2     e Zd Zddi fdZd Z fdZ xZS )FunctionDocr  Nc                     || _         || _        |&|t        d      t        j                  |      xs d}t
        j                  | ||       y )NzNo function or docstring givenr%   )_fr  r   r   getdocrV   r   )r   r  r   r   rs   s        r   r   zFunctionDoc.__init__2  sK    
;| !ABB..&,"Cc62r   c                    t        | j                  d| j                  j                        }t	        j
                  | j                        r/t        | j                  d| j                  j                        }||fS | j                  }||fS )NrC   __call__)getattrr"  	__class__rC   r   isclassr   )r   	func_namer  s      r   get_funczFunctionDoc.get_func<  sk    DGGZ1H1HI	??477#477J0@0@AD Y 77DYr   c                 8   d}| j                         \  }}ddd}| j                  rU| j                  |vrt        d| j                  z         |dj                  |j	                  | j                  d      |      z  }|t
        |   | j                        z  }|S )Nr%   functionmethod)r  methzWarning: invalid role %sz.. {}:: {}
    

)r   )r*  r  printr  r   superrP   )r   r'   r  r)  rolesr'  s        r   rP   zFunctionDoc.__str__D  s    --/i#!# ::zz&04::=>)004::r1J-68 8C 	uw44
r   )rC   rD   rE   r   r*  rP   __classcell__)r'  s   @r   r   r   1  s    "(d2 3 r   r   c                   H    e Zd ZdgZddei fdZed        Zed        Zd Z	y)ClassDocr%  Nr%   c                 Z   t        j                  |      s|t        d|z        || _        dt        j
                  v rddlm} n
t               }|j                  dd      | _
        |r|j                  d      s|dz  }|| _        |"|t        d      t        j                  |      }t        j!                  | |       |j                  d	g       }||u rd }|j                  d
g       }|j                  dd      r||urd }	d| j"                  fd| j$                  ffD ]y  \  }
}| |
   rg }t'        |      D ]Y  }||v s|r||vr	 t        j                  t)        | j                  |            }|j+                  t-        |d |	|                   [ || |
<   { y y y # t.        $ r Y qw xY w)Nz$Expected a class or None, but got %rsphinxr   )ALLshow_inherited_class_membersTr   z&No class or documentation string givenmemberszexclude-membersshow_class_membersc                 *    | sg S | j                         S r   )
splitlines)r   s    r   splitlines_xz'ClassDoc.__init__.<locals>.splitlines_xy  s    I<<>)r   rb   ra   r%   )r   r(  r   _clssysmodulessphinx.ext.autodocr7  objectr   show_inherited_membersendswith_modpydocr#  rV   r   methods
propertiessortedr&  r   rQ   AttributeError)r   clsr   
modulenamefunc_docrs   r7  _members_excluder=  fieldr   doc_listrR   doc_items                  r   r   zClassDoc.__init__Z  s   s#CcIJJ	s{{".(C&,jj2D':# j11#6#J	;{ !IJJ,,s#Cc*::i,s?H::/4::*D1hc6I*
 #,T\\!:".!@!BuE{!H &u H,!)d(.B$!',||GDIIt4L'MH$OO )$L4J KM !. #+DK!B 7J1$  . ! !s   AF	F*)F*c                    | j                   g S t        j                  | j                         D cg c]G  \  }}|j                  d      r|| j                  v r#t        |t              r| j                  |      r|I c}}S c c}}w N_)r>  r   
getmembersr   extra_public_methodsr   r   _is_show_memberr   rR   r  s      r   rG  zClassDoc.methods  s{    99I'.'9'9$))'D 5'Dt- 9 99"42,,T2	 'D 5 	5 5s   ABc                     | j                   g S t        j                  | j                         D cg c]P  \  }}|j                  d      s:|%t	        |t
              st        j                  |      r| j                  |      r|R c}}S c c}}w rT  )r>  r   rV  r   r   propertyisdatadescriptorrX  rY  s      r   rH  zClassDoc.properties  s    99I'.'9'9$))'D 5'Dt,\Zh%?--d3,,T2	 'D 5 	5 5s   AB
c                 P    | j                   ry|| j                  j                  vryy)NTF)rC  r>  __dict__)r   rR   s     r   rX  zClassDoc._is_show_member  s&    &&tyy)))r   )
rC   rD   rE   rW  r   r   r[  rG  rH  rX  rG   r   r   r4  r4  V  sG    &< $k2+h 5 5 5 5r   r4  r  r  )rF   r   rk   r   rF  warningsr   collectionsr   collections.abcr   r   rn   r?  r   r   	ExceptionrI   rQ   rV   r   r   r   r   r4  rG   r   r   <module>rc     s      	   " -  
I. I.X  {$<=	mW m`49
0". "JQ~ Qr   