3
g                  @   s   d dl mZ d dlmZmZ d dlmZ dddddd	d
gZG dd deZG dd deZ	G dd deZ
G dd deZG dd deZG dd deZG dd	 d	eZG dd
 d
eZG dd deZdS )    )NotSupportedError)FuncIndex)cached_property
BloomIndex	BrinIndex
BTreeIndexGinIndex	GistIndex	HashIndexSpGistIndexc                   s:   e Zd Zedd Zd
 fdd	Zdd Zdd	 Z  ZS )PostgresIndexc             C   s   t jtt j t| j S )N)r   max_name_lengthlensuffix)self r   ]/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django/contrib/postgres/indexes.pyr      s    zPostgresIndex.max_name_length c                sX   | j | t j||fdd| j i|}| j }|rTddj||jd f |jd< |S )Nusingz	 USING %szWITH (%s) %sz, extra)check_supportedsuper
create_sqlr   get_with_paramsjoinparts)r   modelschema_editorr   kwargsZ	statementwith_params)	__class__r   r   r      s    
 zPostgresIndex.create_sqlc             C   s   d S )Nr   )r   r   r   r   r   r       s    zPostgresIndex.check_supportedc             C   s   g S )Nr   )r   r   r   r   r   #   s    zPostgresIndex.get_with_params)r   )	__name__
__module____qualname__r   r   r   r   r   __classcell__r   r   )r!   r   r      s   r   c                   s<   e Zd ZdZdf d fdd
Z fddZdd	 Z  ZS )
r   ZbloomN)lengthcolumnsc               s   t  j|| t| jdkr$tdt|ttfs:tdt|t| jkrTtdtdd |D sntd|d k	rd|  k od	kn   rt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             s   s&   | ]}d |  k odkn  V  qdS )r   i  Nr   ).0colr   r   r   	<genexpr>4   s    z&BloomIndex.__init__.<locals>.<genexpr>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!   r   r   r,   *   s     "zBloomIndex.__init__c                s>   t  j \}}}| jd k	r$| j|d< | jr4| j|d< |||fS )Nr&   r'   )r   deconstructr&   r'   )r   pathargsr   )r!   r   r   r4   ?   s    


zBloomIndex.deconstructc             C   sF   g }| j d k	r|jd| j   | jrB|jdd t| jddD  |S )Nzlength = %dc             s   s   | ]\}}d ||f V  qdS )z
col%d = %dNr   )r)   ivr   r   r   r+   M   s   z-BloomIndex.get_with_params.<locals>.<genexpr>   )start)r&   appendr'   extend	enumerate)r   r    r   r   r   r   G   s    
zBloomIndex.get_with_params)r"   r#   r$   r   r,   r4   r   r%   r   r   )r!   r   r   '   s   c                   sD   e Zd ZdZddd fdd
Z fddZdd	 Zd
d Z  ZS )r   ZbrinN)autosummarizepages_per_rangec               s6   |d k	r|dkrt d|| _|| _t j|| d S )Nr   z2pages_per_range must be None or a positive integer)r.   r>   r?   r   r,   )r   r>   r?   r3   r   )r!   r   r   r,   V   s
    zBrinIndex.__init__c                sB   t  j \}}}| jd k	r$| j|d< | jd k	r8| j|d< |||fS )Nr>   r?   )r   r4   r>   r?   )r   r5   r6   r   )r!   r   r   r4   ]   s    



zBrinIndex.deconstructc             C   s   | j r|jjj rtdd S )Nz2BRIN option autosummarize requires PostgreSQL 10+.)r>   
connectionfeaturesZhas_brin_autosummarizer   )r   r   r   r   r   r   e   s    zBrinIndex.check_supportedc             C   sD   g }| j d k	r&|jd| j rdnd  | jd k	r@|jd| j  |S )Nzautosummarize = %sonoffzpages_per_range = %d)r>   r;   r?   )r   r    r   r   r   r   i   s    

zBrinIndex.get_with_params)	r"   r#   r$   r   r,   r4   r   r   r%   r   r   )r!   r   r   S   s
   c                   s:   e Zd ZdZdd fdd
Z fddZdd	 Z  ZS )
r   ZbtreeN)
fillfactorc               s   || _ t j|| d S )N)rD   r   r,   )r   rD   r3   r   )r!   r   r   r,   u   s    zBTreeIndex.__init__c                s.   t  j \}}}| jd k	r$| j|d< |||fS )NrD   )r   r4   rD   )r   r5   r6   r   )r!   r   r   r4   y   s    

zBTreeIndex.deconstructc             C   s"   g }| j d k	r|jd| j   |S )Nzfillfactor = %d)rD   r;   )r   r    r   r   r   r      s    
zBTreeIndex.get_with_params)r"   r#   r$   r   r,   r4   r   r%   r   r   )r!   r   r   r   s   c                   s<   e Zd ZdZddd fdd
Z fddZdd	 Z  ZS )
r	   ZginN)
fastupdategin_pending_list_limitc               s   || _ || _t j|| d S )N)rE   rF   r   r,   )r   rE   rF   r3   r   )r!   r   r   r,      s    zGinIndex.__init__c                sB   t  j \}}}| jd k	r$| j|d< | jd k	r8| j|d< |||fS )NrE   rF   )r   r4   rE   rF   )r   r5   r6   r   )r!   r   r   r4      s    



zGinIndex.deconstructc             C   sD   g }| j d k	r|jd| j   | jd k	r@|jd| jr8dnd  |S )Nzgin_pending_list_limit = %dzfastupdate = %srB   rC   )rF   r;   rE   )r   r    r   r   r   r      s    

zGinIndex.get_with_params)r"   r#   r$   r   r,   r4   r   r%   r   r   )r!   r   r	      s   c                   sD   e Zd ZdZddd fdd
Z fddZdd	 Zd
d Z  ZS )r
   ZgistN)	bufferingrD   c               s   || _ || _t j|| d S )N)rG   rD   r   r,   )r   rG   rD   r3   r   )r!   r   r   r,      s    zGistIndex.__init__c                sB   t  j \}}}| jd k	r$| j|d< | jd k	r8| j|d< |||fS )NrG   rD   )r   r4   rG   rD   )r   r5   r6   r   )r!   r   r   r4      s    



zGistIndex.deconstructc             C   sD   g }| j d k	r&|jd| j rdnd  | jd k	r@|jd| j  |S )Nzbuffering = %srB   rC   zfillfactor = %d)rG   r;   rD   )r   r    r   r   r   r      s    

zGistIndex.get_with_paramsc             C   s   | j r|jjj rtdd S )Nz.Covering GiST indexes requires PostgreSQL 12+.)includer@   rA   Zsupports_covering_gist_indexesr   )r   r   r   r   r   r      s    zGistIndex.check_supported)	r"   r#   r$   r   r,   r4   r   r   r%   r   r   )r!   r   r
      s
   c                   s:   e Zd ZdZdd fdd
Z fddZdd	 Z  ZS )
r   hashN)rD   c               s   || _ t j|| d S )N)rD   r   r,   )r   rD   r3   r   )r!   r   r   r,      s    zHashIndex.__init__c                s.   t  j \}}}| jd k	r$| j|d< |||fS )NrD   )r   r4   rD   )r   r5   r6   r   )r!   r   r   r4      s    

zHashIndex.deconstructc             C   s"   g }| j d k	r|jd| j   |S )Nzfillfactor = %d)rD   r;   )r   r    r   r   r   r      s    
zHashIndex.get_with_params)r"   r#   r$   r   r,   r4   r   r%   r   r   )r!   r   r      s   c                   s:   e Zd ZdZdd fdd
Z fddZdd	 Z  ZS )
r   ZspgistN)rD   c               s   || _ t j|| d S )N)rD   r   r,   )r   rD   r3   r   )r!   r   r   r,      s    zSpGistIndex.__init__c                s.   t  j \}}}| jd k	r$| j|d< |||fS )NrD   )r   r4   rD   )r   r5   r6   r   )r!   r   r   r4      s    

zSpGistIndex.deconstructc             C   s"   g }| j d k	r|jd| j   |S )Nzfillfactor = %d)rD   r;   )r   r    r   r   r   r      s    
zSpGistIndex.get_with_params)r"   r#   r$   r   r,   r4   r   r%   r   r   )r!   r   r      s   c                   s    e Zd ZdZ fddZ  ZS )OpClassz%(expressions)s %(name)sc                s   t  j||d d S )N)name)r   r,   )r   Z
expressionrK   )r!   r   r   r,      s    zOpClass.__init__)r"   r#   r$   templater,   r%   r   r   )r!   r   rJ      s   rJ   N)Z	django.dbr   Zdjango.db.modelsr   r   Zdjango.utils.functionalr   __all__r   r   r   r   r	   r
   r   r   rJ   r   r   r   r   <module>   s   
,