o
    ]ia                   	   @   s   d Z ddlZddlZddlZddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ deje dedefdd	Zd
edefddZejdfdedededefddZdS )zReST-style docstring parsing.    N   )DEPRECATION_KEYWORDSPARAM_KEYWORDSRAISES_KEYWORDSRETURNS_KEYWORDSYIELDS_KEYWORDS	DocstringDocstringDeprecatedDocstringMetaDocstringParamDocstringRaisesDocstringReturnsDocstringStyle
ParseErrorRenderingStyleargsdescreturnc                 C   s  | d }|t v rZt| dkr$| \}}}|dr!d}|d d }nd}nt| dkr3| \}}d }d }ntd| d	tjd
|tjd}|rN|ddnd }t	| |||||dS |t
tB v rt| dkrk| d }nt| dkrtd }ntd| d	t| |||tv dS |tv rtjd|tjd}t| |r|dnd |r|ddS |dS |tv rt| dkr| d }nt| dkrd }ntd| d	t| ||dS t| |dS )Nr      ?TF   z$Expected one or two arguments for a z	 keyword.z.*defaults to (.+)flagsr   .)r   descriptionarg_name	type_nameis_optionaldefaultz#Expected one or no arguments for a )r   r   r   is_generatorz7^(?P<version>v?((?:\d+)(?:\.[0-9a-z\.]+))) (?P<desc>.+)versionr   )r   r!   r   )r   r   r   )r   r   )r   lenendswithr   rematchDOTALLgrouprstripr   r   r   r   r   searchIr	   r   r   r
   )r   r   keyr   r   r   r%   r    r,   Z/var/www/html/stock_analysis/be/venv/lib/python3.10/site-packages/docstring_parser/rest.py_build_meta   s   


	



r.   textc                 C   sz  t tjd}| s
|S t| } tjd| tjd}|r+| d|  }| | d }n| }d}|	dd}|d p:d|_
t|dkr[|d pGd}|d|_|d	|_| pYd|_i }i }tjd
|tjtjB dD ]}|d}	|	suqkz|	d	dd\}
}W n ty } z	td|	 d|d}~ww |
	 }| }d|v r|	dd\}}|d t| }t|dkr|d dkr|||d < qkt|dv r|d dkr||t|dkrdn|d < qk|jt|| qk|jD ]%}t|tr|jp||j|_qt|t r|jp||j!|_qt"dd |jD s;|r;|# D ]\}}|jt g |dd|d q(|S )zXParse the ReST-style docstring into its components.

    :returns: parsed docstring
    )stylez^:r   N 
r   r   z

z(^:.*?)(?=^:|\Z):z%Error parsing meta information near "z".r   type)r   r   rtypec                 s   s    | ]}t |tV  qd S )N)
isinstancer   ).0mr,   r,   r-   	<genexpr>   s    zparse.<locals>.<genexpr>F)r   r   r   r    return_name)$r   r   RESTinspectcleandocr$   r)   Mstartsplitshort_descriptionr"   
startswithblank_after_short_descriptionr#   blank_after_long_descriptionstriplong_descriptionfinditerSr'   lstrip
ValueErrorr   metaappendr.   r6   r   r   getr   r   r:   anyitems)r/   retr%   
desc_chunk
meta_chunkpartslong_desc_chunktypesrtypeschunk
args_chunkexr   r   
first_linerestrK   r:   r   r,   r,   r-   parsef   s~   





r\   z    	docstringrendering_styleindentc           	   	      sN  dt jt dtf fdd}g }| jr|| j | jr"|d | jr+|| j | jr3|d | jD ]}t	|t
r|jrR|jrJd|j dnd|j d}nd}tjkrd|j d	}|||j7 }|| |d
d r|d|j d	|d
d   q6d| |j d	}|||j7 }|| q6t	|tr|jrd|j nd}|jrdnd}tjkr|jrd	| d	}|||j7 }|| |r|d|  q6d	| | d	}|||j7 }|| q6t	|tr|jrd|j dnd}d| d	||j }|| q6d	d|j d	||j }|| q6d|S )a  Render a parsed docstring into docstring text.

    :param docstring: parsed docstring representation
    :param rendering_style: the style to render docstrings
    :param indent: the characters used as indentation in the docstring string
    :returns: docstring text
    r   r   c                    s   | sdS t jkr |  ^}}dd| g fdd|D  S t jkr>|  ^}}dd  | g fdd|D  S d|  S )Nr1   r2    c                       g | ]} | qS r,   r,   r7   liner_   r,   r-   
<listcomp>       z1compose.<locals>.process_desc.<locals>.<listcomp>c                    ra   r,   r,   rb   rd   r,   r-   re      rf   )r   CLEAN
splitlinesjoinEXPANDED)r   firstr[   r_   r^   r,   r-   process_desc   s   
"
zcompose.<locals>.process_descr1   r`   z? z:param r3   Nr   z:type z:paramyieldsreturnsz:rtype:z:raisesr2   )TOptionalstrrA   rL   rC   rF   rD   rK   r6   r   r   r   r   rj   r   r   r   r    r   ri   r   )	r]   r^   r_   rm   rS   rK   	type_textr/   r+   r,   rl   r-   compose   sb   





 



rt   )__doc__r<   r$   typingrp   commonr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   Listrr   r.   r\   COMPACTrt   r,   r,   r,   r-   <module>   s$    @MN