
    i
                    `    d dl mZ d dlZd dlZd dlmZ d dlmZmZ d dl	Z	d dl
mZ ddZd	dZy)
    )annotationsN)defaultdict)CallableUnion)Toolc                   t        t              }| s|S t        t        |             }| j                         D ]f  }|j	                         j                         }|j                  d      rd}5|j                  d      rd}I||xx   |j                          dz  cc<   h d }|d   j                         D ]  }|j                         }d|v rt        j                  d|d	      }|d
   j                         }|}|d   j                         }t        |      dkD  r+|d   r&|d   j                  dd      d   j                         }|||<   |s|s||xx   d|z   z  cc<    |S )Nzargs:args)zreturns:zyields:zraises:_
:z(?:\(([^)]*)\)|:)\s*   )maxsplitr       )
r   strhash
splitlineslowerstrip
startswithresplitlen)	
doc_stringparsed_docstringkeylinelowered_linelast_keypartsarg_namearg_descriptions	            K/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/ollama/_utils.py_parse_docstringr%      sh    %	D###% 	3d::<%%'Lw'c		 	 !C	Dc s$**,r22	3 (v&113 /d::<D
d{
 hh.qAeq!hh b	)o	UaE!H)//#q1"5;;=#2x 	dx C$J. )/, 
    c                \   t        t        t        j                  |                   }t	        t        j                  |             }t        | j                  t        j                  ft        j                  |       j                  j                         D ci c]5  \  }}||j                  t        j                  k7  r|j                  nt         7 c}}t        j                  |       ||   d      j                         }|j                  di       j                         D ]  \  }}d|v r/|j                  d      D ch c]  }|j                  dd       c}n|j                  dd      h}d|v r%|d   j!                  |       |j#                  d       ||   dj%                  |      d	|d   |<    t'        d
t'        j(                  | j                  |j                  dd      t'        j(                  j*                  di |            }t'        j,                  |      S c c}}w c c}w )N)__annotations____signature____doc__
propertiesanyOftypestringnullrequiredz, )descriptionr-   functionr1    )namer1   
parameters)r-   r2    )r   r   inspectgetdocr%   r-   __name__pydantic	BaseModel	signaturer5   items
annotation_emptymodel_json_schemagetremovediscardjoinr   Function
Parametersmodel_validate)	funcdoc_string_hashr   kvschemattypestools	            r$   convert_function_to_toolrP   8   s   W^^D123/%gnnT&:;MMahararswax  bD  bD  bJ  bJ  bL  MY]YZ\]!Q\\W^^-KQ\\QTT  M((.!/2  	 jjr*002 
daAHAaeeGn=QUU68$=TUTYTYZ`bjTkSlEZ"mmF &a(iiF<
 
	]]==**]B/))3F3
$ 
		T	""7 M >s   :H#=H))r   zUnion[str, None]returnzdict[str, str])rH   r   rQ   r   )
__future__r   r7   r   collectionsr   typingr   r   r:   ollama._typesr   r%   rP   r6   r&   r$   <module>rV      s%    "  	 # "  (V"#r&   