U
    -eY                     @   s   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d ZG dd	 d	ZG d
d deZeddddg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ZdS )z=Extract reference documentation from the NumPy source tree.

    N)warn)
namedtuple)CallableMappingc                 C   s4   | r| d   s| d= q | r0| d   s0| d= q| S )z<Remove leading and trailing blank lines from a list of linesr   strip)l r
   [/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/pyarrow/vendored/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   s
   | j | S N)r   r   nr
   r
   r   __getitem__2   s    zReader.__getitem__c                 C   s
   d| _ d S )Nr   )_lr   r
   r
   r   r   5   s    zReader.resetc                 C   s,   |   s$| | j }|  jd7  _|S dS d S )N    )eofr   )r   outr
   r
   r   read8   s
    
zReader.readc                 C   s4   | | j d  D ] }| r  q0q|  j d7  _ qd S Nr   )r   r   )r   r	   r
   r
   r   seek_next_non_empty_line@   s    zReader.seek_next_non_empty_linec                 C   s   | j t| jkS r   r   lenr   r   r
   r
   r   r   G   s    z
Reader.eofc                 C   sb   | j }| |d  D ]J}||r0| || j    S |  j d7  _ |  r| || j d    S qg S r"   )r   r   )r   Zcondition_funcstartliner
   r
   r   read_to_conditionJ   s    zReader.read_to_conditionc                 C   s   |    dd }| |S )Nc                 S   s
   |    S r   r   r'   r
   r
   r   is_emptyW   s    z0Reader.read_to_next_empty_line.<locals>.is_empty)r#   r(   )r   r*   r
   r
   r   read_to_next_empty_lineT   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_unindented]   s    z:Reader.read_to_next_unindented_line.<locals>.is_unindented)r(   )r   r-   r
   r
   r   read_to_next_unindented_line\   s    z#Reader.read_to_next_unindented_liner   c                 C   s*   | j | t| jk r"| | j |  S dS d S Nr   r$   r   r
   r
   r   peeka   s    zReader.peekc                 C   s   d | j  S r/   )joinr   r   r   r
   r
   r   r*   g   s    zReader.is_emptyN)r   )__name__
__module____qualname____doc__r   r   r   r!   r#   r   r(   r+   r.   r0   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f }|S )Nr   	docstringz%s in %r)argshasattrr7   )r   messager
   r
   r   __str__l   s    

zParseError.__str__N)r2   r3   r4   r;   r
   r
   r
   r   r6   k   s   r6   	Parameternametypedescc                   @   s  e Zd ZdZddgg g g g g g g g g g g g g ddi dZdOd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dPddZdZdZdZde e d e d Zed d!Zed"d#Zd$Zed%e d& Zed'e d( e d) d d* e Zd+Zd,d- Zd.d/ Zd0d1 Zd2d3 Zed4d5 Z dQd7d8Z!dRd:d;Z"dSd=d>Z#d?d@ Z$dAdB Z%dCdD Z&dEdF Z'dGdH Z(dIdJ Z)dKdL Z*dTdMdNZ+dS )UNumpyDocStringzParses a numpydoc string to an abstract representation

    Instances define a mapping from section title to structured data.

    r   )	SignatureSummaryExtended Summary
ParametersReturnsYieldsReceivesRaisesWarnsOther Parameters
AttributesMethodsSee AlsoNotesWarnings
ReferencesExamplesindexNc              
   C   sh   |}t |d}t|| _t| j| _z| 	  W n* t
k
rb } z||_ W 5 d }~X Y nX d S )Nr   )textwrapdedentr   r   _doccopydeepcopysections_parsed_data_parser6   r7   )r   r7   configZorig_docstringer
   r
   r   r      s    
zNumpyDocString.__init__c                 C   s
   | j | S r   )rY   )r   keyr
   r
   r   r      s    zNumpyDocString.__getitem__c                 C   s,   || j kr| jd| dd n
|| j |< d S )NzUnknown section %sFerror)rY   _error_location)r   r]   valr
   r
   r   __setitem__   s    
zNumpyDocString.__setitem__c                 C   s
   t | jS r   )iterrY   r   r
   r
   r   __iter__   s    zNumpyDocString.__iter__c                 C   s
   t | jS r   )r%   rY   r   r
   r
   r   __len__   s    zNumpyDocString.__len__c                 C   s   | j   | j  rdS | j   }|dr4dS | j d }t|dkrt|dhdhfkrt|t|krd| j j	d d	 d
 }| j
d|||f dd |dt| p|dt| S )NF
.. index::Tr      -=r      z...z4potentially wrong underline length... 
%s 
%s in 
%sr^   )rU   r#   r   r0   r   
startswithr%   setr1   r   r`   )r   l1l2Zsnipr
   r
   r   _is_at_section   s    


0zNumpyDocString._is_at_sectionc                 C   sb   d}d}t |D ]\}}| r q&qt |d d d D ]\}}| r8 qNq8||t||  S )Nr   r   )	enumerater   r%   )r   docijr'   r
   r
   r   _strip   s    zNumpyDocString._stripc                 C   sJ   | j  }|  sF| j  sF| j d s6|dg7 }|| j  7 }q
|S )Nr   r   )rU   r+   ro   r   r0   r   )r   sectionr
   r
   r   _read_to_next_section   s    

z$NumpyDocString._read_to_next_sectionc                 c   sn   | j  sj|  }|d  }|dr<||dd  fV  q t|dk rPtV  q || |dd  fV  q d S )Nr   ..r   rj   )rU   r   rv   r   rk   r%   StopIterationrt   )r   r   r=   r
   r
   r   _read_sections   s    

zNumpyDocString._read_sectionsFc           	      C   s   t |}t|}g }| s|  }d|krV|jddd\}}| |  }}n|rfd| }}n
|d }}| }t |}t|}|t	||| q|S )Nz :r   )maxsplitr   )
dedent_linesr   r   r!   r   r   r.   r   appendr<   )	r   contentsingle_element_is_typerparamsheaderZarg_nameZarg_typer?   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_\.-]+)(|)roleZrolenextr=   Z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>[,\.])?rw   c                    s<  t |}g } fdd}g }|D ]   s2q"j }d}|rz|d}|drz|rzjd|d f dd |s d	r|   q"|r&g }|d
}| sq||\}	}
}||	|
f ||d  }|r|d dkr|dd  }qt	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}|r8|dn|d}||| fS )zMatch ':role:`name`' or 'name'.Error parsing See Also entry r   r=   Zname2)	_func_rgxmatchr`   groupend)textmr   r=   r'   r   r
   r   parse_item_name-  s    
z7NumpyDocString._parse_see_also.<locals>.parse_item_nameNr?   ZtrailingzGUnexpected comma or period after function list at index %d of line "%s"Fr^    Zallfuncsr   ,r   r   )r{   r   	_line_rgxr   r   r`   r   rk   r|   r   filter)r   r}   itemsr   restZ
line_matchdescriptionfuncsr   r=   r   Z	match_endr
   r   r   _parse_see_also   sD    		


zNumpyDocString._parse_see_alsoc                 C   sz   dd }i }| d}t|dkr<||d  dd |d< |D ]4}| d}t|d	kr@||d	  d||d < q@|S )
zT
        .. index: default
           :refguide: something, else, and more

        c                 S   s   dd | D S )Nc                 S   s   g | ]}|  qS r
   r   .0sr
   r
   r   
<listcomp>^  s     zFNumpyDocString._parse_index.<locals>.strip_each_in.<locals>.<listcomp>r
   )lstr
   r
   r   strip_each_in]  s    z2NumpyDocString._parse_index.<locals>.strip_each_inz::r   r   r   default:rj   )r   r%   )r   ru   r}   r   r    r'   r
   r
   r   _parse_indexW  s    

zNumpyDocString._parse_indexc                 C   s   |   rdS | j }ddd |D  }td}||rX|| d< |   sXqqXq|dk	rh|| d< |   s||  | d< dS )	z%Grab signature (if given) and summaryNr   c                 S   s   g | ]}|  qS r
   r   r   r
   r
   r   r   r  s     z1NumpyDocString._parse_summary.<locals>.<listcomp>z^([\w., ]+=)?\s*[\w\.]+\(.*\)$rA   rB   rC   )	ro   rU   r+   r1   r   recompiler   rv   )r   summaryZsummary_strcompiledr
   r
   r   _parse_summaryj  s    


zNumpyDocString._parse_summaryc                 C   s@  | j   |   t|  }tdd |D }d|k}d|k}|rT|rTd}t||sld|krld}t||D ]\}}|dsd	d
 |dD }d	|}| 
|r| d|d	| j jf  |dkr| || |< qp|dkr| j|dd| |< qp|dr| ||| d< qp|dkr2| || d< qp|| |< qpd S )Nc                 S   s   g | ]\}}|qS r
   r
   )r   ru   r}   r
   r
   r   r     s     z)NumpyDocString._parse.<locals>.<listcomp>rE   rF   z5Docstring contains both a Returns and Yields section.rG   z5Docstring contains a Receives section but not Yields.rw   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   )rD   rJ   rK   rL   )rE   rF   rH   rI   rG   T)r~   rf   rR   rM   )rU   r   r   r   ry   rl   
ValueErrorrk   r   r1   getr`   r   r   r   r   )r   rX   Zsection_namesZhas_returnsZ
has_yieldsmsgru   r}   r
   r
   r   rZ     s@    



 
zNumpyDocString._parsec                 C   s$   t | dr| jS t | dr | jS d S )N_cls_f)r9   r   r   r   r
   r
   r   _obj  s
    

zNumpyDocString._objTc                 C   sx   | j d k	r^zt| j }W n tk
r2   d }Y nX |d| j j 7 }||rXd| dnd7 }|rlt|nt| d S )Nz in the docstring of z in .r   )r   inspectgetsourcefile	TypeErrorr2   r   r   )r   r   r_   filenamer
   r
   r   r`     s    


zNumpyDocString._error_locationrh   c                 C   s   |t || gS r   )r%   )r   r=   symbolr
   r
   r   _str_header  s    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   rq   r   r
   r   r   _str_indent  s    zNumpyDocString._str_indentc                 C   s&   | d r | d  ddgdg S dgS )NrA   *z\*r   )replacer   r
   r
   r   _str_signature  s    zNumpyDocString._str_signaturec                 C   s   | d r| d dg S g S )NrB   r   r
   r   r
   r
   r   _str_summary  s    zNumpyDocString._str_summaryc                 C   s   | d r| d dg S g S )NrC   r   r
   r   r
   r
   r   _str_extended_summary  s    z$NumpyDocString._str_extended_summaryc                 C   s   g }| | r||  |7 }| | D ]b}g }|jr<||j |jrN||j |d|g7 }|jr"d|j r"|| |j7 }q"|dg7 }|S )Nz : r   )r   r=   r|   r>   r1   r?   r   r   )r   r=   r    parampartsr
   r
   r   _str_param_list  s    
zNumpyDocString._str_param_listc                 C   s4   g }| | r0||  |7 }|| | 7 }|dg7 }|S r/   )r   )r   r=   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sJtg }|D ]>\}}|rld||f }	n|r~d||f }	nd| }	||	 qRd|}	||	g7 }|r|| d|g7 }d}q4d}|| | jg7 }q4|r|dg7 }|dg7 }|S )	NrM   r   Tz:%s:`%s`z`%s`_, r   F)r   r   r   AssertionErrorr|   r1   r   empty_description)
r   	func_roler    Zlast_had_descr   r?   linksfuncr   linkr
   r
   r   _str_see_also  s6    




zNumpyDocString._str_see_alsoc                 C   sv   | d }g }d}| dd}|r$d}|d| g7 }| D ].\}}|dkrLq:d}|d|d|f g7 }q:|rr|S dS )	NrR   Fr   r   Tz.. index:: %sz
   :%s: %sr   )r   r   r1   )r   idxr    Zoutput_indexZdefault_indexru   Z
referencesr
   r
   r   
_str_index  s    zNumpyDocString._str_indexc                 C   s   g }||   7 }||  7 }||  7 }dD ]}|| |7 }q,|| d7 }|| |7 }dD ]}|| |7 }q`dD ]}|| |7 }qx||  7 }d|S )N)rD   rE   rF   rG   rJ   rH   rI   rO   )rN   rP   rQ   )rK   rL   r   )r   r   r   r   r   r   r   r1   )r   r   r    Z
param_listr   r
   r
   r   r;     s    zNumpyDocString.__str__)N)F)T)rh   )r   )r   ),r2   r3   r4   r5   rX   r   r   rb   rd   re   ro   rt   rv   ry   r   _roleZ_funcbacktickZ
_funcplainZ	_funcnamer   Z_funcnamenextZ_descriptionr   r   r   r   r   r   r   r   rZ   propertyr   r`   r   r   r   r   r   r   r   r   r   r;   r
   r
   r
   r   r@   v   s   

'7&



 r@   c                 C   s   t d| dS )z"Deindent a list of lines maximallyr   )rS   rT   r1   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 kr2|d kr$tdt|p0d}|d kr>i }t| || d S )NzNo function or docstring givenr   )r   r   r   r   getdocr@   r   )r   r   r   rq   r[   r
   r
   r   r   4  s    zFunctionDoc.__init__c                 C   s@   t | jd| jj}t| jr2t | jd| jj}n| j}||fS )Nr2   __call__)getattrr   	__class__r2   r   isclassr   )r   	func_namer   r
   r
   r   get_func@  s
    zFunctionDoc.get_funcc                    sj   d}|   \}}ddd}| jrR| j|kr8td| j  |d|| jd|f 7 }|t j| jd7 }|S )Nr   functionmethod)r   methzWarning: invalid role %sz.. %s:: %s
    

)r   )r   r   printr   superr;   )r   r    r   r   Zrolesr   r
   r   r;   H  s    
zFunctionDoc.__str__)r   NN)r2   r3   r4   r   r   r;   __classcell__r
   r
   r   r   r   3  s   
r   c                   @   s   e Zd ZdddZdS )ObjDocNc                 C   s&   || _ |d kri }tj| ||d d S )Nr[   )r   r@   r   )r   objrq   r[   r
   r
   r   r   [  s    zObjDoc.__init__)NN)r2   r3   r4   r   r
   r
   r
   r   r   Z  s   r   c                   @   sD   e Zd ZdgZddedfddZedd Zedd	 Zd
d Z	dS )ClassDocr   Nr   c              
   C   s  t |s|d k	rtd| || _dtjkr<ddlm} nt }|d krNi }|	dd| _
|rr|dsr|d7 }|| _|d kr|d krtdt|}t| | |	d	g }||krd }|	d
g }|	ddr||k	rdd }	d| jfd| jffD ]\}
}| |
 sg }t|D ]h}||ks|r<||kr<qz,tt| j|}|t|d|	| W n tk
r~   Y nX q|| |
< qd S )Nz$Expected a class or None, but got %rZsphinxr   )ALLZshow_inherited_class_membersTr   z&No class or documentation string givenmemberszexclude-membersZshow_class_membersc                 S   s   | sg S |   S d S r   )
splitlines)r   r
   r
   r   splitlines_x  s    z'ClassDoc.__init__.<locals>.splitlines_xrL   rK   r   )r   r   r   r   sysmodulesZsphinx.ext.autodocr   objectr   show_inherited_membersendswith_modpydocr   r@   r   methods
propertiessortedr   r|   r<   AttributeError)r   clsrq   
modulenamefunc_docr[   r   Z_membersZ_excluder   fieldr   Zdoc_listr=   Zdoc_itemr
   r
   r   r   f  s\    
 


zClassDoc.__init__c                    s(    j d krg S  fddt j D S )Nc                    s<   g | ]4\}}| d r | jkrt|tr |r|qS )_)rk   extra_public_methodsr   r   _is_show_memberr   r=   r   r   r
   r   r     s    



z$ClassDoc.methods.<locals>.<listcomp>r   r   
getmembersr   r
   r   r   r     s    
zClassDoc.methodsc                    s(    j d krg S  fddt j D S )Nc                    sD   g | ]<\}}| d s|dks2t|ts2t|r |r|qS )r   N)rk   r   r   r   isdatadescriptorr   r   r   r
   r   r     s    
 


z'ClassDoc.properties.<locals>.<listcomp>r   r   r
   r   r   r     s    
zClassDoc.propertiesc                 C   s   | j r
dS || jjkrdS dS )NTF)r   r   __dict__)r   r=   r
   r
   r   r     s
    zClassDoc._is_show_member)
r2   r3   r4   r   r   r   r   r   r   r   r
   r
   r
   r   r   b  s   
6
	
	r   c                 C   s   |d kr<t | rd}n$t | r(d}nt| tr8d}nd}|d krHi }|dkr`t| t||dS |dkrvt| ||dS |d krt| }t	| ||dS d S )	Nclassmoduler   r   )r   rq   r[   )r   r   )rq   r[   r   )
r   r   ismoduler   r   r   r   r   r   r   )r   whatrq   r[   r
   r
   r   get_doc_object  s"    



r  )NNN)r5   r   rS   r   r   warningsr   collectionsr   collections.abcr   r   rV   r   r   r   	Exceptionr6   r<   r@   r{   r   r   r   r  r
   r
   r
   r   <module>   s,   	M   ;'V