
    Ng
                    b    d dl mZ d dlmZ d dlZd dlmZmZ d dlZd dl	Z	d dl
mZ dd
ZddZdS )    )annotations)defaultdictN)CallableUnion)Tool
doc_stringUnion[str, None]returndict[str, str]c                   t          t                    }| s|S t          |           }|                                 D ]}|                                                                }|                    d          rd}@|                    d          s*|                    d          s|                    d          rd}||xx         |                                 dz  cc<   d }|d                                         D ]}|                                }d|v rt          j        d	|d
          }|d                                         }|}|d                                         }t          |          dk    r<|d
         r4|d                             dd
          d                                         }|||<   |r|r||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)	r   parsed_docstringkeylinelowered_linelast_keypartsarg_namearg_descriptions	            I/var/www/html/ai-engine/env/lib/python3.11/site-packages/ollama/_utils.py_parse_docstringr(      s    %%	 Z###%% 	3 	3d::<<%%''Lw'' 3cc		 	 	,	, 30G0G	0R0R 3VbVmVmnwVxVx 3cc s$**,,2222(v&1133 / /d::<<D
d{{
 h.qAAAeq!!hh b	))o	UaE!H)//#q11"5;;==#2x  	 /d /x   C$J.   	    funcr   r   c                   t          t          j        |                     }t          t          j        |                     }t	          | j        t          j        fd t          j        |           j	        
                                D             t          j        |           ||         d                                          }|                    di           
                                D ]\  }}d|v rd |                    d          D             n|                    dd          h}d|v r0|d	                             |           |                    d           ||         d
                    |          d|d         |<   t!          t!          j        | j        |                    dd          t!          j        j        di |                    }t!          j        |          S )Nc                \    i | ])\  }}||j         t          j        k    r|j         nt          *S  )
annotationinspect_emptyr   ).0kvs      r'   
<dictcomp>z,convert_function_to_tool.<locals>.<dictcomp>=   sH      M  M  MY]YZ\]!Q\W^-K-KQ\\QT  M  M  Mr)   )__annotations____signature____doc__
propertiesanyOfc                :    h | ]}|                     d d          S )typestring)get)r1   ts     r'   	<setcomp>z+convert_function_to_tool.<locals>.<setcomp>E   s&    ===QUU68$$===r)   r;   r<   nullrequiredz, )descriptionr;   rB    )namerB   
parameters)functionr-   )r   r/   getdocr(   r;   __name__pydantic	BaseModel	signaturerE   itemsmodel_json_schemar=   removediscardjoinr   Function
Parametersmodel_validate)r*   doc_string_hashr   schemar2   r3   typestools           r'   convert_function_to_toolrX   6   s   --../%gnT&:&:;;M M  Maharswaxax  bD  bJ  bJ  bL  bL  M  M  M(..!/2    	 jjr**0022 
 
daAHA==aeeGnn====TUTYTYZ`bjTkTkSlEZ"""mmF &a(ii F<
 
]=**]B//)33F33  
 
 
$ 
	T	"	""r)   )r   r	   r
   r   )r*   r   r
   r   )
__future__r   collectionsr   r/   typingr   r   r   rI   ollama._typesr   r(   rX   r-   r)   r'   <module>r]      s    " " " " " " # # # # # #  " " " " " " " " 				       ( ( ( (V!# !# !# !# !# !#r)   