o
    Ö­j ]  ã                   @   sþ   d Z ddlZddl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
mZ ddlmZ ddlmZ dd„ ZG d	d
„ d
ƒZG dd„ deƒZedg d¢ƒZG dd„ deƒZdd„ ZG dd„ deƒZG dd„ deƒZG dd„ deƒZdddeeefdd„ZdS )z;Extract reference documentation from the NumPy source tree.é    N)Ú
namedtuple)ÚCallableÚMapping)Úcached_property)Úwarnc                 C   sP   | r| d   ¡ s| d= | r| d   ¡ r| r&| d   ¡ s&| d= | r&| d   ¡ r| S )z<Remove leading and trailing blank lines from a list of linesr   éÿÿÿÿ©Ústrip)Úl© r   úR/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/_lib/_docscrape.pyÚstrip_blank_lines   s   ÿÿr   c                   @   sj   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zddd„Zdd„ ZdS )ÚReaderzA line-based string reader.c                 C   s*   t |tƒr	|| _n| d¡| _|  ¡  dS )zs
        Parameters
        ----------
        data : str
           String with lines separated by '\n'.

        Ú
N)Ú
isinstanceÚlistÚ_strÚsplitÚreset)ÚselfÚdatar   r   r   Ú__init__   s   
zReader.__init__c                 C   ó
   | j | S ©N)r   ©r   Únr   r   r   Ú__getitem__+   ó   
zReader.__getitem__c                 C   s
   d| _ d S )Nr   )Ú_l©r   r   r   r   r   .   r   zReader.resetc                 C   s(   |   ¡ s| | j }|  jd7  _|S dS )Né   Ú )Úeofr   )r   Úoutr   r   r   Úread1   s
   
zReader.readc                 C   s4   | | j d … D ]}| ¡ r d S |  j d7  _ qd S ©Nr    )r   r	   )r   r
   r   r   r   Úseek_next_non_empty_line9   s
   üzReader.seek_next_non_empty_linec                 C   s   | j t| jƒkS r   ©r   Úlenr   r   r   r   r   r"   @   ó   z
Reader.eofc                 C   sb   | j }| |d … D ]%}||ƒr| || j …   S |  j d7  _ |  ¡ r.| || j d …   S q	g S r%   )r   r"   )r   Úcondition_funcÚstartÚliner   r   r   Úread_to_conditionC   s   ÿzReader.read_to_conditionc                 C   s   |   ¡  dd„ }|  |¡S )Nc                 S   s
   |   ¡  S r   r   ©r,   r   r   r   Úis_emptyP   r   z0Reader.read_to_next_empty_line.<locals>.is_empty)r&   r-   )r   r/   r   r   r   Úread_to_next_empty_lineM   s   
zReader.read_to_next_empty_linec                 C   s   dd„ }|   |¡S )Nc                 S   s   |   ¡ ot|  ¡ ƒt| ƒkS r   )r	   r(   Úlstripr.   r   r   r   Úis_unindentedV   s   z:Reader.read_to_next_unindented_line.<locals>.is_unindented)r-   )r   r2   r   r   r   Úread_to_next_unindented_lineU   s   
z#Reader.read_to_next_unindented_liner   c                 C   s&   | j | t| jƒk r| | j |  S dS ©Nr!   r'   r   r   r   r   Úpeek[   s   zReader.peekc                 C   s   d  | j¡ ¡  S r4   )Újoinr   r	   r   r   r   r   r/   a   ó   zReader.is_emptyN)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r$   r&   r"   r-   r0   r3   r5   r/   r   r   r   r   r      s    

r   c                   @   s   e Zd Zdd„ ZdS )Ú
ParseErrorc                 C   s(   | j d }t| dƒr|› d| j›�}|S )Nr   Ú	docstringú in )ÚargsÚhasattrr=   )r   Úmessager   r   r   Ú__str__f   s   

zParseError.__str__N)r8   r9   r:   rB   r   r   r   r   r<   e   s    r<   Ú	Parameter)ÚnameÚtypeÚdescc                   @   sà  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d`dd„Zdd„ Zdd„ Zdd„ Zdd„ Z	d d!„ Z
d"d#„ Zd$d%„ Zd&d'„ Zdad)d*„Zd+Zd,Zd-Zd.e e d/ e d0 Ze d1d2¡Ze d3d4¡Zd5Ze d6e d7 ¡Ze d8e d9 e d: d0 d; e ¡Zd<Zd=d>„ Zd?d@„ ZdAdB„ ZdCdD„ ZedEdF„ ƒZ dbdHdI„Z!dcdKdL„Z"dddNdO„Z#dPdQ„ Z$dRdS„ Z%dTdU„ Z&dVdW„ Z'dXdY„ Z(dZd[„ Z)d\d]„ Z*ded^d_„Z+dS )fÚNumpyDocStringzƒParses a numpydoc string to an abstract representation

    Instances define a mapping from section title to structured data.

    Ú	Signaturer!   ÚSummaryúExtended SummaryÚ
ParametersÚ
AttributesÚMethodsÚReturnsÚYieldsÚReceivesúOther ParametersÚRaisesÚWarnsÚWarningsúSee AlsoÚNotesÚ
ReferencesÚExamplesÚindexNc              
   C   s\   |}t  |¡ d¡}t|ƒ| _t | j¡| _z|  	¡  W d S  t
y- } z||_‚ d }~ww )Nr   )ÚtextwrapÚdedentr   r   Ú_docÚcopyÚdeepcopyÚsectionsÚ_parsed_dataÚ_parser<   r=   )r   r=   ÚconfigÚorig_docstringÚer   r   r   r   Œ   s   
€þzNumpyDocString.__init__c                 C   r   r   )r`   )r   Úkeyr   r   r   r   ™   r   zNumpyDocString.__getitem__c                 C   s0   || j vr| jd|› �dd� d S || j |< d S )NzUnknown section F©Úerror)r`   Ú_error_location)r   re   Úvalr   r   r   Ú__setitem__œ   s   
zNumpyDocString.__setitem__c                 C   ó
   t | jƒS r   )Úiterr`   r   r   r   r   Ú__iter__¢   r   zNumpyDocString.__iter__c                 C   rk   r   )r(   r`   r   r   r   r   Ú__len__¥   r   zNumpyDocString.__len__c                 C   sÒ   | j  ¡  | j  ¡ rdS | j  ¡  ¡ }| d¡rdS | j  d¡ ¡ }t|ƒdkrWt|ƒdhdhfv rWt|ƒt|ƒkrWd | j j	d d	… ¡d
 }| j
d|› d|› d|› �dd� | dt|ƒ ¡ph| dt|ƒ ¡S )NFú
.. index::Tr    é   ú-ú=r   é   z...z'potentially wrong underline length... 
z 
z in 
rf   )r\   r&   r"   r5   r	   Ú
startswithr(   Úsetr6   r   rh   )r   Úl1Úl2Úsnipr   r   r   Ú_is_at_section¨   s   


0þ$zNumpyDocString._is_at_sectionc                 C   sb   d}d}t |ƒD ]
\}}| ¡ r nqt |d d d… ƒD ]
\}}| ¡ r& nq||t|ƒ| … S )Nr   r   )Ú	enumerater	   r(   )r   ÚdocÚiÚjr,   r   r   r   Ú_strip¼   s   ÿÿzNumpyDocString._stripc                 C   sZ   | j  ¡ }|  ¡ s+| j  ¡ s+| j  d¡ ¡ s|dg7 }|| j  ¡ 7 }|  ¡ s+| j  ¡ r|S )Nr   r!   )r\   r0   ry   r"   r5   r	   )r   Úsectionr   r   r   Ú_read_to_next_sectionÉ   s   

üz$NumpyDocString._read_to_next_sectionc                 c   s|   � | j  ¡ s<|  ¡ }|d  ¡ }| d¡r||dd … fV  nt|ƒdk r)tV  n||  |dd … ¡fV  | j  ¡ rd S d S )Nr   ú..r    rs   )r\   r"   r€   r	   rt   r(   ÚStopIterationr~   )r   r   rD   r   r   r   Ú_read_sectionsÔ   s   €

÷zNumpyDocString._read_sectionsFc           	      C   sª   t |ƒ}t|ƒ}g }| ¡ sS| ¡  ¡ }d|v r"|jddd�\}}n| d¡r-|d d… }|r5d|}}n|d}}| ¡ }t |ƒ}t|ƒ}| 	t
|||ƒ¡ | ¡ r|S )Nú : r    )Úmaxsplitz :éþÿÿÿr!   )Údedent_linesr   r"   r$   r	   r   Úendswithr3   r   ÚappendrC   )	r   ÚcontentÚsingle_element_is_typeÚrÚparamsÚheaderÚarg_nameÚarg_typerF   r   r   r   Ú_parse_param_listà   s$   

íz NumpyDocString._parse_param_listz:(?P<role>(py:)?\w+):z'`(?P<name>(?:~\w+\.)?[a-zA-Z0-9_\.-]+)`z(?P<name2>[a-zA-Z0-9_\.-]+)ú(ú|ú)ÚroleÚrolenextrD   Ú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                    s8  t |ƒ}g }‡ ‡fdd„}g }|D ]ˆ‰ ˆ  ¡ sqˆj ˆ ¡}d}|r<| d¡}| d¡r<|r<ˆjd| d¡ˆ f dd� |sKˆ  d	¡rK| ˆ  ¡ ¡ q|r‘g }| d
¡}	 | ¡ sZn'||ƒ\}	}
}| |	|
f¡ ||d…  ¡ }|r€|d dkr€|dd…  ¡ }qUt	t
d|gƒƒ}| ||f¡ qˆ dˆ ›�¡ q|S )zµ
        func_name : Descriptive text
            continued text
        another_func_name : Descriptive text
        func_name1, func_name2, :meth:`func_name`, func_name3

        c                    sP   ˆj  | ¡}|sˆ dˆ ›�¡ | d¡}|r| d¡n| d¡}||| ¡ fS )zMatch ':role:`name`' or 'name'.úError parsing See Also entry r•   rD   Úname2)Ú	_func_rgxÚmatchrh   ÚgroupÚend)ÚtextÚmr•   rD   ©r,   r   r   r   Úparse_item_name/  s   
z7NumpyDocString._parse_see_also.<locals>.parse_item_nameNrF   ÚtrailingzGUnexpected comma or period after function list at index %d of line "%s"Frf   ú ÚallfuncsTr   ú,r    r˜   )r‡   r	   Ú	_line_rgxr›   rœ   rh   r�   rt   r‰   r   Úfilter)r   rŠ   Úitemsr¡   ÚrestÚ
line_matchÚdescriptionÚfuncsrž   rD   r•   Ú	match_endr   r    r   Ú_parse_see_also"  sH   		
ÿý
ùzNumpyDocString._parse_see_alsoc                 C   sz   dd„ }i }|  d¡}t|ƒdkr||d   d¡ƒd |d< |D ]}|  d¡}t|ƒd	kr:||d	   d¡ƒ||d < q |S )
zU
        .. index:: default
           :refguide: something, else, and more

        c                 S   s   dd„ | D ƒS )Nc                 S   ó   g | ]}|  ¡ ‘qS r   r   ©Ú.0Úsr   r   r   Ú
<listcomp>b  ó    zFNumpyDocString._parse_index.<locals>.strip_each_in.<locals>.<listcomp>r   )Úlstr   r   r   Ústrip_each_ina  s   z2NumpyDocString._parse_index.<locals>.strip_each_inz::r    r¥   r   Údefaultú:rs   )r   r(   )r   r   rŠ   r¶   r#   r,   r   r   r   Ú_parse_indexZ  s   

€zNumpyDocString._parse_indexc                 C   s„   |   ¡ rdS 	 | j ¡ }d dd„ |D ƒ¡ ¡ }t d¡}| |¡r+|| d< |   ¡ s+q	 |dur4|| d< |   ¡ s@|  ¡ | d	< dS dS )
z%Grab signature (if given) and summaryNTr£   c                 S   r¯   r   r   r°   r   r   r   r³   v  r´   z1NumpyDocString._parse_summary.<locals>.<listcomp>z^([\w., ]+=)?\s*[\w\.]+\(.*\)$rH   rI   rJ   )	ry   r\   r0   r6   r	   ÚreÚcompiler›   r€   )r   ÚsummaryÚsummary_strÚcompiledr   r   r   Ú_parse_summaryn  s    


ÿzNumpyDocString._parse_summaryc                 C   s  | j  ¡  |  ¡  t|  ¡ ƒ}dd„ |D ƒ}d|v }|s&d|v r&d}t|ƒ‚|D ]c\}}| d¡sSdd„ | d	¡D ƒ}d	 |¡}|  	|¡rS|  
d
|d | j j¡f ¡ |dv r_|  |¡| |< q(|dv rm| j|dd�| |< q(| d¡r{|  ||¡| d< q(|dkr‡|  |¡| d< q(|| |< q(d S )Nc                 S   s   h | ]\}}|’qS r   r   )r±   r   rŠ   r   r   r   Ú	<setcomp>‰  r´   z(NumpyDocString._parse.<locals>.<setcomp>rO   rP   z5Docstring contains a Receives section but not Yields.r�   c                 s   s   � | ]}|  ¡ V  qd S r   )Ú
capitalizer°   r   r   r   Ú	<genexpr>“  s   € z(NumpyDocString._parse.<locals>.<genexpr>r£   z#The section %s appears twice in  %sr   )rK   rQ   rL   rM   )rN   rO   rR   rS   rP   T)r‹   ro   rY   rU   )r\   r   r¿   r   rƒ   Ú
ValueErrorrt   r   r6   Úgetrh   r   r‘   r¹   r®   )r   r_   Úsection_namesÚ
has_yieldsÚmsgr   rŠ   r   r   r   ra   „  s<   



ÿÿÿ

ëzNumpyDocString._parsec                 C   s$   t | dƒr| jS t | dƒr| jS d S )NÚ_clsÚ_f)r@   rÈ   rÉ   r   r   r   r   Ú_obj¨  s
   

zNumpyDocString._objTc                 C   s¨   | j d urFzt | j ¡}W n ty   d }Y nw t| j dd ƒ}|d u r/tt| j dd ƒdd ƒ}|d ur:|d|› �7 }||rCd|› d�nd7 }|rLt|ƒ‚t|dd� d S )	Nr8   Ú	__class__z in the docstring of r>   Ú.r!   rp   )Ú
stacklevel)rÊ   ÚinspectÚgetsourcefileÚ	TypeErrorÚgetattrrÃ   r   )r   rÇ   rg   ÚfilenamerD   r   r   r   rh   °  s   
ÿzNumpyDocString._error_locationrq   c                 C   s   |t |ƒ| gS r   )r(   )r   rD   Úsymbolr   r   r   Ú_str_headerÆ  r)   zNumpyDocString._str_headeré   c                    s   ‡ fdd„|D ƒS )Nc                    s   g | ]}d ˆ  | ‘qS )r£   r   )r±   r,   ©Úindentr   r   r³   Ê  s    z.NumpyDocString._str_indent.<locals>.<listcomp>r   )r   r{   r×   r   rÖ   r   Ú_str_indentÉ  r7   zNumpyDocString._str_indentc                 C   s&   | d r| d   dd¡gdg S dgS )NrH   Ú*z\*r!   )Úreplacer   r   r   r   Ú_str_signatureÌ  s   zNumpyDocString._str_signaturec                 C   ó   | d r| d dg S g S )NrI   r!   r   r   r   r   r   Ú_str_summaryÑ  ó   zNumpyDocString._str_summaryc                 C   rÜ   )NrJ   r!   r   r   r   r   r   Ú_str_extended_summaryÖ  rÞ   z$NumpyDocString._str_extended_summaryc                 C   s”   g }| | rH||   |¡7 }| | D ]1}g }|jr| |j¡ |jr'| |j¡ |d |¡g7 }|jrBd |j¡ ¡ rB||  |j¡7 }q|dg7 }|S )Nr„   r!   )rÔ   rD   r‰   rE   r6   rF   r	   rØ   )r   rD   r#   ÚparamÚpartsr   r   r   Ú_str_param_listÛ  s   €
zNumpyDocString._str_param_listc                 C   s4   g }| | r||   |¡7 }|| | 7 }|dg7 }|S r4   )rÔ   )r   rD   r#   r   r   r   Ú_str_sectionë  s   
zNumpyDocString._str_sectionc           
      C   s
  | d sg S g }||   d¡7 }|dg7 }d}| d D ]\\}}t|tƒs%J ‚g }|D ]'\}}|r9d|› d|› d�}	n|rEd|› d|› d�}	nd|› d�}	| |	¡ q)d |¡}	||	g7 }|rk||  d	 |¡g¡7 }d}qd
}||  | jg¡7 }q|r~|dg7 }|dg7 }|S )NrU   r!   Tr¸   z:`ú`z`_ú, r£   F)rÔ   r   r   r‰   r6   rØ   Úempty_description)
r   Ú	func_roler#   Úlast_had_descr¬   rF   ÚlinksÚfuncr•   Úlinkr   r   r   Ú_str_see_alsoó  s6   




zNumpyDocString._str_see_alsoc                 C   s|   | d }g }d}|  dd¡}|rd}|d|› �g7 }| ¡ D ]\}}|dkr'qd}|d|› dd	 |¡› �g7 }q|r<|S dS )
NrY   Fr·   r!   Tz.. index:: z   :z: rå   )rÄ   r¨   r6   )r   Úidxr#   Úoutput_indexÚdefault_indexr   Ú
referencesr   r   r   Ú
_str_index  s   zNumpyDocString._str_indexc                 C   s°   g }||   ¡ 7 }||  ¡ 7 }||  ¡ 7 }||  d¡7 }dD ]	}||  |¡7 }qdD ]	}||  |¡7 }q)||  d¡7 }||  |¡7 }dD ]	}||  |¡7 }qC||  ¡ 7 }d |¡S )NrK   )rL   rM   )rN   rO   rP   rQ   rR   rS   rT   )rV   rW   rX   r   )rÛ   rÝ   rß   râ   rã   rì   rñ   r6   )r   rç   r#   Ú
param_listr²   r   r   r   rB   $  s   
zNumpyDocString.__str__r   )F)T)rq   )rÕ   )r!   ),r8   r9   r:   r;   r_   r   r   rj   rm   rn   ry   r~   r€   rƒ   r‘   Ú_roleÚ_funcbacktickÚ
_funcplainÚ	_funcnamerÚ   Ú_funcnamenextÚ_descriptionrº   r»   rš   r¦   ræ   r®   r¹   r¿   ra   ÚpropertyrÊ   rh   rÔ   rØ   rÛ   rÝ   rß   râ   rã   rì   rñ   rB   r   r   r   r   rG   p   s¸    ÿþýüûúùø	÷
öõôóòñðïî

+þýüûúùøÿ8$



 rG   c                 C   s   t  d | ¡¡ d¡S )z"Deindent a list of lines maximallyr   )rZ   r[   r6   r   )Úlinesr   r   r   r‡   =  s   r‡   c                       s.   e Zd Zd	dd„Zdd„ Z‡ fdd„Z‡  ZS )
ÚFunctionDocrê   Nc                 C   sP   || _ || _|d u r|d u rtdƒ‚t |¡pd}|d u ri }t | ||¡ d S )NzNo function or docstring givenr!   )rÉ   ró   rÃ   rÎ   ÚgetdocrG   r   )r   rê   r•   r{   rb   r   r   r   r   C  s   zFunctionDoc.__init__c                 C   sF   t | jd| jjƒ}t | j¡rt | jd| jjƒ}||fS | j}||fS )Nr8   Ú__call__)rÑ   rÉ   rË   r8   rÎ   Úisclassr   )r   Ú	func_namerê   r   r   r   Úget_funcO  s   ÿzFunctionDoc.get_funcc                    sr   d}|   ¡ \}}dddœ}| jr-| j|vrtd| j› �ƒ |d| | jd¡› d|› d�7 }|tƒ j| jd	�7 }|S )
Nr!   ÚfunctionÚmethod)rê   ÚmethzWarning: invalid role z.. z:: z
    

)rç   )r   ró   ÚprintrÄ   ÚsuperrB   )r   r#   rê   rÿ   Úroles©rË   r   r   rB   W  s   

 zFunctionDoc.__str__)rê   NN)r8   r9   r:   r   r   rB   Ú__classcell__r   r   r  r   rû   B  s    
rû   c                   @   s   e Zd Zddd„ZdS )ÚObjDocNc                 C   s&   || _ |d u r	i }tj| ||d� d S )N©rb   )rÉ   rG   r   )r   Úobjr{   rb   r   r   r   r   h  s   zObjDoc.__init__)NN)r8   r9   r:   r   r   r   r   r   r	  g  s    r	  c                   @   sP   e Zd ZdgZddedfdd„Zedd„ ƒZedd	„ ƒZe	d
d„ ƒZ
dd„ ZdS )ÚClassDocrý   Nr!   c              
   C   sˆ  t  |¡s|d urtd|›�ƒ‚|| _dtjv rddlm} ntƒ }|d u r(i }| 	dd¡| _
|r:| d¡s:|d7 }|| _|d u rN|d u rItdƒ‚t |¡}t | |¡ | 	d	g ¡}||u r`d }| 	d
g ¡}| 	dd¡r¾||urÀdd„ }	d| jfd| jffD ]C\}
}| |
 s½g }t|ƒD ],}||v s˜|r™||vr™qŒzt t| j|ƒ¡}| t|d|	|ƒƒ¡ W qŒ ty¸   Y qŒw || |
< q~d S d S d S )Nz"Expected a class or None, but got Úsphinxr   )ÚALLÚshow_inherited_class_membersTrÌ   z&No class or documentation string givenÚmemberszexclude-membersÚshow_class_membersc                 S   s   | sg S |   ¡ S r   )Ú
splitlines)r²   r   r   r   Úsplitlines_x’  s   z'ClassDoc.__init__.<locals>.splitlines_xrM   rL   r!   )rÎ   rþ   rÃ   rÈ   ÚsysÚmodulesÚsphinx.ext.autodocr  ÚobjectrÄ   Úshow_inherited_membersrˆ   Ú_modÚpydocrü   rG   r   ÚmethodsÚ
propertiesÚsortedrÑ   r‰   rC   ÚAttributeError)r   Úclsr{   Ú
modulenameÚfunc_docrb   r  Ú_membersÚ_excluder  Úfieldr¨   Údoc_listrD   Údoc_itemr   r   r   r   r  sR   

þÿ€êzClassDoc.__init__c                    ó(   ˆ j d u rg S ‡ fdd„t ˆ j ¡D ƒS )Nc                    s<   g | ]\}}|  d ¡r|ˆ jv rt|tƒrˆ  |¡r|‘qS )Ú_)rt   Úextra_public_methodsr   r   Ú_is_show_member©r±   rD   rê   r   r   r   r³   ¬  s    ü
ÿþýz$ClassDoc.methods.<locals>.<listcomp>©rÈ   rÎ   Ú
getmembersr   r   r   r   r  ¨  ó
   


þzClassDoc.methodsc                    r'  )Nc                    sV   g | ]'\}}|  d ¡s)ˆ  |ˆ j¡s)|du s"t|ttfƒs"t |¡rˆ  |¡r|‘qS )r(  N)	rt   Ú_should_skip_memberrÈ   r   rù   r   rÎ   Úisdatadescriptorr*  r+  r   r   r   r³   º  s    üûÿþüúz'ClassDoc.properties.<locals>.<listcomp>r,  r   r   r   r   r  ¶  r.  zClassDoc.propertiesc                 C   s(   t |tƒot|dƒot|dƒo| |jv S )NÚ_asdictÚ_fields)Ú
issubclassÚtupler@   r2  )rD   Úklassr   r   r   r/  É  s   
ÿþúzClassDoc._should_skip_memberc                 C   s   | j p|| jjv S r   )r  rÈ   Ú__dict__)r   rD   r   r   r   r*  Ô  s   
üzClassDoc._is_show_member)r8   r9   r:   r)  rû   r   rù   r  r  Ústaticmethodr/  r*  r   r   r   r   r  o  s    6



r  c                 C   s–   |d u rt  | ¡rd}nt  | ¡rd}n
t| tƒrd}nd}|d u r$i }|dkr0|| |||d�S |dv r;|| ||d�S |d u rDt | ¡}|| ||d�S )	NÚclassÚmoduler  r  )r!  r{   rb   )r  r  )r{   rb   r
  )rÎ   rþ   Úismoduler   r   r  rü   )r  Úwhatr{   rb   Ú	class_docr!  Úobj_docr   r   r   Úget_doc_objectÝ  s"   	



r>  )r;   r]   rÎ   r  rº   r  rZ   Úcollectionsr   Úcollections.abcr   r   Ú	functoolsr   Úwarningsr   r   r   Ú	Exceptionr<   rC   rG   r‡   rû   r	  r  r>  r   r   r   r   Ú<module>   s<   	L   P%pù