
    ug                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ  ej                         dz   Z
dedefdZdedee   defd	Zdedefd
Zdedeeef   ddfdZdededeeef   defdZy)    N)
ModuleType)DictListz#/persistence_test_chromadb_versionsversionreturnc                     t         dz   | z   S )N/)base_install_dirr   s    V/var/www/openai/venv/lib/python3.12/site-packages/chromadb/test/utils/cross_version.pyget_path_to_version_installr      s    c!G++    versioned_modulesc                    d}t         j                  j                         D ci c]9  \  }|k(  s,j                  |dz         s|v st	        fd|D              r|; }}}|D ]  t         j                  =  t         j
                  j                  dt        |              dd l}|j                  | k(  sJ |S c c}}w )Nchromadb.c              3   F   K   | ]  }j                  |d z           yw)r   N)
startswith).0mns     r   	<genexpr>z$switch_to_version.<locals>.<genexpr>   s!     A/@!QW%/@s   !r   )
sysmodulesitemsr   anypathinsertr   r   __version__)r   r   module_namer   r   old_modulesr   s      `   r   switch_to_versionr"      s    K KK%%''DAqLLs*+!!A/@AA 	
1'   KKN  HHOOA27;<7***O!s   >B?c                     t        |       dz   S )Nz/chromadb/__init__.py)r   r   s    r   get_path_to_version_libraryr$   %   s    &w/2IIIr   dep_overridesc                     t        |       }t        j                  j                  |      ry t	        |       }t        d|  ||       y )Nz
chromadb==)r$   osr   existsr   install)r   r%   version_libraryr   s       r   install_versionr+   )   s<    1':O	ww~~o&&w/Dj	"D-8r   pkgr   c                    t        d       t        j                  t        j                  ddddg       t        j                  ddddd| g}|j                         D ]  \  }}|j                  | |         |j                  d       |j                  d	|        t        d
|  d|        t        j                  |      S )NzPurging pip cachez-mpipcachepurgez-qr)   z--no-binary=chroma-hnswlibz	--target=zInstalling chromadb version z to )print
subprocess
check_callr   
executabler   append)r,   r   r%   commanddepoperator_versions         r   r)   r)   2   s     

NN	
 ~~tUD$	3GG!.!4!4!6#/012 "7 NN/0NNYtf%&	(T$
89  ))r   )r   r2   r'   tempfiletypesr   typingr   r   
gettempdirr
   strr   r"   r$   r+   intr)    r   r   <module>r@      s    
  	   &8&&(+PP , , ,s tCy Z ,J J J9S 9c3h 9D 9* *C *S#X *3 *r   