o
    g                     @   s   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	 d Z
dedefddZded	ee defd
dZdedefddZdedeeef ddfddZdededeeef defddZdS )    N)
ModuleType)DictListz#/persistence_test_chromadb_versionsversionreturnc                 C   s   t d |  S )N/)base_install_dirr    r
   X/var/www/visachat/venv/lib/python3.10/site-packages/chromadb/test/utils/cross_version.pyget_path_to_version_install      r   versioned_modulesc                    s\   d  fddt j D }|D ]}t j|= qt jdt|  dd l}|j| ks,J |S )Nchromadbc                    sJ   i | ]!\ } ks   d  s  v s t fddD r |qS ).c                 3   s    | ]
}  |d  V  qdS )r   N)
startswith.0mnr
   r   	<genexpr>   s    z/switch_to_version.<locals>.<dictcomp>.<genexpr>)r   anyr   module_namer   r   r   
<dictcomp>   s    z%switch_to_version.<locals>.<dictcomp>r   )sysmodulesitemspathinsertr   r   __version__)r   r   old_modulesr   r   r
   r   r   switch_to_version   s   
r#   c                 C   s   t | d S )Nz/chromadb/__init__.py)r   r	   r
   r
   r   get_path_to_version_library%   r   r$   dep_overridesc                 C   s6   t | }tj|rd S t| }td|  || d S )Nz
chromadb==)r$   osr   existsr   install)r   r%   version_libraryr   r
   r
   r   install_version)   s
   r*   pkgr   c                 C   s   t d ttjddddg tjddddd| g}| D ]\}}|| |  q|d |d	|  t d
|  d|  t|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_versionr
   r
   r   r(   2   s    


r(   )r   r0   r&   tempfiletypesr   typingr   r   
gettempdirr   strr   r#   r$   r*   intr(   r
   r
   r
   r   <module>   s    &	