o
    Q5i!                     @  s   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZ eded	ZG d
d dZe ZdS )    )annotationsN)cached_property)Path)TypeVar)logger)DeviceDeviceIDProxyDtypeEmbeddingDtypeEnumTypeInferenceEnginePoolingMethodEnumTypeLike)boundc                   @  s  e Zd ZdZdd ZdaddZedbd
dZdcddddZdeddZ	edfddZ
edgddZedhddZedd Zedd  Zed!d" Zed#d$ Zed%d& Zed'd( Zed)d* Zed+d, Zed-d. Zed/d0 Zed1d2 Zed3d4 Zed5d6 Zed7d8 Zedid:d;Zedjd=d>Zedjd?d@ZedAdB ZedCdD Z edEdF Z!edGdH Z"edIdJ Z#edKdL Z$edMdN Z%dkdRdSZ&edldTdUZ'edldVdWZ(edldXdYZ)edldZd[Z*ed\d] Z+edld^d_Z,d`S )m__Infinity_EnvManagerFc                 C  sb   | j rd S d| _ | dd  t| D ]}ttt| |d tr&tt| q| d d d S )NTz5Loading Infinity variables from environment.
CONFIG:
z
----------z
ENV variables loaded.)"_Infinity_EnvManager__IS_RECURSION_debugdir
isinstancegetattrtyper   MANAGER)selff_name r   ^/lsinfo/ai/hellotax_ai/llm_service/venv_embed/lib/python3.10/site-packages/infinity_emb/env.py__pre_fetch_env_manager   s   
z-__Infinity_EnvManager.__pre_fetch_env_managermessagestrc                 C  sP   d|v rdS | j dv r&d|v rtd tdtj   dS t| dS dS )z0print as debug without having to import logging.	LOG_LEVELN>   debugtraceAPI_KEYz0INFINITY_API_KEY=anonymized_for_logging_purposeszINFINITY_LOG_LEVEL=)	log_levelr   infor   )r   r   r   r   r   r   '   s   

z__Infinity_EnvManager._debugnamereturnc                 C  s   d|   dd S )N	INFINITY_-_)upperreplace)r%   r   r   r   to_name3      z__Infinity_EnvManager.to_name defaultc                 C  sX   |    | |}t|}|d u r| | d| d |S | | d| d |S )N=`
`(default)`)+_Infinity_EnvManager__pre_fetch_env_managerr,   osgetenvr   )r   r%   r/   valuer   r   r   _optional_infinity_var7   s   

z,__Infinity_EnvManager._optional_infinity_var	list[str]c                 C  s   |    | |}t|}|d u r"| | dd| d |S |dr-|d d }|d}| | dd| d |S )Nr0   ;r1   r2   )r3   r,   r4   r5   r   joinendswithsplit)r   r%   r/   r6   
value_listr   r   r   _optional_infinity_var_multipleA   s   



z5__Infinity_EnvManager._optional_infinity_var_multipler6   boolc                 C  s   |    dv S )N>   1tyyestrue)lowerstripr6   r   r   r   _to_boolN      z__Infinity_EnvManager._to_bool
list[bool]c                 C     dd | D S )Nc                 S  s   g | ]}|  d v qS )>   rA   rE   )rF   .0vr   r   r   
<listcomp>T   s    z;__Infinity_EnvManager._to_bool_multiple.<locals>.<listcomp>r   rH   r   r   r   _to_bool_multipleR      z'__Infinity_EnvManager._to_bool_multiple	list[int]c                 C  rL   )Nc                 S  s   g | ]}t |qS r   )intrM   r   r   r   rP   X   s    z:__Infinity_EnvManager._to_int_multiple.<locals>.<listcomp>r   rH   r   r   r   _to_int_multipleV   rR   z&__Infinity_EnvManager._to_int_multiplec                 C     | j dddS )Napi_keyr.   r/   r7   r   r   r   r   rW   Z   rR   z__Infinity_EnvManager.api_keyc                 C     | j ddgdS )Nmodel_idzmichaelfeil/bge-small-en-v1.5rX   r?   rZ   r   r   r   r\   ^   s   z__Infinity_EnvManager.model_idc                 C  r[   )Nserved_model_namer.   rX   r]   rZ   r   r   r   r^   d   rJ   z'__Infinity_EnvManager.served_model_namec                 C     |  | jddgdS )N
batch_size32rX   )rU   r?   rZ   r   r   r   r`   h      z __Infinity_EnvManager.batch_sizec                 C  r[   )Nrevisionr.   rX   r]   rZ   r   r   r   rc   n   rJ   z__Infinity_EnvManager.revisionc                 C  r_   )Ntrust_remote_coderE   rX   rQ   r?   rZ   r   r   r   rd   r   rb   z'__Infinity_EnvManager.trust_remote_codec                 C  r_   )Nmodel_warmuprE   rX   re   rZ   r   r   r   rf   x   rb   z"__Infinity_EnvManager.model_warmupc                 C  r_   )Nvector_disk_cachefalserX   re   rZ   r   r   r   rg   ~   rb   z'__Infinity_EnvManager.vector_disk_cachec                 C  r_   )Nlengths_via_tokenizerh   rX   re   rZ   r   r   r   ri      rb   z*__Infinity_EnvManager.lengths_via_tokenizec                 C  r_   )Ncompilerh   rX   re   rZ   r   r   r   rj      rb   z__Infinity_EnvManager.compilec                 C  r_   )NbettertransformerrE   rX   re   rZ   r   r   r   rk      rb   z'__Infinity_EnvManager.bettertransformerc                 C     |  | jdddS )Npreload_onlyrh   rX   rI   r7   rZ   r   r   r   rm      r-   z"__Infinity_EnvManager.preload_onlyc                 C  rV   )Ncalibration_dataset_urlzhttps://raw.githubusercontent.com/michaelfeil/infinity/2da1f32d610b8edbe4ce58d0c44fc27c963abca6/docs/assets/multilingual_calibration.utf8rX   rY   rZ   r   r   r   ro      s   z-__Infinity_EnvManager.calibration_dataset_urlc                 C  s0   |  | jddd}|  tdd }|o|S )Nanonymous_usage_statsrE   rX   DO_NOT_TRACK0)rI   r7   r4   r5   )r   tracking_allowedtracking_allowed_2r   r   r   rp      s   z+__Infinity_EnvManager.anonymous_usage_statsr   c                 C  sj   d}t jd}t jd}|rt|d }n|r t|d }ntd d }| s3|jddd |S )z*gets the cache directory for infinity_emb.NHF_HOMEINFINITY_HOMEz.infinity_cache.T)parentsexist_ok)r4   environgetr   resolveexistsmkdir)r   	cache_dirhf_homeinf_homer   r   r   r      s   z__Infinity_EnvManager.cache_dirrT   c                 C  &   t | jddd}|dksJ d|S )N
queue_size32000rX   r   z-INFINITY_QUEUE_SIZE must be a positive numberrT   r7   r   sizer   r   r   r         z __Infinity_EnvManager.queue_sizec                 C  r   )Nmax_client_batch_size2048rX   r   z8INFINITY_MAX_CLIENT_BATCH_SIZE must be a positive numberr   r   r   r   r   r      r   z+__Infinity_EnvManager.max_client_batch_sizec                 C  rl   )Npermissive_corsrh   rX   rn   rZ   r   r   r   r      r-   z%__Infinity_EnvManager.permissive_corsc                 C  rV   )N
url_prefixr.   rX   rY   rZ   r   r   r   r      rR   z __Infinity_EnvManager.url_prefixc                 C  rV   )Nproxy_root_pathr.   rX   rY   rZ   r   r   r   r      rR   z%__Infinity_EnvManager.proxy_root_pathc                 C  s&   | j ddd}| sJ dt|S )Nport7997rX   zINFINITY_PORT must be a number)r7   isdigitrT   )r   r   r   r   r   r      s   z__Infinity_EnvManager.portc                 C  rV   )Nhostz0.0.0.0rX   rY   rZ   r   r   r   r      rR   z__Infinity_EnvManager.hostc                 C  s(   | j ddd}|r|dsJ d|S )Nredirect_slashz/docsrX   /z)INFINITY_REDIRECT_SLASH must start with /)r7   
startswith)r   router   r   r   r      s   z$__Infinity_EnvManager.redirect_slashc                 C  rV   )Nr#   r$   rX   rY   rZ   r   r   r   r#      rR   z__Infinity_EnvManager.log_levelclstype['EnumTypeLike']list['str']c                   s.   | j |  gd}t fdd|D  |S )NrX   c                 3  s    | ]} |V  qd S )Nr   rM   r   r   r   	<genexpr>   s    z8__Infinity_EnvManager._typed_multiple.<locals>.<genexpr>)r?   default_valuetuple)r   r%   r   resultr   r   r   _typed_multiple   s   z%__Infinity_EnvManager._typed_multiplec                 C  s   | j dtdS )Ndtyper   )r   r	   rZ   r   r   r   r      rR   z__Infinity_EnvManager.dtypec                 C     |  dtS )Nengine)r   r   rZ   r   r   r   r         z__Infinity_EnvManager.enginec                 C  r   )Npooling_method)r   r   rZ   r   r   r   r      r   z$__Infinity_EnvManager.pooling_methodc                 C  r   )Ndevice)r   r   rZ   r   r   r   r      r   z__Infinity_EnvManager.devicec                 C  r   )N	device_id)r   r   rZ   r   r   r   r      r   z__Infinity_EnvManager.device_idc                 C  r   )Nembedding_dtype)r   r
   rZ   r   r   r   r     r   z%__Infinity_EnvManager.embedding_dtypeN)r   r   )r%   r   r&   r   )r.   )r%   r   r/   r   )r%   r   r/   r8   r&   r8   )r6   r   r&   r@   )r6   r8   r&   rK   )r6   r8   r&   rS   )r&   r   )r&   rT   )r%   r   r   r   r&   r   )r&   r8   )-__name__
__module____qualname__r   r3   r   staticmethodr,   r7   r?   rI   rQ   rU   r   rW   r\   r^   r`   rc   rd   rf   rg   ri   rj   rk   rm   ro   rp   r   r   r   r   r   r   r   r   r   r#   r   r   r   r   r   r   r   r   r   r   r   r      s    


























r   )
__future__r   r4   	functoolsr   pathlibr   typingr   infinity_emb.log_handlerr   infinity_emb.primitivesr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   <module>   s   $
 
p