
    ,|h
                    `    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        |       }| j                         D ]  }|j	                         j                         }|j                  d      rd}5|j                  d      s"|j                  d      s|j                  d      rd}k||xx   |j                          dz  cc<    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:argsz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	            L/var/www/html/test/engine/venv/lib/python3.12/site-packages/ollama/_utils.py_parse_docstringr%      s~    %	Z###% 	3d::<%%'Lw'c		 	 	,0G0G	0RVbVmVmnwVx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                H   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'        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-   r1    )namer1   
parameters)function )r   inspectgetdocr%   r-   __name__pydantic	BaseModel	signaturer4   items
annotation_emptyr   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   -./%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	""5 M >s   :H4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&   