
    Pi                        d dl mZ d dlZd dlmZmZmZmZmZm	Z	 d dl
mZ ddZddZddZddZ e	dee                   ZddZdS )    )annotationsN)ListLiteralUnionAnyTypeTypeVar)	BaseModel
annotation	Type[Any]returnc                |   t          | dd           t          u rDt          | d          rt          | j                  dk    sJ t          | j        d                   S t          | dd           t          u rSt          | d          rt          | j                  dk    sJ d | j        D             }|rt          |d                   S ntt          | dd           t          u st          | dd           t          u rDt          | d          rt          | j                  dk    sJ t          | j        d                   S | S )N
__origin____args__   r   c                4    g | ]}|t          d           u|S N)type.0args     h/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/llama_cpp/server/cli.py
<listcomp>z"_get_base_type.<locals>.<listcomp>   s/     .
 .
 .
#T$ZZ2G2GC2G2G2G    )
getattrr   hasattrlenr   r   r   _get_base_typelistr   )r   non_optional_argss     r   r   r   
   sX   z<..'99z:..P3z7J3K3Kq3P3P3PPJ'*+++	\4	0	0E	9	9z:..P3z7J3K3Kq3P3P3PP.
 .
%..
 .
 .
  	8!"3A"6777	8 	
L$//477:|T22d::z:..P3z7J3K3Kq3P3P3PPj1!4555r   Type[Any] | Noneboolc                    t          | dd           }|t          u s	|t          u rdS |t          t          fv rt          d | j        D                       S dS )Nr   Tc              3  4   K   | ]}t          |          V  d S r   )_contains_list_typer   s     r   	<genexpr>z&_contains_list_type.<locals>.<genexpr>$   s+      KK&s++KKKKKKr   F)r   r   r   r   r   anyr   )r   origins     r   r%   r%      s^    Zt44F~~4t	GU#	#	#KKz7JKKKKKKur   r   str | bytes | boolc                   t          | t                    r|                     d          } h d}h d}t          |                                                                           }||v rdS ||v rdS t          d|            )Nzutf-8>   1tyonyestrue>   0fnnoofffalseTFzInvalid boolean argument: )
isinstancebytesdecodestrlowerstrip
ValueError)r   true_valuesfalse_valuesarg_strs       r   _parse_bool_argrA   )   s    #u "jj!!666K888L#hhnn$$&&G+t	L	 	 u;c;;<<<r   parserargparse.ArgumentParsermodelType[BaseModel]c                   |j                                         D ]\  }}|j        }|j        r$|r"|                                s|d|j         dz  }|j        t          |j                  nt          }t          |j                  }|t          ur!| 
                    d| ||rdnd||           |t          u r"| 
                    d| |t          |            dS )z:Add arguments from a pydantic model to an argparse parser.z (default: )Nz--*)destnargsr   help)rI   r   rK   )model_fieldsitemsdescriptiondefaultis_requiredr   r   r:   r%   r"   add_argumentrA   )rB   rD   namefieldrN   	base_type	list_types          r   add_args_from_modelrV   :   s-    )//11  e'= 	:[ 	:1B1B1D1D 	:99999K050@0LN5+,,,RU 	 ((899	D  T&0ccD       T$#%	     # r   T)boundargsargparse.Namespacec                j       di  fdt          |                                          D             S )z2Parse a pydantic model from an argparse namespace.c                2    i | ]\  }}||j         v ||S r   )rL   )r   kvrD   s      r   
<dictcomp>z)parse_model_from_args.<locals>.<dictcomp>\   s;     
 
 
1}e&8!8!8 q!8!8!8r    )varsrM   )rD   rY   s   ` r   parse_model_from_argsrb   Y   sY    5  
 
 
 
T

((**
 
 
  r   )r   r   r   r   )r   r!   r   r"   )r   r)   r   r"   )rB   rC   rD   rE   )rD   rW   rY   rZ   r   rW   )
__future__r   argparsetypingr   r   r   r   r   r	   pydanticr
   r   r%   rA   rV   rW   rb   r`   r   r   <module>rg      s    " " " " " "  ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;         (   = = = ="   8 GCtI'''     r   