
    hW!                         S SK Jr  S SKJrJr  S SKJr  / SQr " S S\5      r " S S\5      r	 " S	 S
\5      r
 " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)    )NotSupportedError)FuncIndex)cached_property)
BloomIndex	BrinIndex
BTreeIndexGinIndex	GistIndex	HashIndexSpGistIndexc                   H   ^  \ rS rSr\S 5       rSU 4S jjrS rS rSr	U =r
$ )PostgresIndex   c                     [         R                  [        [         R                  5      -
  [        U R                  5      -   $ N)r   max_name_lengthlensuffixselfs    Q/var/www/html/env/lib/python3.13/site-packages/django/contrib/postgres/indexes.pyr   PostgresIndex.max_name_length   s,     $$s5<<'883t{{;KKK    c                   > U R                  U5        [        TU ]  " X4SSU=(       d    U R                  -  0UD6nU R	                  5       nU(       a3  SSR                  U5      < SUR                  S   < 3UR                  S'   U$ )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!   PostgresIndex.create_sql   s    ]+G&
(3u7K(L
PV
	 **,		+&((IOOG$ r   c                     g r    r   r&   s     r   r   PostgresIndex.check_supported&   s    r   c                     / $ r   r-   r   s    r   r"   PostgresIndex.get_with_params)   s    	r   r-   ) )__name__
__module____qualname____firstlineno__r   r   r!   r   r"   __static_attributes____classcell__r*   s   @r   r   r      s+    L L r   r   c                   H   ^  \ rS rSrSrSSS.U 4S jjrU 4S jrS rS	rU =r	$ )
r   -   bloomNr-   )lengthcolumnsc                  > [         TU ]  " U0 UD6  [        U R                  5      S:  a  [	        S5      e[        U[        [        45      (       d  [	        S5      e[        U5      [        U R                  5      :  a  [	        S5      e[        S U 5       5      (       d  [	        S5      eUb  SUs=:  a  S::  d  O  [	        S	5      eXl	        X l
        g )
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   L   #    U  H  nS Us=:  =(       a    S:*  Os  v   M     g7f)r   i  Nr-   ).0cols     r   	<genexpr>&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allr=   r>   )r   r=   r>   expressionsr'   r*   s        r   rF   BloomIndex.__init__0   s    +00t{{b LMM'D%=11JKKw<#dkk**VWW6g666J  a&&8D&8N  r   c                    > [         TU ]  5       u  pnU R                  b  U R                  US'   U R                  (       a  U R                  US'   XU4$ )Nr=   r>   )r    deconstructr=   r>   r   pathargsr'   r*   s       r   rP   BloomIndex.deconstructC   sM    "W02F;;"#{{F8<< $F96!!r   c                     / nU R                   b  UR                  SU R                   -  5        U R                  (       a*  UR                  S [	        U R                  SS9 5       5        U$ )Nzlength = %dc              3   2   #    U  H  u  pS X4-  v   M     g7f)z
col%d = %dNr-   )rB   ivs      r   rD   -BloomIndex.get_with_params.<locals>.<genexpr>P   s      2R$!v%2Rs      )start)r=   appendr>   extend	enumerater   r)   s     r   r"   BloomIndex.get_with_paramsK   s^    ;;"}t{{:;<< 2;DLLPQ2R  r   )r>   r=   
r3   r4   r5   r6   r   rF   rP   r"   r7   r8   r9   s   @r   r   r   -   s&    F,0"  &" r   r   c                   H   ^  \ rS rSrSrSSS.U 4S jjrU 4S jrS rSrU =r	$ )r   V   brinN)autosummarizepages_per_rangec                f   > Ub  US::  a  [        S5      eXl        X l        [        TU ]  " U0 UD6  g )Nr   z2pages_per_range must be None or a positive integer)rH   re   rf   r    rF   )r   re   rf   rM   r'   r*   s        r   rF   BrinIndex.__init__Y   s<     &?a+?QRR*.+00r   c                    > [         TU ]  5       u  pnU R                  b  U R                  US'   U R                  b  U R                  US'   XU4$ )Nre   rf   )r    rP   re   rf   rQ   s       r   rP   BrinIndex.deconstructb   sY    "W02F)&*&8&8F?#+(,(<(<F$%6!!r   c                     / nU R                   b'  UR                  SU R                   (       a  SOS-  5        U R                  b  UR                  SU R                  -  5        U$ )Nzautosummarize = %sonoffzpages_per_range = %d)re   r\   rf   r_   s     r   r"   BrinIndex.get_with_paramsj   sa    )$0B0BN +58L8LLMr   ra   r9   s   @r   r   r   V   s(    F +/1 1" r   r   c                   H   ^  \ rS rSrSrSSS.U 4S jjrU 4S jrS rSrU =r	$ )	r	   u   btreeN)
fillfactordeduplicate_itemsc                >   > Xl         X l        [        TU ]  " U0 UD6  g r   )rr   rs   r    rF   )r   rr   rs   rM   r'   r*   s        r   rF   BTreeIndex.__init__x   s     $!2+00r   c                    > [         TU ]  5       u  pnU R                  b  U R                  US'   U R                  b  U R                  US'   XU4$ )Nrr   rs   )r    rP   rr   rs   rQ   s       r   rP   BTreeIndex.deconstruct}   sU    "W02F??&#'??F< !!-*.*@*@F&'6!!r   c                     / nU R                   b  UR                  SU R                   -  5        U R                  b'  UR                  SU R                  (       a  SOS-  5        U$ )Nfillfactor = %dzdeduplicate_items = %srl   rm   )rr   r\   rs   r_   s     r   r"   BTreeIndex.get_with_params   s^    ??&04??BC!!-(D4J4JDPUV r   )rs   rr   ra   r9   s   @r   r	   r	   u   s&    F04 1 1
" r   r	   c                   H   ^  \ rS rSrSrSSS.U 4S jjrU 4S jrS rSrU =r	$ )r
      ginN)
fastupdategin_pending_list_limitc                >   > Xl         X l        [        TU ]  " U0 UD6  g r   )r~   r   r    rF   )r   r~   r   rM   r'   r*   s        r   rF   GinIndex.__init__   s"     %&<#+00r   c                    > [         TU ]  5       u  pnU R                  b  U R                  US'   U R                  b  U R                  US'   XU4$ )Nr~   r   )r    rP   r~   r   rQ   s       r   rP   GinIndex.deconstruct   sU    "W02F??&#'??F< &&2/3/J/JF+,6!!r   c                     / nU R                   b  UR                  SU R                   -  5        U R                  b'  UR                  SU R                  (       a  SOS-  5        U$ )Nzgin_pending_list_limit = %dzfastupdate = %srl   rm   )r   r\   r~   r_   s     r   r"   GinIndex.get_with_params   s^    &&2-0K0KK ??&0DOODQVWXr   ra   r9   s   @r   r
   r
      s(    F (,D1 1" r   r
   c                   H   ^  \ rS rSrSrSSS.U 4S jjrU 4S jrS rSrU =r	$ )r      gistN)	bufferingrr   c                >   > Xl         X l        [        TU ]  " U0 UD6  g r   )r   rr   r    rF   )r   r   rr   rM   r'   r*   s        r   rF   GistIndex.__init__   s    "$+00r   c                    > [         TU ]  5       u  pnU R                  b  U R                  US'   U R                  b  U R                  US'   XU4$ )Nr   rr   )r    rP   r   rr   rQ   s       r   rP   GistIndex.deconstruct   sP    "W02F>>%"&..F;??&#'??F< 6!!r   c                     / nU R                   b'  UR                  SU R                   (       a  SOS-  5        U R                  b  UR                  SU R                  -  5        U$ )Nzbuffering = %srl   rm   ry   )r   r\   rr   r_   s     r   r"   GistIndex.get_with_params   sU    >>%/4>>4uUV??&04??BCr   ra   r9   s   @r   r   r      s&    F/3 1 1
" r   r   c                   F   ^  \ rS rSrSrSS.U 4S jjrU 4S jrS rSrU =r	$ )r      hashNrr   c                2   > Xl         [        TU ]  " U0 UD6  g r   rr   r    rF   r   rr   rM   r'   r*   s       r   rF   HashIndex.__init__       $+00r   c                 f   > [         TU ]  5       u  pnU R                  b  U R                  US'   XU4$ Nrr   r    rP   rr   rQ   s       r   rP   HashIndex.deconstruct   8    "W02F??&#'??F< 6!!r   c                 `    / nU R                   b  UR                  SU R                   -  5        U$ Nry   rr   r\   r_   s     r   r"   HashIndex.get_with_params   /    ??&04??BCr   ra   r9   s   @r   r   r      s$    F04 1 1" r   r   c                   L   ^  \ rS rSrSrSS.U 4S jjrU 4S jrS rS rSr	U =r
$ )	r      spgistNr   c                2   > Xl         [        TU ]  " U0 UD6  g r   r   r   s       r   rF   SpGistIndex.__init__   r   r   c                 f   > [         TU ]  5       u  pnU R                  b  U R                  US'   XU4$ r   r   rQ   s       r   rP   SpGistIndex.deconstruct   r   r   c                 `    / nU R                   b  UR                  SU R                   -  5        U$ r   r   r_   s     r   r"   SpGistIndex.get_with_params   r   r   c                     U R                   (       a1  UR                  R                  R                  (       d  [	        S5      eg g )Nz0Covering SP-GiST indexes require PostgreSQL 14+.)include
connectionfeatures supports_covering_spgist_indexesr   r.   s     r   r   SpGistIndex.check_supported   s5    LL!,,55VV#$VWW W r   )r3   r4   r5   r6   r   rF   rP   r"   r   r7   r8   r9   s   @r   r   r      s+    F04 1 1"X Xr   r   c                   0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )OpClass   z%(expressions)s %(name)sFc                     > [         TU ]  XS9  g )N)name)r    rF   )r   
expressionr   r*   s      r   rF   OpClass.__init__   s    /r   r-   )	r3   r4   r5   r6   template constraint_validation_compatiblerF   r7   r8   r9   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   