
    EvgW!                     2   d dl mZ d dlmZmZ d dlmZ g dZ G d de          Z G d de          Z	 G d	 d
e          Z
 G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          ZdS )    )NotSupportedError)FuncIndex)cached_property)
BloomIndex	BrinIndex
BTreeIndexGinIndex	GistIndex	HashIndexSpGistIndexc                   B     e Zd Zed             Zd fd	Zd Zd Z xZS )PostgresIndexc                 x    t           j        t          t           j                  z
  t          | j                  z   S N)r   max_name_lengthlensuffixselfs    \/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/postgres/indexes.pyr   zPostgresIndex.max_name_length   s+     $s5<'8'883t{;K;KKK     c                    |                      |            t                      j        ||fdd|p| j        z  i|}|                                 }|r.dd                    |          d|j        d         |j        d<   |S )Nusingz	 USING %sz WITH (z, )extra)check_supportedsuper
create_sqlr   get_with_paramsjoinparts)r   modelschema_editorr   kwargs	statementwith_params	__class__s          r   r    zPostgresIndex.create_sql   s    ]+++&EGG&=
 
(3u7K(L
PV
 
	 **,, 	 			+&&&&(((IOG$ r   c                     d S r    r   r%   s     r   r   zPostgresIndex.check_supported&   s    r   c                     g S r   r+   r   s    r   r!   zPostgresIndex.get_with_params)   s    	r   )r   )	__name__
__module____qualname__r   r   r    r   r!   __classcell__r)   s   @r   r   r      sw        L L _L             r   r   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r   bloomNr+   )lengthcolumnsc                    t                      j        |i | t          | j                  dk    rt	          d          t          |t          t          f          st	          d          t          |          t          | j                  k    rt	          d          t          d |D                       st	          d          |d|cxk     rdk    sn t	          d	          || _	        || _
        d S )
N    z-Bloom indexes support a maximum of 32 fields.z+BloomIndex.columns must be a list or tuple.z7BloomIndex.columns cannot have more values than fields.c              3   6   K   | ]}d |cxk     odk    nc V  dS )r   i  Nr+   ).0cols     r   	<genexpr>z&BloomIndex.__init__.<locals>.<genexpr>8   s6      66s1s????d????666666r   z8BloomIndex.columns must contain integers from 1 to 4095.r   i   z<BloomIndex.length must be None or an integer from 1 to 4096.)r   __init__r   fields
ValueError
isinstancelisttupleallr5   r6   )r   r5   r6   expressionsr&   r)   s        r   r=   zBloomIndex.__init__0   s   +0000t{b  LMMM'D%=11 	LJKKKw<<#dk****VWWW66g66666 	J   a&&8&8&8&8D&8&8&8&8N   r   c                     t                                                      \  }}}| j        
| j        |d<   | j        r
| j        |d<   |||fS )Nr5   r6   )r   deconstructr5   r6   r   pathargsr&   r)   s       r   rF   zBloomIndex.deconstructC   sV    "WW0022dF;"#{F8< 	- $F9T6!!r   c                     g }| j         |                    d| j         z             | j        r3|                    d t	          | j        d          D                        |S )Nzlength = %dc              3   *   K   | ]\  }}d ||fz  V  dS )z
col%d = %dNr+   )r:   ivs      r   r<   z-BloomIndex.get_with_params.<locals>.<genexpr>P   s@        *.!Q1v%     r      )start)r5   appendr6   extend	enumerater   r(   s     r   r!   zBloomIndex.get_with_paramsK   s    ;"}t{:;;;< 	  2;DLPQ2R2R2R      r   r.   r/   r0   r   r=   rF   r!   r1   r2   s   @r   r   r   -   st        F,0"       &" " " " "      r   r   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r   brinN)autosummarizepages_per_rangec                    ||dk    rt          d          || _        || _         t                      j        |i | d S )Nr   z2pages_per_range must be None or a positive integer)r?   rW   rX   r   r=   )r   rW   rX   rD   r&   r)   s        r   r=   zBrinIndex.__init__Y   sV     &?a+?+?QRRR*.+000000r   c                     t                                                      \  }}}| j        
| j        |d<   | j        
| j        |d<   |||fS )NrW   rX   )r   rF   rW   rX   rG   s       r   rF   zBrinIndex.deconstructb   sY    "WW0022dF)&*&8F?#+(,(<F$%T6!!r   c                     g }| j         !|                    d| j         rdndz             | j        |                    d| j        z             |S )Nzautosummarize = %sonoffzpages_per_range = %d)rW   rP   rX   rS   s     r   r!   zBrinIndex.get_with_paramsj   sj    )$0B(MN   +58LLMMMr   rT   r2   s   @r   r   r   V   sv        F +/1 1 1 1 1 1 1" " " " "      r   r   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r	   btreeN)
fillfactordeduplicate_itemsc                V    || _         || _         t                      j        |i | d S r   )r`   ra   r   r=   )r   r`   ra   rD   r&   r)   s        r   r=   zBTreeIndex.__init__x   s4    $!2+000000r   c                     t                                                      \  }}}| j        
| j        |d<   | j        
| j        |d<   |||fS )Nr`   ra   )r   rF   r`   ra   rG   s       r   rF   zBTreeIndex.deconstruct}   sW    "WW0022dF?&#'?F< !-*.*@F&'T6!!r   c                     g }| j         |                    d| j         z             | j        !|                    d| j        rdndz             |S )Nfillfactor = %dzdeduplicate_items = %sr\   r]   )r`   rP   ra   rS   s     r   r!   zBTreeIndex.get_with_params   si    ?&04?BCCC!-(D4J,UDDPUV   r   rT   r2   s   @r   r	   r	   u   st        F04 1 1 1 1 1 1 1
" " " " "      r   r	   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r
   ginN)
fastupdategin_pending_list_limitc                V    || _         || _         t                      j        |i | d S r   )rh   ri   r   r=   )r   rh   ri   rD   r&   r)   s        r   r=   zGinIndex.__init__   s6     %&<#+000000r   c                     t                                                      \  }}}| j        
| j        |d<   | j        
| j        |d<   |||fS )Nrh   ri   )r   rF   rh   ri   rG   s       r   rF   zGinIndex.deconstruct   sW    "WW0022dF?&#'?F< &2/3/JF+,T6!!r   c                     g }| j         |                    d| j         z             | j        !|                    d| j        rdndz             |S )Nzgin_pending_list_limit = %dzfastupdate = %sr\   r]   )ri   rP   rh   rS   s     r   r!   zGinIndex.get_with_params   si    &2-0KK   ?&0DO4VDDQVWXXXr   rT   r2   s   @r   r
   r
      sv        F (,D1 1 1 1 1 1 1" " " " "      r   r
   c                   :     e Zd ZdZddd fd
Z fdZd Z xZS )r   gistN)	bufferingr`   c                V    || _         || _         t                      j        |i | d S r   )ro   r`   r   r=   )r   ro   r`   rD   r&   r)   s        r   r=   zGistIndex.__init__   s3    "$+000000r   c                     t                                                      \  }}}| j        
| j        |d<   | j        
| j        |d<   |||fS )Nro   r`   )r   rF   ro   r`   rG   s       r   rF   zGistIndex.deconstruct   sT    "WW0022dF>%"&.F;?&#'?F< T6!!r   c                     g }| j         !|                    d| j         rdndz             | j        |                    d| j        z             |S )Nzbuffering = %sr\   r]   re   )ro   rP   r`   rS   s     r   r!   zGistIndex.get_with_params   s^    >%/4>3T44uUVVV?&04?BCCCr   rT   r2   s   @r   r   r      st        F/3 1 1 1 1 1 1 1
" " " " "      r   r   c                   8     e Zd ZdZdd fd
Z fdZd Z xZS )r   hashNr`   c                H    || _          t                      j        |i | d S r   r`   r   r=   r   r`   rD   r&   r)   s       r   r=   zHashIndex.__init__   ,    $+000000r   c                 x    t                                                      \  }}}| j        
| j        |d<   |||fS Nr`   r   rF   r`   rG   s       r   rF   zHashIndex.deconstruct   @    "WW0022dF?&#'?F< T6!!r   c                 R    g }| j         |                    d| j         z             |S Nre   r`   rP   rS   s     r   r!   zHashIndex.get_with_params   1    ?&04?BCCCr   rT   r2   s   @r   r   r      sr        F04 1 1 1 1 1 1 1" " " " "      r   r   c                   >     e Zd ZdZdd fd
Z fdZd Zd Z xZS )r   spgistNru   c                H    || _          t                      j        |i | d S r   rw   rx   s       r   r=   zSpGistIndex.__init__   ry   r   c                 x    t                                                      \  }}}| j        
| j        |d<   |||fS r{   r|   rG   s       r   rF   zSpGistIndex.deconstruct   r}   r   c                 R    g }| j         |                    d| j         z             |S r   r   rS   s     r   r!   zSpGistIndex.get_with_params   r   r   c                 X    | j         r |j        j        j        st	          d          d S d S )Nz0Covering SP-GiST indexes require PostgreSQL 14+.)include
connectionfeatures supports_covering_spgist_indexesr   r,   s     r   r   zSpGistIndex.check_supported   sH    L	X!,5V	X $$VWWW		X 	X 	X 	Xr   )	r.   r/   r0   r   r=   rF   r!   r   r1   r2   s   @r   r   r      s        F04 1 1 1 1 1 1 1" " " " "  X X X X X X Xr   r   c                   &     e Zd ZdZdZ fdZ xZS )OpClassz%(expressions)s %(name)sFc                 N    t                                          ||           d S )N)name)r   r=   )r   
expressionr   r)   s      r   r=   zOpClass.__init__   s&    $/////r   )r.   r/   r0   template constraint_validation_compatibler=   r1   r2   s   @r   r   r      sC        )H',$0 0 0 0 0 0 0 0 0r   r   N)	django.dbr   django.db.modelsr   r   django.utils.functionalr   __all__r   r   r   r	   r
   r   r   r   r   r+   r   r   <module>r      s   ' ' ' ' ' ' ( ( ( ( ( ( ( ( 3 3 3 3 3 3      E   :& & & & & & & &R       >       6    }   :       2       (X X X X X- X X X60 0 0 0 0d 0 0 0 0 0r   