
    jI%                        d dl Z d dlZd dlmZmZmZ d dlmZ d dlm	Z
 ddlmZ ddlmZ ded	efd
Zded	efdZded	efdZdeeef         d	efdZded	efdZded	efdZded	efdZded	efdZded	efdZded	efdZded	efdZded	efd Zd!ed	efd"Zd#ed	efd$Zd%ed	efd&Z d'ed	efd(Z!d)ed	efd*Z"d+ed	efd,Z#d-ed	efd.Z$d/ed	efd0Z%d1ed	efd2Z&d3ed	efd4Z'd5ed	efd6Z(d7eee j)        f         d	efd8Z*d9ed:ed	efd;Z+d<ed	efd=Z,d>ed	efd?Z-d@ed	efdAZ.dBed	efdCZ/dDed	efdEZ0dFed	efdGZ1dHed	efdIZ2dJedKed	dfdLZ3dMed	efdNZ4dOed	efdPZ5dQed	efdRZ6dSed	efdTZ7dUed	efdVZ8dWed	efdXZ9dYed	efdZZ:d[ed	efd\Z;d]ed	efd^Z<d_ed	efd`Z=daed	efdbZ>dced	efddZ?deed	efdfZ@ G dg dhei          ZAdj ZBdkedled	dfdmZCdS )n    N)AnyCallableUnion
ParamError)
milvus_pb2   )entity_helper)	Singletonaddrreturnc                     t          | t                    sdS |                     d          }t          |          dk    rdS t	          |d                   ot          |d                   S )NF:   r   r	   )
isinstancestrsplitlenis_legal_hostis_legal_port)r   as     _/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/pymilvus/client/check.pyis_legal_addressr      s_    dC   u

3A
1vv{{u16=1#6#66    hostc                 Z    t          | t                    ot          |           dk    od| vS )Nr   r   )r   r   r   )r   s    r   r   r      s*    dC  HSYY]H4Hr   portc                     t          | t          t          f          r#	 t          |            dS # t          $ r Y dS w xY wdS )NTF)r   r   int
ValueError)r   s    r   r   r      sZ    $c
## 	III 4  	 	 	55	 5s   / 
==itemc                 N    t          | t                    rt          |           S | S N)r   r   r   )r!   s    r   
int_or_strr$   &   s%    $ 4yyKr   paramc                 l    	 t           j                             | d           n# t          $ r Y dS w xY wdS )N%Y-%m-%dFT)datetimestrptimer    )r%   s    r   is_correct_date_strr*   -   sL    ""5*5555   uu 4s    # 
11dimc                 ,    t          | t                    S r#   r   r   )r+   s    r   is_legal_dimensionr.   6   s    c3r   
index_sizec                 ,    t          | t                    S r#   r-   )r/   s    r   is_legal_index_sizer1   :       j#&&&r   
table_namec                 0    | ot          | t                    S r#   r   r   )r3   s    r   is_legal_table_namer6   >       5*Z555r   db_namec                 ,    t          | t                    S r#   r5   )r8   s    r   is_legal_db_namer:   B   s    gs###r   
field_namec                 0    | ot          | t                    S r#   r5   )r;   s    r   is_legal_field_namer=   G   r7   r   
index_namec                 0    | ot          | t                    S r#   r5   )r>   s    r   is_legal_index_namer@   K   r7   r   timeoutc                 B    | d u pt          | t          t          f          S r#   )r   r   float)rA   s    r   is_legal_timeoutrD   O   s    d??j3,???r   nlistc                 X    t          | t                     ot          | t                    S r#   r   boolr   )rE   s    r   is_legal_nlistrI   S   s$    %&&&A:eS+A+AAr   topkc                 X    t          | t                     ot          | t                    S r#   rG   )rJ   s    r   is_legal_topkrL   W   s$    $%%%?*T3*?*??r   idsc                     | rt          | t                    sdS | D ]\}t          |t          t          f          s dS 	 t          |          }|dk     s|t          j        k    r dS K# t          $ r Y  dS w xY wdS )NFr   T)r   listr   r   sysmaxsize	Exception)rM   ii_s      r   is_legal_idsrU   [   s     jd++ u   !c3Z(( 	55	QBAvvck))uu * 	 	 	555	 4s   %A''
A65A6nprobec                 ,    t          | t                    S r#   r-   )rV   s    r   is_legal_nproberX   m   s    fc"""r   
itopk_sizec                 ,    t          | t                    S r#   r-   )rY   s    r   is_legal_itopk_sizer[   q   r2   r   search_widthc                 ,    t          | t                    S r#   r-   )r\   s    r   is_legal_search_widthr^   u   s    lC(((r   min_iterationsc                 ,    t          | t                    S r#   r-   )r_   s    r   is_legal_min_iterationsra   y       nc***r   max_iterationsc                 ,    t          | t                    S r#   r-   )rc   s    r   is_legal_max_iterationsre   }   rb   r   
drop_ratioc                 L    t          | t                    od| cxk    odk     nc S )Nr   r	   )r   rC   )rf   s    r   is_legal_drop_ratiorh      s3    j%((@Q*-@-@-@-@q-@-@-@-@@r   	team_sizec                 ,    t          | t                    S r#   r-   )ri   s    r   is_legal_team_sizerk      s    i%%%r   cmdc                 0    | ot          | t                    S r#   r5   )rl   s    r   is_legal_cmdrn      s    ':c3'''r   datec                     t          | t          j                  r|                     d          S t          | t                    r!t          |           st          d          | S t          d          )Nr'   z&Date string should be YY-MM-DD format!messagezSDate should be YY-MM-DD format string or datetime.date, or datetime.datetime object)r   r(   ro   strftimer   r*   r   )ro   s    r   parser_range_datert      s~    $&& )}}Z((($ "4(( 	O%MNNNN
&   r   startendc                     t           j                             | d          }t           j                             |d          }||z
  j        dk    S )Nr'   r   )r(   r)   days)ru   rv   
start_dateend_dates       r   is_legal_date_ranger{      sE    "++E:>>J ))#z::Hz!'1,,r   tagc                 4    | d uot          | t                    S r#   r5   )r|   s    r   is_legal_partition_namer~      s    d?3z#s333r   limitc                 8    t          | t                    o| dk    S Nr   r-   )r   s    r   is_legal_limitr      s    eS!!/eai/r   fieldc                 4    | d u pt          | t                    S r#   r5   )r   s    r   is_legal_anns_fieldr      s    D=2Juc222r   datac                     dd l t          j        |           rdS t          | t          j        f          sdS t          fd| D                       S )Nr   TFc              3   \   K   | ]&}t          |t          t          j        f          V  'd S r#   )r   rO   bytesndarray).0vectornps     r   	<genexpr>z'is_legal_search_data.<locals>.<genexpr>   s6      PPz&4
";<<PPPPPPr   )numpyr
   entity_is_sparse_matrixr   rO   r   all)r   r   s    @r   is_legal_search_datar      sh    ,T22 tdT2:.// uPPPP4PPPPPPr   output_fieldsc                 j    | dS t          | t                    sdS t          d | D                       S )NTFc              3   4   K   | ]}t          |          V  d S r#   )r=   )r   r   s     r   r   z)is_legal_output_fields.<locals>.<genexpr>   s+      EEe"5))EEEEEEr   r   rO   r   )r   s    r   is_legal_output_fieldsr      sA    tmT** uEE}EEEEEEr   	tag_arrayc                 j    | dS t          | t                    sdS t          d | D                       S )NTFc              3   4   K   | ]}t          |          V  d S r#   )r~   )r   r|   s     r   r   z0is_legal_partition_name_array.<locals>.<genexpr>   s+      AA&s++AAAAAAr   r   )r   s    r   is_legal_partition_name_arrayr      sA    ti&& uAAyAAAAAAr   replica_numberc                 ,    t          | t                    S r#   r-   )r   s    r   is_legal_replica_numberr      rb   r   
param_nameparam_valuec                 0    t          d|  d| d          )N`z` value z is illegalrq   r   )r   r   s     r   _raise_param_errorr      s'    
MMM[MMM
N
N
NNr   round_decimalc                 L    t          | t                    od| cxk     odk     nc S )N   r-   )r   s    r   is_legal_round_decimalr      s3    mS))Db=.D.D.D.D1.D.D.D.DDr   tsc                 @    | d u pt          | t                    o| dk    S r   r-   )r   s    r   is_legal_guarantee_timestampr      s$    :8B,,8q8r   userc                 ,    t          | t                    S r#   r5   )r   s    r   is_legal_userr      s    dC   r   passwordc                 ,    t          | t                    S r#   r5   )r   s    r   is_legal_passwordr      s    h$$$r   	role_namec                 0    | ot          | t                    S r#   r5   )r   s    r   is_legal_role_namer          3Is333r   operate_user_role_typec                 J    | t           j        j        t           j        j        fv S r#   )milvus_typesOperateUserRoleTypeAddUserToRoleRemoveUserFromRole)r   s    r   is_legal_operate_user_role_typer      s&    !(6(;&  r   include_user_infoc                 ,    t          | t                    S r#   r   rH   )r   s    r   is_legal_include_user_infor          '...r   include_role_infoc                 ,    t          | t                    S r#   r   )r   s    r   is_legal_include_role_infor      r   r   objectc                 0    | ot          | t                    S r#   r5   )r   s    r   is_legal_objectr      s    -j---r   object_namec                 0    | ot          | t                    S r#   r5   )r   s    r   is_legal_object_namer      s    7:k3777r   	privilegec                 0    | ot          | t                    S r#   r5   )r   s    r   is_legal_privileger     r   r   
propertiesc                 0    | ot          | t                    S r#   )r   dict)r   s    r   is_legal_collection_propertiesr     s    6*Z666r   operate_privilege_typec                 J    | t           j        j        t           j        j        fv S r#   )r   OperatePrivilegeTypeGrantRevoke)r   s    r   is_legal_operate_privilege_typer     s&    !)/)0&  r   c                   &    e Zd ZddZdedefdZdS )ParamCheckerr   Nc           	         i dt           dt          dt          dt          dt          dt          dt
          dt          d	t          d
t          dt          dt          dt          dt          dt          dt          dt          i dt           dt"          dt$          dt&          dt(          dt*          dt,          dt.          dt0          dt2          dt4          dt6          dt8          dt:          d t          d!t<          d"t>          t@          tB          tD          tF          tH          tJ          tJ          d#| _&        d S )$Nr8   collection_namealiasr;   	dimensionindex_file_sizerJ   rM   rV   rE   rl   partition_namepartition_name_arrayr   
anns_fieldsearch_datar   r   guarantee_timestampr   r   r   r   r   r   r   r   r   r   r   r   resource_group_namerY   r\   )r_   rc   ri   r>   rA   drop_ratio_builddrop_ratio_search)'r:   r6   r=   r.   r1   rL   rU   rX   rI   rn   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r[   r^   ra   re   rk   r@   rD   rh   
check_dict)selfs    r   __init__zParamChecker.__init__  s   *
'*
2*
 (*
 -	*

 +*
 2*
 M*
 <*
 o*
 ^*
 <*
 5*
 #$A*
 ^*
 -*
  /!*
" 3#*
 *
$ 3%*
& "#?'*
( M)*
* )+*
, +-*
. %&E/*
0  !;1*
2  !;3*
4 o5*
6 /7*
8 +9*
: %&E;*
< 8=*
> 5?*
@ "#6A*
B -C*
D 1E*
 *
F 65+-' 3!4S*
 *
 *
r   keyvaluec                     || j         v r* | j         |         |          st          ||           d S d S t          d| d          )Nzunknown param `r   rq   )r   r   r   )r   r   r   s      r   checkzParamChecker.check@  sg    $/!!'4?3'.. /"3...../ / %=s%=%=%=>>>>r   )r   N)__name__
__module____qualname__r   r   r   r    r   r   r   r     sK        +
 +
 +
 +
Z? ?X ? ? ? ? ? ?r   r   )	metaclassc                      t                      S r#   )r   r   r   r   _get_param_checkerr   H  s    >>r   _argskwargsc                      |t          d          t                      }|                                D ]\  }}|                    ||           d S )NzParam should not be Nonerq   )r   r   itemsr   )r   r   checkerr   r   s        r   check_pass_paramr   L  s`    ~!;<<<< ""Gllnn " "
Uc5!!!!" "r   )Dr(   rP   typingr   r   r   pymilvus.exceptionsr   pymilvus.grpc_genr   r    r
   singleton_utilsr   rH   r   r   r   r   r   r$   r*   r.   r1   r6   r:   r=   r@   rD   rI   rL   rU   rX   r[   r^   ra   re   rh   rk   rn   ro   rt   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      sj    



 ' ' ' ' ' ' ' ' ' ' * * * * * * 8 8 8 8 8 8       & & & & & &73 74 7 7 7 7I I I I I I     U38_     s t     C  D        'C 'D ' ' ' '6C 6D 6 6 6 6$c $d $ $ $ $
6C 6D 6 6 6 66C 6D 6 6 6 6@c @d @ @ @ @B# B$ B B B B@ @ @ @ @ @c d    $#C #D # # # #'C 'D ' ' ' ') ) ) ) ) )+C +D + + + ++C +D + + + +AC AD A A A A&# &$ & & & &(c (d ( ( ( (E#x}"45 #     -s - - - - - -4 4 4 4 4 40# 0$ 0 0 0 03s 3t 3 3 3 3	Qs 	Qt 	Q 	Q 	Q 	QF# F$ F F F FBS BT B B B B+C +D + + + +O3 OS OT O O O OE# E$ E E E E9S 9T 9 9 9 9! ! ! ! ! !% % % % % %4# 4$ 4 4 4 4C D    /# /$ / / / //# /$ / / / /.C .D . . . .8c 8d 8 8 8 84# 4$ 4 4 4 47s 7t 7 7 7 7C D    3? 3? 3? 3? 3?Y 3? 3? 3? 3?l  "S "C "D " " " " " "r   