
    ug                     
   d dl Z d dlmZ d dlmZmZmZ d dlmc m	Z	 d dl
mZ d dlmZmZ d dl mZ d dlZdee	j"                  ddf   fdZdeeg ee	j"                  ddf   f      fd	Z e j(                  d
 e             dedee	j"                  ddf   fd       Zde	j"                  ddfdZde	j"                  ddfdZde	j"                  ddfdZde	j"                  ddfdZde j2                  de	j"                  ddfdZy)    N)files)	GeneratorListCallable)SqliteDB)SystemSettings)FixtureRequestreturnc               #   r   K   t        t        t        dd                  } | j                          |  yw)zFixture generator for sqlite DBnoneT)
migrationsallow_resetN)r   r   r	   startdbs    U/var/www/openai/venv/lib/python3.12/site-packages/chromadb/test/db/test_migrations.pysqliter      s6     	! 	

B HHJ
Hs   57c                      t         gS N)r        r   db_fixturesr      s	    8Or   module)scopeparamsrequestc              #   B   K   t        | j                                y wr   )nextparam)r   s    r   r   r      s     
w}}
s   r   c                     t        j                  t              5  | j                         5  t        d      # 1 sw Y   nxY w	 d d d        y # 1 sw Y   y xY w)Nztest exception)pytestraises	Exceptiontxr   s    r   test_exception_propagationr&   #   s9    	y	!UUW-./ WW 
"	!	!s   A7A 	AAc                    | j                          | j                          | j                          | j                         5 }|j                  d      j	                         }t        |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NSELECT * FROM migrationsr   )reset_statesetup_migrationsr%   executefetchalllen)r   cursorrowss      r   test_setup_migrationsr0   )   sa    NN	F~~89BBD4yA~~ 
s   0A;;Bc                 z   | j                          t        d      }| j                  |      }t        j                  || j                               }t        j                  ||      }||k(  sJ | j                         5 }|j                  d      j                         }t        |      dk(  sJ 	 d d d        | j                         5 }|d d D ]  }| j                  ||        	 d d d        | j                  |      }t        j                  ||      }t        |      dk(  sJ |d   d   dk(  sJ | j                         5 }t        |j                  d      j                               dk(  sJ t        |j                  d	      j                               dk(  sJ t        |j                  d
      j                               dk(  sJ t        j                  t              5  |j                  d      j                          d d d        d d d        | j                         5 }|D ]  }| j                  ||        	 d d d        | j                  |      }t        j                  ||      }t        |      dk(  sJ | j                         5 }t        |j                  d      j                               dk(  sJ t        |j                  d      j                               dk(  sJ 	 d d d        y # 1 sw Y   DxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nchromadb.test.db.migrationsr(   r      version      zSELECT * FROM table1zSELECT * FROM table2zSELECT * FROM table3)initialize_migrationsr   db_migrationsr   find_migrationsmigration_scopeverify_migration_sequencer%   r+   r,   r-   apply_migrationr"   r#   r$   )r   dirr9   source_migrationsunapplied_migrationscurr/   ms           r   test_migrationsrC   3   s   
-
.C$$S)M"2238J8J8LM%??(  #4444	C{{56??A4yA~~ 
 
C%cr*AsA& + 
 $$S)M%??( #$)))"9-222	C3;;9:CCEF!KKK3;;56??ABaGGG3;;56??ABaGGG]]9%KK./88: &	 
 
C%AsA& & 
 $$S)M%??( #$)))	C3;;9:CCEF!KKK3;;56??ABaGGG 
E 
 
  &%	 
 
 
sV   >0K1K>B!L" LL"L%AL11K;>LL	LL"%L.1L:c                    | j                          | j                          t        d      }t        j                  || j                               }| j                  |      }t        j                  ||      }| j                         5 }|D ]  }| j                  ||        	 d d d        | j                  |      }t        j                  ||      }t        |      dk(  sJ t        j                  |      }d|d   d<   t        j                  t        j                        5  t        j                  ||       d d d        t        j                  |      }d|d   d<   t        j                  t        j                         5  t        j                  ||       d d d        y # 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   y xY w)Nr2   r   r7   r5   badhashhash)r)   r*   r   r   r:   r;   r9   r<   r%   r=   r-   copydeepcopyr"   r#   InconsistentVersionErrorInconsistentHashError)	r   r>   r?   r9   r@   rA   rB   inconsistent_version_migrationsinconsistent_hash_migrationss	            r   test_tampered_migrationrM   g   s   NN
-
.C"2238J8J8LM$$S)M%??( 
C%AsA& & 
 $$S)M%??( #$)))&*mm4E&F#45#A&y1	z::	;,,:	
 
<
 $(==1B#C .7 #F+	z77	8,,7	
 
9	8+ 
 
<	; 
9	8s$   F !F, F8 F),F58Gmonkeypatchc                 0   |j                          t        d      | j                  |dfd       |j                         rJ t	        j
                  t        j                        5  |j                          d d d        |j                          |j                         sJ t	        j
                  t        j                        5  |j                          d d d        |j                          |j                          y # 1 sw Y   xY w# 1 sw Y   6xY w)Nr2   migration_dirsc                  
     gS r   r   )r>   s   r   <lambda>z%test_initialization.<locals>.<lambda>   s    ser   )r)   r   setattrmigrations_initializedr"   r#   r   UninitializedMigrationsErrorvalidate_migrationsr*   UnappliedMigrationsErrorapply_migrations)rN   r   r>   s     @r   test_initializationrY      s     NN
-
.C,m<((***	z>>	?
  
@ $$&&&	z::	;
  
<  
@	? 
<	;s   (D D D	D)r"   importlib_resourcesr   typingr   r   r   chromadb.db.migrationsr   r   chromadb.db.impl.sqliter   chromadb.configr   r	   r
   rG   MigratableDBr   r   fixturer&   r0   rC   rM   MonkeyPatchrY   r   r   r   <module>rb      sD    % , , + + , , ! 	*114=> T(2y1H1H$PT1T'U#UVW  h{}5   9Z-D-DdD-P#Q   6 
0:#:#: 0t 0j55 $ 1H
// 1HD 1Hh&

 7 7 &
D &
R##)3)@)@	r   