o
    3Ih                     @   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
   a/home/air/sanwanet/gpt-api/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 jddddd| g}| D ]\}}|| |  qd| v s)tdd |D r.|d |d	|  td
|  d|  t|S )Nz-mpipz-qr(   chroma-hnswlibc                 s   s    | ]}d |v V  qdS )r-   Nr
   )r   depr
   r
   r   r   ;   s    zinstall.<locals>.<genexpr>z--no-binary=chroma-hnswlibz	--target=zInstalling chromadb version z to )r   
executabler   appendr   print
subprocess
check_call)r+   r   r%   commandr.   operator_versionr
   r
   r   r(   2   s   

r(   )r   r2   r&   tempfiletypesr   typingr   r   
gettempdirr   strr   r#   r$   r*   intr(   r
   r
   r
   r   <module>   s    &	