
    gW!                         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y)    )NotSupportedError)FuncIndex)cached_property)
BloomIndex	BrinIndex
BTreeIndexGinIndex	GistIndex	HashIndexSpGistIndexc                   <     e Zd Zed        Zd fd	Zd Zd Z xZS )PostgresIndexc                     t         j                  t        t         j                        z
  t        | j                        z   S N)r   max_name_lengthlensuffixselfs    w/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/contrib/postgres/indexes.pyr   zPostgresIndex.max_name_length   s,     $$s5<<'883t{{;KKK    c                     | j                  |       t        |   ||fdd|xs | j                  z  i|}| j	                         }|r1ddj                  |      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    ]+G&=
(3u7K(L
PV
	 **,		+&((IOOG$ r   c                      y 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   ) )	__name__
__module____qualname__r   r   r   r   r    __classcell__r(   s   @r   r   r      s&    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        |   |i | t        | j                        dkD  rt	        d      t        |t        t        f      st	        d      t        |      t        | j                        kD  rt	        d      t        d |D              st	        d      |"d|cxk  rdk  st	        d	       t	        d	      || _	        || _
        y )
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   <   K   | ]  }d |cxk  xr dk  nc   yw)r   i  Nr*   ).0cols     r   	<genexpr>z&BloomIndex.__init__.<locals>.<genexpr>8   s     6gs1s?d??gs   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t{{b LMM'D%=1JKKw<#dkk**VWW6g66J  a&&8D&8N  '9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   sQ    "W02dF;;"#{{F8<< $F9T6!!r   c                     g }| j                   |j                  d| j                   z         | j                  r-|j                  d t	        | j                  d      D               |S )Nzlength = %dc              3   0   K   | ]  \  }}d ||fz    yw)z
col%d = %dNr*   )r:   ivs      r   r<   z-BloomIndex.get_with_params.<locals>.<genexpr>P   s"      2R$!Q1v%2Rs      )start)r5   appendr6   extend	enumerater   r'   s     r   r    zBloomIndex.get_with_paramsK   s^    ;;"}t{{:;<< 2;DLLPQ2R  r   r.   r/   r0   r   r=   rF   r    r1   r2   s   @r   r   r   -   s    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    ||dk  rt        d      || _        || _        t        |   |i | y )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   s@     &?a+?QRR*.+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   s]    "W02dF)&*&8&8F?#+(,(<(<F$%T6!!r   c                     g }| j                   "|j                  d| j                   rdndz         | j                  |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   sa    )$0B0BN +58L8LLMr   rT   r2   s   @r   r   r   V   s    F +/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                @    || _         || _        t        |   |i | y r   )r`   ra   r   r=   )r   r`   ra   rD   r%   r(   s        r   r=   zBTreeIndex.__init__x   s$    $!2+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}   sY    "W02dF??&#'??F< !!-*.*@*@F&'T6!!r   c                     g }| j                   |j                  d| j                   z         | j                  "|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   s^    ??&04??BC!!-(D4J4JDPUV r   rT   r2   s   @r   r	   r	   u   s    F04 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                @    || _         || _        t        |   |i | y r   )rh   ri   r   r=   )r   rh   ri   rD   r%   r(   s        r   r=   zGinIndex.__init__   s&     %&<#+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   sY    "W02dF??&#'??F< &&2/3/J/JF+,T6!!r   c                     g }| j                   |j                  d| j                   z         | j                  "|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   s^    &&2-0K0KK ??&0DOODQVWXr   rT   r2   s   @r   r
   r
      s    F (,D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                @    || _         || _        t        |   |i | y r   )ro   r`   r   r=   )r   ro   r`   rD   r%   r(   s        r   r=   zGistIndex.__init__   s#    "$+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    "W02dF>>%"&..F;??&#'??F< T6!!r   c                     g }| j                   "|j                  d| j                   rdndz         | j                  |j                  d| j                  z         |S )Nzbuffering = %sr\   r]   re   )ro   rP   r`   rS   s     r   r    zGistIndex.get_with_params   sU    >>%/4>>4uUV??&04??BCr   rT   r2   s   @r   r   r      s    F/3 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                2    || _         t        |   |i | y r   r`   r   r=   r   r`   rD   r%   r(   s       r   r=   zHashIndex.__init__       $+00r   c                 h    t         |          \  }}}| j                  | j                  |d<   |||fS Nr`   r   rF   r`   rG   s       r   rF   zHashIndex.deconstruct   <    "W02dF??&#'??F< T6!!r   c                 ^    g }| j                   |j                  d| j                   z         |S Nre   r`   rP   rS   s     r   r    zHashIndex.get_with_params   /    ??&04??BCr   rT   r2   s   @r   r   r      s    F04 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                2    || _         t        |   |i | y r   rw   rx   s       r   r=   zSpGistIndex.__init__   ry   r   c                 h    t         |          \  }}}| j                  | j                  |d<   |||fS r{   r|   rG   s       r   rF   zSpGistIndex.deconstruct   r}   r   c                 ^    g }| j                   |j                  d| j                   z         |S r   r   rS   s     r   r    zSpGistIndex.get_with_params   r   r   c                 t    | j                   r,|j                  j                  j                  st	        d      y y )Nz0Covering SP-GiST indexes require PostgreSQL 14+.)include
connectionfeatures supports_covering_spgist_indexesr   r+   s     r   r   zSpGistIndex.check_supported   s5    LL!,,55VV#$VWW W r   )	r.   r/   r0   r   r=   rF   r    r   r1   r2   s   @r   r   r      s     F04 1"Xr   r   c                   &     e Zd ZdZdZ fdZ xZS )OpClassz%(expressions)s %(name)sFc                 (    t         |   ||       y )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      s    )H',$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E :& &R > 6} : 2 (X- X60d 0r   