Ë
    ^Qêj‰Œ  ã                  ó”  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZmZmZm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«      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"«      Z, G d#„ d$e«      Z- G d%„ d&e«      Z. G d'„ d(e-«      Z/ G d)„ d*e«      Z0 G d+„ d,e«      Z1 G d-„ d.e«      Z2 G d/„ d0e«      Z3 G d1„ d2e«      Z4 G d3„ d4e-«      Z5 G d5„ d6e«      Z6 G d7„ d8e«      Z7 G d9„ d:e«      Z8 G d;„ d<e«      Z9 G d=„ d>e«      Z: G d?„ d@e«      Z; G dA„ dBe«      Z< G dC„ dDe«      Z= G dE„ dFe«      Z> G dG„ dHe>«      Z? G dI„ dJe«      Z@ G dK„ dLe«      ZAy)Mé    )ÚannotationsN)Úcopy)ÚAny)ÚDialects)ÚCreateQueryBuilderÚDatabaseÚDropQueryBuilderÚQueryÚQueryBuilderÚ
SelectableÚTable)	ÚArithmeticExpressionÚ	CriterionÚEmptyCriterionÚFieldÚFunctionÚNullCriterionÚStarÚTermÚValueWrapper)ÚQueryExceptionÚbuilderÚformat_alias_sqlÚformat_quotesc                  óF   — e Zd ZdZedd„«       Zedd„«       Zedd„«       Zy)	ÚSnowflakeQueryz7
    Defines a query class for use with Snowflake.
    c                ó   — t        di |¤ŽS ©N© )ÚSnowflakeQueryBuilder©ÚclsÚkwargss     úT/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/pypika/dialects.pyÚ_builderzSnowflakeQuery._builder%   s   € ä$Ñ. vÑ.Ð.ó    c                ó4   — t        «       j                  |«      S ©N)ÚSnowflakeCreateQueryBuilderÚcreate_table©r"   Útables     r$   r*   zSnowflakeQuery.create_table)   s   € ä*Ó,×9Ñ9¸%Ó@Ð@r&   c                ó4   — t        «       j                  |«      S r(   )ÚSnowflakeDropQueryBuilderÚ
drop_tabler+   s     r$   r/   zSnowflakeQuery.drop_table-   s   € ä(Ó*×5Ñ5°eÓ<Ð<r&   N)r#   r   Úreturnr    )r,   ústr | Tabler0   r)   )r,   r1   r0   r.   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr%   r*   r/   r   r&   r$   r   r       sE   „ ñð ò/ó ð/ð òAó ðAð ò=ó ñ=r&   r   c                  ó0   ‡ — e Zd ZdZdZdZeZdˆ fd„Zˆ xZ	S )r    Nú"Ú c                óD   •— t        ‰| �  ddt        j                  i|¤Ž y ©NÚdialectr   ©ÚsuperÚ__init__r   Ú	SNOWFLAKE©Úselfr#   Ú	__class__s     €r$   r?   zSnowflakeQueryBuilder.__init__8   s   ø€ Ü‰ÑÑ>¤×!3Ñ!3Ð>°vÓ>r&   ©r#   r   r0   ÚNone)
r2   r3   r4   Ú
QUOTE_CHARÚALIAS_QUOTE_CHARÚQUERY_ALIAS_QUOTE_CHARr   Ú	QUERY_CLSr?   Ú__classcell__©rC   s   @r$   r    r    2   s#   ø„ Ø€JØÐØÐØ€I÷?ñ ?r&   r    c                  ó(   ‡ — e Zd ZdZeZdˆ fd„Zˆ xZS )r)   Nc                óB   •— t         ‰| �  t        j                  ¬«       y ©N©r<   r=   ©rB   rC   s    €r$   r?   z$SnowflakeCreateQueryBuilder.__init__@   ó   ø€ Ü‰Ñ¤×!3Ñ!3ÐÕ4r&   ©r0   rE   ©r2   r3   r4   rF   r   rI   r?   rJ   rK   s   @r$   r)   r)   <   ó   ø„ Ø€JØ€I÷5ñ 5r&   r)   c                  ó(   ‡ — e Zd ZdZeZdˆ fd„Zˆ xZS )r.   Nc                óB   •— t         ‰| �  t        j                  ¬«       y rN   r=   rP   s    €r$   r?   z"SnowflakeDropQueryBuilder.__init__H   rQ   r&   rR   rS   rK   s   @r$   r.   r.   D   rT   r&   r.   c                  óX   — e Zd ZdZedd„«       Zedd„«       Zed	d„«       Zed
d„«       Zy)Ú
MySQLQueryz3
    Defines a query class for use with MySQL.
    c                ó   — t        di |¤ŽS r   )ÚMySQLQueryBuilderr!   s     r$   r%   zMySQLQuery._builderQ   ó   € ä Ñ* 6Ñ*Ð*r&   c                ó4   — t        «       j                  |«      S r(   )ÚMySQLLoadQueryBuilderÚload©r"   Úfps     r$   r^   zMySQLQuery.loadU   s   € ä$Ó&×+Ñ+¨BÓ/Ð/r&   c                ó4   — t        «       j                  |«      S r(   )ÚMySQLCreateQueryBuilderr*   r+   s     r$   r*   zMySQLQuery.create_tableY   s   € ä&Ó(×5Ñ5°eÓ<Ð<r&   c                ó4   — t        «       j                  |«      S r(   )ÚMySQLDropQueryBuilderr/   r+   s     r$   r/   zMySQLQuery.drop_table]   s   € ä$Ó&×1Ñ1°%Ó8Ð8r&   N)r#   r   r0   rZ   )r`   Ústrr0   r]   )r,   r1   r0   rb   )r,   r1   r0   rd   )	r2   r3   r4   r5   r6   r%   r^   r*   r/   r   r&   r$   rX   rX   L   sW   „ ñð ò+ó ð+ð ò0ó ð0ð ò=ó ð=ð ò9ó ñ9r&   rX   c                  óª   ‡ — e Zd ZdZeZdˆ fd„Zdˆ fd„Zeddd„«       Z	edd„«       Z
edd„«       Zdˆ fd„Zdd„Zdd	„Zdd
„Zedd„«       Zdd„Zˆ xZS )rZ   ú`c                ó¨   •— t        ‰| �  ddt        j                  i|¤Ž g | _        d| _        g | _        d| _        d| _        t        «       | _
        y ©Nr<   Fr   )r>   r?   r   ÚMYSQLÚ_duplicate_updatesÚ_ignore_duplicatesÚ
_modifiersÚ_for_update_nowaitÚ_for_update_skip_lockedÚsetÚ_for_update_ofrA   s     €r$   r?   zMySQLQueryBuilder.__init__f   sM   ø€ Ü‰ÑÑ:¤§¡Ð:°6Ò:Ø"$ˆÔØ"'ˆÔØˆŒà"'ˆÔØ',ˆÔ$Ü!›eˆÕr&   c                óŒ   •— t         ‰| �  «       }t        | j                  «      |_        t        | j                  «      |_        |S r(   )r>   Ú__copy__r   rk   rl   ©rB   ÚnewonerC   s     €r$   rs   zMySQLQueryBuilder.__copy__p   s;   ø€ Ü‘Ñ!Ó#ˆÜ$(¨×)@Ñ)@Ó$AˆÔ!Ü$(¨×)@Ñ)@Ó$AˆÔ!Øˆr&   c                óN   — d| _         || _        || _        t        |«      | _        y ©NT©Ú_for_updatero   rn   rp   rq   ©rB   ÚnowaitÚskip_lockedÚofs       r$   Ú
for_updatezMySQLQueryBuilder.for_updatev   ó&   € àˆÔØ'2ˆÔ$Ø"(ˆÔÜ! "›gˆÕr&   c                ó¸   — | j                   rt        d«      ‚t        |t        «      st        |«      n|}| j                  j                  |t        |«      f«       y )Nú"Can not have two conflict handlers)rl   r   Ú
isinstancer   rk   Úappendr   )rB   ÚfieldÚvalues      r$   Úon_duplicate_key_updatez)MySQLQueryBuilder.on_duplicate_key_update}   sI   € à×"Ò"Ü Ð!EÓFÐFä$.¨u´eÔ$<”�e”À%ˆØ×Ñ×&Ñ&¨¬|¸EÓ/BÐ'CÕDr&   c                ó@   — | j                   rt        d«      ‚d| _        y )Nr�   T)rk   r   rl   ©rB   s    r$   Úon_duplicate_key_ignorez)MySQLQueryBuilder.on_duplicate_key_ignore…   s   € à×"Ò"Ü Ð!EÓFÐFà"&ˆÕr&   c                óÐ   •— | j                  |«       t        ‰| �  di |¤Ž}|rB| j                  r| | j                  di |¤Žz  }|S | j
                  r|| j                  «       z  }|S r   )Ú_set_kwargs_defaultsr>   Úget_sqlrk   Ú_on_duplicate_key_update_sqlrl   Ú_on_duplicate_key_ignore_sql)rB   r#   ÚquerystringrC   s      €r$   rŒ   zMySQLQueryBuilder.get_sqlŒ   su   ø€ Ø×!Ñ! &Ô)Ü‘g‘oÑ/¨Ñ/ˆÙØ×&Ò&ØÐ@˜t×@Ñ@ÑJÀ6ÑJÑJ�ð Ðð ×(Ò(Ø˜t×@Ñ@ÓBÑB�ØÐr&   c                ó$  — | j                   r|d}| j                  rH|ddj                  | j                  D �cg c]  } t        |«      j                  di |¤Ž‘Œ c}«      › �z  }| j
                  r|dz  }|S | j                  r|dz  }|S d}|S c c}w ©Nz FOR UPDATEz OF ú, z NOWAITz SKIP LOCKEDr9   r   ©ry   rq   Újoinr   rŒ   rn   ro   ©rB   r#   r~   Úitems       r$   Ú_for_update_sqlz!MySQLQueryBuilder._for_update_sql–   ó§   € Ø×ÒØ&ˆJØ×"Ò"Ø  T§Y¡YÐZ^×ZmÑZmÖ/nÐRVÐ0C´°d³×0CÑ0CÑ0MÀfÓ0MÒ/nÓ%oÐ$pÐqÑq�
Ø×&Ò&Ø˜iÑ'�
ð Ðð ×-Ò-Ø˜nÑ,�
ð Ðð ˆJàÐùò 0oó   ¶"Bc                ól   ‡— dj                  dj                  ˆfd„| j                  D «       «      ¬«      S )Nz" ON DUPLICATE KEY UPDATE {updates}ú,c           	   3  óŠ   •K  — | ]:  \  }}d j                   |j                  di ‰¤Ž |j                  di ‰¤Ž¬«      –— Œ< y­w)ú{field}={value}©r„   r…   Nr   )ÚformatrŒ   ©Ú.0r„   r…   r#   s      €r$   ú	<genexpr>zAMySQLQueryBuilder._on_duplicate_key_update_sql.<locals>.<genexpr>¦   sJ   øè ø€ ò á �E˜5ð "×(Ñ(¨}¨u¯}©}Ñ/F¸vÑ/FÈmÈeÏmÉmÑNeÐ^dÑNeÐ(×fñùs   ƒA A©Úupdates)rŸ   r”   rk   ©rB   r#   s    `r$   r�   z.MySQLQueryBuilder._on_duplicate_key_update_sql¤   s:   ø€ Ø3×:Ñ:Ø—H‘Hó à$(×$;Ñ$;ôó ð ;ó 
ð 	
r&   c                 ó   — y)Nz ON DUPLICATE KEY IGNOREr   rˆ   s    r$   rŽ   z.MySQLQueryBuilder._on_duplicate_key_ignore_sql¬   s   € Ø)r&   c                ó:   — | j                   j                  |«       y)zÊ
        Adds a modifier such as SQL_CALC_FOUND_ROWS to the query.
        https://dev.mysql.com/doc/refman/5.7/en/select.html

        :param value: The modifier value e.g. SQL_CALC_FOUND_ROWS
        N)rm   rƒ   )rB   r…   s     r$   ÚmodifierzMySQLQueryBuilder.modifier¯   s   € ð 	�‰×Ñ˜uÕ%r&   c                óø   ‡— dj                  | j                  rdnd| j                  r*dj                  dj                  | j                  «      «      nddj                  ˆfd„| j                  D «       «      ¬«      S )	z�
        Overridden function to generate the SELECT part of the SQL statement,
        with the addition of the a modifier if present.
        z#SELECT {distinct}{modifier}{select}ú	DISTINCT r9   z{} ú r›   c              3  óH   •K  — | ]  } |j                   dd d dœ‰¤Ž–— Œ y­w©T)Ú
with_aliasÚsubqueryNr   ©rŒ   ©r¡   Útermr#   s     €r$   r¢   z0MySQLQueryBuilder._select_sql.<locals>.<genexpr>Á   ó'   øè ø€ ÒmÐW[˜L˜DŸL™LÐR°DÀ4ÑRÈ6ÕRÑmùó   ƒ")Údistinctr¨   Úselect)rŸ   Ú	_distinctrm   r”   Ú_selectsr¥   s    `r$   Ú_select_sqlzMySQLQueryBuilder._select_sql¹   sc   ø€ ð
 5×;Ñ;Ø$(§N¢N‘[¸Ø@DÇÂ�U—\‘\ #§(¡(¨4¯?©?Ó";Ô<ÐUWØ—8‘8ÓmÐ_c×_lÑ_lÔmÓmð <ó 
ð 	
r&   rD   )r0   rZ   ©FFr   )r{   Úboolr|   r»   r}   útuple[str, ...]r0   rE   )r„   zField | strr…   r   r0   rE   rR   ©r#   r   r0   re   ©r0   re   )r…   re   r0   rE   )r2   r3   r4   rF   rX   rI   r?   rs   r   r~   r†   r‰   rŒ   r—   r�   rŽ   r¨   r¹   rJ   rK   s   @r$   rZ   rZ   b   s‚   ø„ Ø€JØ€Iõ$õð ó&ó ð&ð òEó ðEð ò'ó ð'õóó
ó*ð ò&ó ð&÷	
r&   rZ   c                  ód   — e Zd ZeZd
d„Zedd„«       Zedd„«       Zdd„Z	dd„Z
dd„Zdd„Zdd„Zy	)r]   c                ó    — d | _         d | _        y r(   )Ú
_load_fileÚ_into_tablerˆ   s    r$   r?   zMySQLLoadQueryBuilder.__init__È   s   € ØˆŒØˆÕr&   c                ó   — || _         y r(   )rÁ   ©rB   r`   s     r$   r^   zMySQLLoadQueryBuilder.loadÌ   ó	   € àˆ�r&   c                óT   — t        |t        «      r|| _        y t        |«      | _        y r(   )r‚   r   rÂ   ©rB   r,   s     r$   ÚintozMySQLLoadQueryBuilder.intoÐ   ó   € ä$.¨u´eÔ$<˜5ˆÕÄ%ÈÃ,ˆÕr&   c                ó¸   — d}| j                   rK| j                  r?| | j                  di |¤Žz  }| | j                  di |¤Žz  }| | j                  di |¤Žz  }|S ©Nr9   r   )rÁ   rÂ   Ú_load_file_sqlÚ_into_table_sqlÚ_options_sql©rB   Úargsr#   r�   s       r$   rŒ   zMySQLLoadQueryBuilder.get_sqlÔ   sm   € ØˆØ�?Š?˜t×/Ò/ØÐ.˜4×.Ñ.Ñ8°Ñ8Ñ8ˆKØÐ/˜4×/Ñ/Ñ9°&Ñ9Ñ9ˆKØÐ,˜4×,Ñ,Ñ6¨vÑ6Ñ6ˆKàÐr&   c                ó8   — dj                  | j                  «      S )NzLOAD DATA LOCAL INFILE '{}')rŸ   rÁ   r¥   s     r$   rÌ   z$MySQLLoadQueryBuilder._load_file_sqlÝ   s   € Ø,×3Ñ3°D·O±OÓDÐDr&   c                óX   — dj                   | j                  j                  di |¤Ž«      S )Nz INTO TABLE `{}`r   )rŸ   rÂ   rŒ   r¥   s     r$   rÍ   z%MySQLLoadQueryBuilder._into_table_sqlà   s*   € Ø!×(Ñ(Ð)A¨×)9Ñ)9×)AÑ)AÑ)KÀFÑ)KÓLÐLr&   c                 ó   — y)Nz FIELDS TERMINATED BY ','r   r¥   s     r$   rÎ   z"MySQLLoadQueryBuilder._options_sqlã   s   € Ø*r&   c                ó"   — | j                  «       S r(   r°   rˆ   s    r$   Ú__str__zMySQLLoadQueryBuilder.__str__æ   ó   € Ø�|‰|‹~Ðr&   NrR   ©r`   re   r0   rE   ©r,   r1   r0   rE   ©rÐ   r   r#   r   r0   re   r½   r¾   )r2   r3   r4   rX   rI   r?   r   r^   rÈ   rŒ   rÌ   rÍ   rÎ   rÕ   r   r&   r$   r]   r]   Å   sQ   „ Ø€Ió ð òó ðð òOó ðOóóEóMó+ôr&   r]   c                  ó   — e Zd ZdZy)rb   rg   N©r2   r3   r4   rF   r   r&   r$   rb   rb   ê   ó   „ Ø�Jr&   rb   c                  ó   — e Zd ZdZy)rd   rg   NrÛ   r   r&   r$   rd   rd   î   rÜ   r&   rd   c                  óF   — e Zd ZdZedd„«       Zedd„«       Zedd„«       Zy)	ÚVerticaQueryz5
    Defines a query class for use with Vertica.
    c                ó   — t        di |¤ŽS r   )ÚVerticaQueryBuilderr!   s     r$   r%   zVerticaQuery._builder÷   ó   € ä"Ñ, VÑ,Ð,r&   c                ó4   — t        «       j                  |«      S r(   )ÚVerticaCopyQueryBuilderÚ	from_filer_   s     r$   rå   zVerticaQuery.from_fileû   s   € ä&Ó(×2Ñ2°2Ó6Ð6r&   c                ó4   — t        «       j                  |«      S r(   )ÚVerticaCreateQueryBuilderr*   r+   s     r$   r*   zVerticaQuery.create_tableÿ   s   € ä(Ó*×7Ñ7¸Ó>Ð>r&   N)r0   rá   )r`   re   r0   rä   )r,   r1   r0   rç   )r2   r3   r4   r5   r6   r%   rå   r*   r   r&   r$   rß   rß   ò   sC   „ ñð ò-ó ð-ð ò7ó ð7ð ò?ó ñ?r&   rß   c                  óB   ‡ — e Zd ZeZdˆ fd„Zedd„«       Zdˆ fd„Zˆ xZ	S )rá   c                óR   •— t        ‰| �  ddt        j                  i|¤Ž d | _        y r;   )r>   r?   r   ÚVERTICAÚ_hintrA   s     €r$   r?   zVerticaQueryBuilder.__init__  s%   ø€ Ü‰ÑÑ<¤×!1Ñ!1Ð<°VÒ<Øˆ�
r&   c                ó   — || _         y r(   )rë   )rB   Úlabels     r$   ÚhintzVerticaQueryBuilder.hint  s	   € àˆ�
r&   c                ó¦   •— t        ‰| �  |i |¤Ž}| j                  �4dj                  |d d dj	                  | j                  ¬«      |dd  g«      }|S )Nr9   é   z/*+label({hint})*/)rî   é   )r>   rŒ   rë   r”   rŸ   )rB   rÐ   r#   ÚsqlrC   s       €r$   rŒ   zVerticaQueryBuilder.get_sql  s]   ø€ Ü‰g‰o˜tÐ. vÑ.ˆà�:‰:Ð!Ø—'‘'˜3˜r ˜7Ð$8×$?Ñ$?ÀTÇZÁZÐ$?Ó$PÐRUÐVWÐVXÐRYÐZÓ[ˆCàˆ
r&   rD   )rí   re   r0   rE   rÙ   )
r2   r3   r4   rß   rI   r?   r   rî   rŒ   rJ   rK   s   @r$   rá   rá     s+   ø„ Ø€Iõð òó ð÷ñ r&   rá   c                  ól   ‡ — e Zd ZeZdˆ fd„Zedd„«       Zedd„«       Zd	d„Z	d
ˆ fd„Z
d	d„Zd
d„Zˆ xZS )rç   c                ó^   •— t         ‰| �  t        j                  ¬«       d| _        d| _        y )NrO   F)r>   r?   r   rê   Ú_localÚ_preserve_rowsrP   s    €r$   r?   z"VerticaCreateQueryBuilder.__init__  s(   ø€ Ü‰Ñ¤×!1Ñ!1ÐÔ2ØˆŒØ#ˆÕr&   c                ó@   — | j                   st        d«      ‚d| _        y ©Nz)'Query' object has no attribute temporaryT)Ú
_temporaryÚAttributeErrorrõ   rˆ   s    r$   ÚlocalzVerticaCreateQueryBuilder.local   s   € à�ŠÜ Ð!LÓMÐMàˆ�r&   c                ó@   — | j                   st        d«      ‚d| _        y rø   )rù   rú   rö   rˆ   s    r$   Úpreserve_rowsz'VerticaCreateQueryBuilder.preserve_rows'  s   € à�ŠÜ Ð!LÓMÐMà"ˆÕr&   c           	     ó–   — dj                  | j                  rdnd| j                  rdnd | j                  j                  di |¤Ž¬«      S )Nz&CREATE {local}{temporary}TABLE {table}zLOCAL r9   z
TEMPORARY )rû   Ú	temporaryr,   r   )rŸ   rõ   rù   Ú_create_tablerŒ   r¥   s     r$   Ú_create_table_sqlz+VerticaCreateQueryBuilder._create_table_sql.  sI   € Ø7×>Ñ>Ø"Ÿkšk‘(¨rØ&*§o¢o‘l¸2Ø,�$×$Ñ$×,Ñ,Ñ6¨vÑ6ð ?ó 
ð 	
r&   c                óL   •— t        ‰| �  di |¤Ž}|| j                  «       z  }|S r   )r>   Ú_table_options_sqlÚ_preserve_rows_sql)rB   r#   Útable_optionsrC   s      €r$   r  z,VerticaCreateQueryBuilder._table_options_sql5  s.   ø€ Ü™Ñ2Ñ<°VÑ<ˆØ˜×0Ñ0Ó2Ñ2ˆØÐr&   c                óx   — dj                  | j                  «        | j                  j                  di |¤Ž¬«      S )Nz{preserve_rows} AS ({query}))rý   Úqueryr   )rŸ   r  Ú
_as_selectrŒ   r¥   s     r$   Ú_as_select_sqlz(VerticaCreateQueryBuilder._as_select_sql:  s=   € Ø-×4Ñ4Ø×1Ñ1Ó3Ø)�$—/‘/×)Ñ)Ñ3¨FÑ3ð 5ó 
ð 	
r&   c                ó"   — | j                   rdS dS )Nz ON COMMIT PRESERVE ROWSr9   )rö   rˆ   s    r$   r  z,VerticaCreateQueryBuilder._preserve_rows_sql@  s   € Ø-1×-@Ò-@Ð)ÐHÀbÐHr&   rR   r½   r¾   )r2   r3   r4   rß   rI   r?   r   rû   rý   r  r  r	  r  rJ   rK   s   @r$   rç   rç     sJ   ø„ Ø€Iõ$ð
 òó ðð ò#ó ð#ó
õó

÷Ir&   rç   c                  ód   — e Zd ZeZd
d„Zedd„«       Zedd„«       Zdd„Z	dd„Z
dd„Zdd„Zdd„Zy	)rä   c                ó    — d | _         d | _        y r(   )Ú_copy_tableÚ
_from_filerˆ   s    r$   r?   z VerticaCopyQueryBuilder.__init__G  s   € ØˆÔØˆ�r&   c                ó   — || _         y r(   )r  rÄ   s     r$   rå   z!VerticaCopyQueryBuilder.from_fileK  rÅ   r&   c                óT   — t        |t        «      r|| _        y t        |«      | _        y r(   )r‚   r   r  rÇ   s     r$   Úcopy_zVerticaCopyQueryBuilder.copy_O  rÉ   r&   c                ó¸   — d}| j                   rK| j                  r?| | j                  di |¤Žz  }| | j                  di |¤Žz  }| | j                  di |¤Žz  }|S rË   )r  r  Ú_copy_table_sqlÚ_from_file_sqlrÎ   rÏ   s       r$   rŒ   zVerticaCopyQueryBuilder.get_sqlS  sm   € ØˆØ×Ò §¢ØÐ/˜4×/Ñ/Ñ9°&Ñ9Ñ9ˆKØÐ.˜4×.Ñ.Ñ8°Ñ8Ñ8ˆKØÐ,˜4×,Ñ,Ñ6¨vÑ6Ñ6ˆKàÐr&   c                óX   — dj                   | j                  j                  di |¤Ž«      S )Nz	COPY "{}"r   )rŸ   r  rŒ   r¥   s     r$   r  z'VerticaCopyQueryBuilder._copy_table_sql\  s*   € Ø×!Ñ!Ð": $×"2Ñ"2×":Ñ":Ñ"D¸VÑ"DÓEÐEr&   c                ó8   — dj                  | j                  «      S )Nz FROM LOCAL '{}')rŸ   r  r¥   s     r$   r  z&VerticaCopyQueryBuilder._from_file_sql_  s   € Ø!×(Ñ(¨¯©Ó9Ð9r&   c                 ó   — y)Nz  PARSER fcsvparser(header=false)r   r¥   s     r$   rÎ   z$VerticaCopyQueryBuilder._options_sqlb  s   € Ø1r&   c                ó"   — | j                  «       S r(   r°   rˆ   s    r$   rÕ   zVerticaCopyQueryBuilder.__str__e  rÖ   r&   NrR   r×   rØ   rÙ   r½   r¾   )r2   r3   r4   rß   rI   r?   r   rå   r  rŒ   r  r  rÎ   rÕ   r   r&   r$   rä   rä   D  sP   „ Ø€Ióð òó ðð òOó ðOóóFó:ó2ôr&   rä   c                  ó.   — e Zd Zdd„Zdd„Zedd„«       Zy)Ú"FetchNextAndOffsetRowsQueryBuilderc                ó:   — dj                  | j                  ¬«      S )Nz FETCH NEXT {limit} ROWS ONLY)Úlimit)rŸ   Ú_limitrˆ   s    r$   Ú
_limit_sqlz-FetchNextAndOffsetRowsQueryBuilder._limit_sqlj  s   € Ø.×5Ñ5¸D¿K¹KÐ5ÓHÐHr&   c                óB   — dj                  | j                  xs d¬«      S )Nz OFFSET {offset} ROWSr   )Úoffset)rŸ   Ú_offsetrˆ   s    r$   Ú_offset_sqlz.FetchNextAndOffsetRowsQueryBuilder._offset_sqlm  s   € Ø&×-Ñ-°T·\±\Ò5FÀQÐ-ÓGÐGr&   c                óF   — t        j                  dt        «       || _        y )Nz:`fetch_next` is deprecated - please use the `limit` method)ÚwarningsÚwarnÚDeprecationWarningr  )rB   r  s     r$   Ú
fetch_nextz-FetchNextAndOffsetRowsQueryBuilder.fetch_nextp  s   € ä�‰ÐRÔTfÔgØˆ�r&   Nr¾   )r  Úintr0   rE   )r2   r3   r4   r  r"  r   r'  r   r&   r$   r  r  i  s"   „ óIóHð òó ñr&   r  c                  ó"   — e Zd ZdZedd„«       Zy)ÚOracleQueryz4
    Defines a query class for use with Oracle.
    c                ó   — t        di |¤ŽS r   )ÚOracleQueryBuilderr!   s     r$   r%   zOracleQuery._builder{  s   € ä!Ñ+ FÑ+Ð+r&   N)r#   r   r0   r,  ©r2   r3   r4   r5   r6   r%   r   r&   r$   r*  r*  v  s   „ ñð ò,ó ñ,r&   r*  c                  ó<   ‡ — e Zd ZdZeZdˆ fd„Zdˆ fd„Zdd„Zˆ xZ	S )r,  Nc                óD   •— t        ‰| �  ddt        j                  i|¤Ž y r;   )r>   r?   r   ÚORACLErA   s     €r$   r?   zOracleQueryBuilder.__init__„  s   ø€ Ü‰ÑÑ;¤§¡Ð;°FÓ;r&   c                ó,   •— d|d<   t        ‰| �  |i |¤ŽS ©NFÚgroupby_alias©r>   rŒ   ©rB   rÐ   r#   rC   s      €r$   rŒ   zOracleQueryBuilder.get_sql‡  ó#   ø€ ð #(ˆˆÑÜ‰w‰ Ð/¨Ñ/Ð/r&   c                ó‚   — | j                   r|| j                  «       z  }| j                  �|| j                  «       z  }|S r(   )r!  r"  r  r  ©rB   r�   r#   s      r$   Ú_apply_paginationz$OracleQueryBuilder._apply_pagination�  s=   € à�<Š<Ø˜4×+Ñ+Ó-Ñ-ˆKà�;‰;Ð"Ø˜4Ÿ?™?Ó,Ñ,ˆKàÐr&   rD   rÙ   ©r�   re   r0   re   )
r2   r3   r4   rF   r*  rI   r?   rŒ   r9  rJ   rK   s   @r$   r,  r,  €  s   ø„ Ø€JØ€Iõ<õ0÷r&   r,  c                  ó"   — e Zd ZdZedd„«       Zy)ÚPostgreSQLQueryz8
    Defines a query class for use with PostgreSQL.
    c                ó   — t        di |¤ŽS r   )ÚPostgreSQLQueryBuilderr!   s     r$   r%   zPostgreSQLQuery._builder�  s   € ä%Ñ/¨Ñ/Ð/r&   N©r0   r>  r-  r   r&   r$   r<  r<  ˜  s   „ ñð ò0ó ñ0r&   r<  c                  ó6  ‡ — e Zd ZdZeZdˆ fd„Zdˆ fd„Zedd„«       Z	eddd„«       Z
edd„«       Zedd„«       Zedd d„«       Zed!ˆ fd	„«       Zed"d
„«       Zd#ˆ fd„Zd$d„Zd#d„Zd%d„Zd#d„Zed&d„«       Zd'd„Zdd„Zd(d„Zd(d„Zd)d„Zd#d„Zd*d+ˆ fd„Zˆ xZS ),r>  r8   c                óü   •— t        ‰| �  ddt        j                  i|¤Ž g | _        d| _        d| _        g | _        d| _        g | _	        d | _
        d | _        g | _        d| _        d| _        t        «       | _        y ri   )r>   r?   r   Ú
POSTGRESQLÚ_returnsÚ_return_starÚ_on_conflictÚ_on_conflict_fieldsÚ_on_conflict_do_nothingÚ_on_conflict_do_updatesÚ_on_conflict_wheresÚ_on_conflict_do_update_wheresÚ_distinct_onrn   ro   rp   rq   rA   s     €r$   r?   zPostgreSQLQueryBuilder.__init__¦  s   ø€ Ü‰ÑÑ?¤×!4Ñ!4Ð?¸Ò?ØˆŒØ!ˆÔà!ˆÔØ#%ˆÔ Ø',ˆÔ$Ø')ˆÔ$Ø#'ˆÔ Ø-1ˆÔ*àˆÔà"'ˆÔØ',ˆÔ$Ü!›eˆÕr&   c                óŒ   •— t         ‰| �  «       }t        | j                  «      |_        t        | j                  «      |_        |S r(   )r>   rs   r   rC  rH  rt   s     €r$   rs   zPostgreSQLQueryBuilder.__copy__¸  s8   ø€ Ü‘Ñ!Ó#ˆÜ˜tŸ}™}Ó-ˆŒÜ)-¨d×.JÑ.JÓ)KˆÔ&Øˆr&   c                óÔ   — |D ]c  }t        |t        «      r%| j                  j                  t	        |«      «       Œ8t        |t
        «      sŒI| j                  j                  |«       Œe y r(   ©r‚   re   rK  rƒ   r   r   ©rB   Úfieldsr„   s      r$   Údistinct_onz"PostgreSQLQueryBuilder.distinct_on¾  óQ   € àò 	0ˆEÜ˜%¤Ô%Ø×!Ñ!×(Ñ(¬¨u«Õ6Ü˜E¤4Õ(Ø×!Ñ!×(Ñ(¨Õ/ñ		0r&   c                óN   — d| _         || _        || _        t        |«      | _        y rw   rx   rz   s       r$   r~   z!PostgreSQLQueryBuilder.for_updateÆ  r   r&   c                ó  — | j                   st        d«      ‚d| _        |D ]i  }t        |t        «      r+| j
                  j                  | j                  |«      «       Œ>t        |t        «      sŒO| j
                  j                  |«       Œk y )Nz(On conflict only applies to insert queryT)	Ú_insert_tabler   rE  r‚   re   rF  rƒ   Ú_conflict_field_strr   )rB   Útarget_fieldsÚtarget_fields      r$   Úon_conflictz"PostgreSQLQueryBuilder.on_conflictÍ  su   € à×!Ò!Ü Ð!KÓLÐLà ˆÔà)ò 	>ˆLÜ˜,¬Ô,Ø×(Ñ(×/Ñ/°×0HÑ0HÈÓ0VÕWÜ˜L¬$Õ/Ø×(Ñ(×/Ñ/°Õ=ñ		>r&   c                óX   — t        | j                  «      dkD  rt        d«      ‚d| _        y )Nr   r�   T)ÚlenrH  r   rG  rˆ   s    r$   Ú
do_nothingz!PostgreSQLQueryBuilder.do_nothingÚ  s)   € äˆt×+Ñ+Ó,¨qÒ0Ü Ð!EÓFÐFØ'+ˆÕ$r&   c                ó>  — | j                   rt        d«      ‚t        |t        «      r| j	                  |«      }nt        |t
        «      r|}nt        d«      ‚|�'| j                  j                  |t        |«      f«       y | j                  j                  |d f«       y )Nr�   zUnsupported update_field)	rG  r   r‚   re   rV  r   rH  rƒ   r   )rB   Úupdate_fieldÚupdate_valuer„   s       r$   Ú	do_updatez PostgreSQLQueryBuilder.do_updateà  sˆ   € à×'Ò'Ü Ð!EÓFÐFä�l¤CÔ(Ø×,Ñ,¨\Ó:‰EÜ˜¤eÔ,Ø ‰Eä Ð!;Ó<Ð<àÐ#Ø×(Ñ(×/Ñ/°¼À\Ó8RÐ0SÕTà×(Ñ(×/Ñ/°¸°Õ>r&   c                ó�  •— | j                   st        ‰| �	  |«      S t        |t        «      ry | j
                  rt        d«      ‚| j                  r6| j                  r*| j                  r| xj                  |z  c_	        y || _	        y | j                  r*| j                  r| xj                  |z  c_
        y || _
        y t        d«      ‚)Nz"DO NOTHING doest not support WHEREz(Can not have fieldless ON CONFLICT WHERE)rE  r>   Úwherer‚   r   rG  r   rF  rH  rJ  rI  )rB   Ú	criterionrC   s     €r$   rb  zPostgreSQLQueryBuilder.whereñ  s§   ø€ à× Ò Ü‘7‘= Ó+Ð+ä�i¤Ô0Øà×'Ò'Ü Ð!EÓFÐFà×#Ò#¨×(DÒ(DØ×1Ò1Ø×2Ò2°iÑ?Ö2à5>�Õ2Ø×%Ò%Ø×'Ò'Ø×(Ò(¨IÑ5Ö(à+4�Õ(ä Ð!KÓLÐLr&   c                ó:   — | j                   j                  |«       y r(   )Ú_usingrƒ   rÇ   s     r$   ÚusingzPostgreSQLQueryBuilder.using	  s   € à�‰×Ñ˜5Õ!r&   c                ó¤   •‡— | j                   r4dj                  dj                  ˆfd„| j                   D «       «      ¬«      S t        ‰| �  di ‰¤ŽS )NúDISTINCT ON({distinct_on}) r›   c              3  óF   •K  — | ]  } |j                   dd di‰¤Ž–— Œ y­w©r®   TNr   r°   r±   s     €r$   r¢   z7PostgreSQLQueryBuilder._distinct_sql.<locals>.<genexpr>  ó%   øè ø€ Ò$kÐQU \ T§\¡\Ñ%L¸TÐ%LÀVÕ%LÑ$kùó   ƒ!©rQ  r   ©rK  rŸ   r”   r>   Ú_distinct_sqlrA   s    `€r$   ro  z$PostgreSQLQueryBuilder._distinct_sql  óR   ù€ Ø×ÒØ0×7Ñ7ØŸH™HÓ$kÐY]×YjÑYjÔ$kÓkð 8ó ð ô ‰wÑ$Ñ. vÑ.Ð.r&   c                óJ   — | j                   rt        || j                   ¬«      S y ©N©r,   )rU  r   ©rB   r²   s     r$   rV  z*PostgreSQLQueryBuilder._conflict_field_str  s#   € Ø×ÒÜ˜ T×%7Ñ%7Ô8Ð8ð r&   c                óî  — | j                   s0t        | j                  «      dk(  r| j                  syt	        d«      ‚| j                  r| j                  st	        d«      ‚d}| j                  rE| j                  D �cg c]  } |j
                  dddi|¤Ž‘Œ }}|dd	j                  |«      z   d
z   z  }| j                  r1|dj                   | j                  j
                  dddi|¤Ž¬«      z  }|S c c}w )Nr   r9   z"No handler defined for on conflictz,Can not have fieldless on conflict do updatez ON CONFLICTr®   Tz (r’   ú)ú WHERE {where}r¯   ©rb  r   )	rG  r[  rH  rF  r   rŒ   r”   rI  rŸ   )rB   r#   Úconflict_queryÚfrP  s        r$   Ú_on_conflict_sqlz'PostgreSQLQueryBuilder._on_conflict_sql  sö   € Ø×+Ò+´°D×4PÑ4PÓ0QÐUVÒ0VØ×+Ò+ØÜ Ð!EÓFÐFà×'Ò'°×0HÒ0HÜ Ð!OÓPÐPà'ˆØ×#Ò#ØDH×D\ÑD\Ö]¸q�i�a—i‘iÑ:¨4Ð:°6Ó:Ð]ˆFÐ]Ø˜d T§Y¡Y¨vÓ%6Ñ6¸Ñ<Ñ<ˆNà×#Ò#ØÐ.×5Ñ5Ð<\¸D×<TÑ<T×<\Ñ<\Ñ<uÐfjÐ<uÐntÑ<uÐ5ÓvÑvˆNàÐùò ^s   Á<C2c                ó$  — | j                   r|d}| j                  rH|ddj                  | j                  D �cg c]  } t        |«      j                  di |¤Ž‘Œ c}«      › �z  }| j
                  r|dz  }|S | j                  r|dz  }|S d}|S c c}w r‘   r“   r•   s       r$   r—   z&PostgreSQLQueryBuilder._for_update_sql+  r˜   r™   c                óP  — | j                   ryt        | j                  «      dkD  �r g }| j                  D ]Ž  \  }}|rE|j                  dj	                   |j
                  di |¤Ž |j
                  dddi|¤Ž¬«      «       ŒM|j                  dj	                   |j
                  di |¤Ž |j
                  di |¤Ž¬«      «       Œ� dj	                  d	j                  |«      ¬
«      }| j                  r2|dj	                   | j                  j
                  ddddœ|¤Ž¬«      z  }|S y)Nz DO NOTHINGr   r�   Úwith_namespaceTrž   z{field}=EXCLUDED.{value}z DO UPDATE SET {updates}r›   r£   rw  )r¯   r~  rx  r9   r   )rG  r[  rH  rƒ   rŸ   rŒ   r”   rJ  )rB   r#   r¤   r„   r…   Ú
action_sqls         r$   Ú_on_conflict_action_sqlz.PostgreSQLQueryBuilder._on_conflict_action_sql9  s<  € Ø×'Ò'Ø Ü�×-Ñ-Ó.°Ó2ØˆGØ $× <Ñ <ò ‘��uÙØ—N‘NØ)×0Ñ0Ø"/ %§-¡-Ñ"9°&Ñ"9Ø"/ %§-¡-Ñ"N¸tÐ"NÀvÑ"Nð 1ó õð —N‘NØ2×9Ñ9Ø"/ %§-¡-Ñ"9°&Ñ"9Ø"/ %§-¡-Ñ"9°&Ñ"9ð :ó õðð 4×:Ñ:À3Ç8Á8ÈGÓCTÐ:ÓUˆJà×1Ò1ØÐ.×5Ñ5ØD˜$×<Ñ<×DÑDÐrÈdÐcgÑrÐkqÑrð 6ó ñ �
ð Ðàr&   c                ón  — |D ]°  }t        |t        «      r| j                  |«       Œ%t        |t        «      r| j	                  |«       ŒGt        |t
        t        f«      r)|j                  rt        d«      ‚| j                  |«       Œ†| j                  | j                  || j                  «      «       Œ² y )Nz0Aggregate functions are not allowed in returning)r‚   r   Ú_return_fieldre   Ú_return_field_strr   r   Úis_aggregater   Ú_return_otherÚwrap_constantÚ_wrapper_cls)rB   Útermsr²   s      r$   Ú	returningz PostgreSQLQueryBuilder.returningW  s—   € àò 
	PˆDÜ˜$¤Ô&Ø×"Ñ" 4Õ(Ü˜D¤#Ô&Ø×&Ñ& tÕ,Ü˜D¤8Ô-AÐ"BÔCØ×$Ò$Ü(Ð)[Ó\Ð\Ø×"Ñ" 4Õ(à×"Ñ" 4×#5Ñ#5°d¸D×<MÑ<MÓ#NÕOñ
	Pr&   c           	     ó  — |j                  «       D ]ñ  }t        | j                  | j                  | j                  g«      st        d«      ‚|j                  | j                  | j                  hv }t        t        j                  j                  | j                  D �cg c]  }|j                  j                  ‘Œ c}«      «      }t        | j                  «      |z  }t        |j                  |z
  «      }|rŒå|sŒèt        d«      ‚ y c c}w )Nú%Returning can't be used in this queryz"You can't return from other tables)Úfields_ÚanyrU  Ú_update_tableÚ_delete_fromr   r,   rp   Ú	itertoolsÚchainÚfrom_iterableÚ_joinsrc  Útables_Ú_fromr»   )rB   r²   r„   Útable_is_insert_or_update_tableÚjÚjoin_tablesÚjoin_and_base_tablesÚtable_not_base_or_joins           r$   Ú_validate_returning_termz/PostgreSQLQueryBuilder._validate_returning_terme  sÝ   € Ø—\‘\“^ò 		KˆEÜ˜×*Ñ*¨D×,>Ñ,>À×@QÑ@QÐRÔSÜ$Ð%LÓMÐMà.3¯k©k¸d×>PÑ>PÐRV×RdÑRdÐ=eÐ.eÐ+ÜœiŸo™o×;Ñ;ÐZ^×ZeÑZeÖ<fÐUV¸Q¿[¹[×=PÓ=PÒ<fÓgÓhˆKÜ#& t§z¡z£?°[Ñ#@Ð Ü%)¨$¯,©,Ð9MÑ*MÓ%NÐ"Ú2Ò7MÜ$Ð%IÓJÐJñ		Kùò
 =gs   ÂDc                ót   — | j                   D �cg c]  }t        |d«      rŒ|‘Œ c}| _         d| _        y c c}w )Nr,   T)rC  ÚhasattrrD  )rB   r‰  s     r$   Ú_set_returns_for_starz,PostgreSQLQueryBuilder._set_returns_for_starq  s1   € Ø48·M±MÖe yÌÐQZÐ\cÕIdšÒeˆŒØ ˆÕùò fs   �5¡5c                ó¶   — | j                   ry | j                  |«       t        |t        «      r| j	                  «        | j
                  j                  |«       y r(   )rD  r›  r‚   r   rž  rC  rƒ   rt  s     r$   r‚  z$PostgreSQLQueryBuilder._return_fieldu  sD   € Ø×Òàà×%Ñ% dÔ+ä�dœDÔ!Ø×&Ñ&Ô(à�‰×Ñ˜TÕ"r&   c                óÂ  — |dk(  r4| j                  «        | j                  j                  t        «       «       y | j                  r'| j                  t        || j                  ¬«      «       y | j                  r'| j                  t        || j                  ¬«      «       y | j                  r*| j                  t        || j                  d   ¬«      «       y t        d«      ‚)NÚ*rs  r   r‹  )rž  rC  rƒ   r   rU  r‚  r   rŽ  r�  r•  r   rt  s     r$   rƒ  z(PostgreSQLQueryBuilder._return_field_str�  s¦   € Ø�3Š;Ø×&Ñ&Ô(Ø�M‰M× Ñ ¤£Ô(Øà×ÒØ×Ñœu T°×1CÑ1CÔDÕEØ×ÒØ×Ñœu T°×1CÑ1CÔDÕEØ×ÒØ×Ñœu T°·±¸A±Ô?Õ@ä Ð!HÓIÐIr&   c                ó\   — | j                  |«       | j                  j                  |«       y r(   )r›  rC  rƒ   )rB   Úfunctions     r$   r…  z$PostgreSQLQueryBuilder._return_other�  s"   € Ø×%Ñ% hÔ/Ø�‰×Ñ˜XÕ&r&   c                ól   ‡— dj                  dj                  ˆfd„| j                  D «       «      ¬«      S )Nz RETURNING {returning}r›   c              3  óF   •K  — | ]  } |j                   dd di‰¤Ž–— Œ y­wrj  r°   r±   s     €r$   r¢   z8PostgreSQLQueryBuilder._returning_sql.<locals>.<genexpr>–  s$   øè ø€ ÒaÈ4˜|˜tŸ|™|ÑF°tÐF¸vÕFÑaùrl  )r‰  )rŸ   r”   rC  r¥   s    `r$   Ú_returning_sqlz%PostgreSQLQueryBuilder._returning_sql”  s4   ø€ Ø'×.Ñ.Ø—h‘hÓaÐSW×S`ÑS`ÔaÓað /ó 
ð 	
r&   c                ó  •— | j                  |«       t        ‰| �  ||fi |¤Ž}| | j                  di |¤Žz  }| | j                  di |¤Žz  }| j
                  r2| j                  xr | j                  |d<   | | j                  di |¤Žz  }|S )Nr~  r   )	r‹   r>   rŒ   r{  r€  rC  rŽ  Úfrom_r¦  )rB   r®   r¯   r#   r�   rC   s        €r$   rŒ   zPostgreSQLQueryBuilder.get_sql™  sž   ø€ Ø×!Ñ! &Ô)ä‘g‘o j°(ÑE¸fÑEˆàÐ,�t×,Ñ,Ñ6¨vÑ6Ñ6ˆØÐ3�t×3Ñ3Ñ=°fÑ=Ñ=ˆà�=Š=Ø'+×'9Ñ'9Ò'H¸d¿j¹jˆFÐ#Ñ$ØÐ.˜4×.Ñ.Ñ8°Ñ8Ñ8ˆKØÐr&   rD   r?  ©rP  ú
str | Termr0   rE   rº   )r{   r»   r|   r»   r}   r¼   r0   r   )rW  rª  r0   rE   rR   r(   )r^  ústr | Fieldr_  z
Any | Noner0   rE   )rc  r   r0   rE   )r,   zSelectable | strr0   rE   r½   )r²   re   r0   zField | Noner¾   ©rˆ  r   r0   rE   )r²   r   r0   rE   )r²   r«  r0   rE   )r£  r   r0   rE   ©FF)r®   r»   r¯   r»   r#   r   r0   re   )r2   r3   r4   rG   r<  rI   r?   rs   r   rQ  r~   rY  r\  r`  rb  rf  ro  rV  r{  r—   r€  r‰  r›  rž  r‚  rƒ  r…  r¦  rŒ   rJ   rK   s   @r$   r>  r>  ¢  sÿ   ø„ ØÐØ€Iõ$õ$ð ò0ó ð0ð ó&ó ð&ð ò
>ó ð
>ð ò,ó ð,ð
 ó?ó ð?ð  ôMó ðMð. ò"ó ð"õ/ó9óó&óð< òPó ðPó
Kó!ó
#óJó'ó
÷
ò r&   r>  c                  ó"   — e Zd ZdZedd„«       Zy)ÚRedshiftQueryz=
    Defines a query class for use with Amazon Redshift.
    c                ó8   — t        ddt        j                  i|¤ŽS r;   )ÚRedShiftQueryBuilderr   ÚREDSHIFTr!   s     r$   r%   zRedshiftQuery._builder¬  s   € ä#ÑH¬H×,=Ñ,=ÐHÀÑHÐHr&   N)r#   r   r0   r±  r-  r   r&   r$   r¯  r¯  §  s   „ ñð òIó ñIr&   r¯  c                  ó   — e Zd ZeZy)r±  N)r2   r3   r4   r¯  rI   r   r&   r$   r±  r±  ±  s   „ Ø�Ir&   r±  c                  ó"   — e Zd ZdZedd„«       Zy)Ú
MSSQLQueryúB
    Defines a query class for use with Microsoft SQL Server.
    c                ó   — t        di |¤ŽS r   )ÚMSSQLQueryBuilderr!   s     r$   r%   zMSSQLQuery._builderº  r[   r&   N)r#   r   r0   r¸  r-  r   r&   r$   rµ  rµ  µ  s   „ ñð ò+ó ñ+r&   rµ  c                  ó\   ‡ — e Zd ZeZdˆ fd„Zedd	d„«       Zd
d„Zdˆ fd„Z	dd„Z
dd„Zˆ xZS )r¸  c                ón   •— t        ‰| �  ddt        j                  i|¤Ž d | _        d| _        d| _        y ri   )r>   r?   r   ÚMSSQLÚ_topÚ_top_with_tiesÚ_top_percentrA   s     €r$   r?   zMSSQLQueryBuilder.__init__Â  s3   ø€ Ü‰ÑÑ:¤§¡Ð:°6Ò:Ø $ˆŒ	Ø$)ˆÔØ"'ˆÕr&   c                óÌ   — 	 t        |«      | _        |r+dt        |«      cxk  rdk  st        d«      ‚ t        d«      ‚|| _        || _        y# t        $ r t        d«      ‚w xY w)z�
        Implements support for simple TOP clauses.
        https://docs.microsoft.com/en-us/sql/t-sql/queries/top-transact-sql?view=sql-server-2017
        zTOP value must be an integerr   éd   z?TOP value must be between 0 and 100 when `percent` is specifiedN)r(  r¼  Ú
ValueErrorr   r¾  r½  )rB   r…   ÚpercentÚ	with_tiess       r$   ÚtopzMSSQLQueryBuilder.topÈ  st   € ð	AÜ˜E›
ˆDŒIñ ˜A¤ U£Ô2¨sÒ2Ü Ð!eÓfÐfð 3Ü Ð!eÓfÐfØ")ˆÔØ$-ˆÕøô ò 	AÜ Ð!?Ó@Ð@ð	Aús   ‚A ÁA#c                óš   — | j                   €| j                  r|| j                  «       z  }| j                   �|| j                  «       z  }|S r(   )r  r!  r"  r  r8  s      r$   r9  z#MSSQLQueryBuilder._apply_paginationØ  sF   € à�;‰;Ð" d§l¢là˜4×+Ñ+Ó-Ñ-ˆKà�;‰;Ð"Ø˜4Ÿ?™?Ó,Ñ,ˆKàÐr&   c                ó,   •— d|d<   t        ‰| �  |i |¤ŽS r2  r4  r5  s      €r$   rŒ   zMSSQLQueryBuilder.get_sqlã  r6  r&   c                ó†   — d}| j                   r2d| j                   › d�}| j                  r|› d�}| j                  r|› d�}|S )Nr9   zTOP (z) zPERCENT z
WITH TIES )r¼  r¾  r½  )rB   Ú_top_statements     r$   Ú_top_sqlzMSSQLQueryBuilder._top_sqlé  sR   € Ø ˆØ�9Š9Ø$ T§Y¡Y K¨rÐ2ˆNØ× Ò Ø$2Ð#3°8Ð!<�Ø×"Ò"Ø$2Ð#3°:Ð!>�àÐr&   c                ó¨   ‡— dj                  | j                  «       | j                  rdnddj                  ˆfd„| j                  D «       «      ¬«      S )NzSELECT {distinct}{top}{select}rª   r9   r›   c              3  óH   •K  — | ]  } |j                   dd d dœ‰¤Ž–— Œ y­wr­   r°   r±   s     €r$   r¢   z0MSSQLQueryBuilder._select_sql.<locals>.<genexpr>ø  r³   r´   )rÄ  rµ   r¶   )rŸ   rÉ  r·   r”   r¸   r¥   s    `r$   r¹   zMSSQLQueryBuilder._select_sqlô  sH   ø€ Ø/×6Ñ6Ø—‘“Ø$(§N¢N‘[¸Ø—8‘8ÓmÐ_c×_lÑ_lÔmÓmð 7ó 
ð 	
r&   rD   r­  )r…   z	str | intrÂ  r»   rÃ  r»   r0   rE   r:  rÙ   r¾   r½   )r2   r3   r4   rµ  rI   r?   r   rÄ  r9  rŒ   rÉ  r¹   rJ   rK   s   @r$   r¸  r¸  ¿  s5   ø„ Ø€Iõ(ð ó.ó ð.ó	õ0ó	÷
r&   r¸  c                  óŽ   — e Zd ZdZed
d„«       Zedd„«       Zedd„«       Zedd„«       Zedd„«       Z	edd„«       Z
edd„«       Zy	)ÚClickHouseQueryz?
    Defines a query class for use with Yandex ClickHouse.
    c                ó<   — t        dt        j                  dddœ|¤ŽS )NFT)r<   Úwrap_set_operation_queriesÚ
as_keywordr   )ÚClickHouseQueryBuilderr   Ú
CLICKHOUSEr!   s     r$   r%   zClickHouseQuery._builder  s*   € ä%ð 
Ü×'Ñ'ÀEÐVZñ
Ø^dñ
ð 	
r&   c                ó4   — t        «       j                  |«      S r(   )ÚClickHouseDropQueryBuilderÚdrop_database)rB   Údatabases     r$   rÕ  zClickHouseQuery.drop_database  s   € ä)Ó+×9Ñ9¸(ÓCÐCr&   c                ó4   — t        «       j                  |«      S r(   )rÔ  r/   rÇ   s     r$   r/   zClickHouseQuery.drop_table  ó   € ä)Ó+×6Ñ6°uÓ=Ð=r&   c                ó4   — t        «       j                  |«      S r(   )rÔ  Údrop_dictionary)rB   Ú
dictionarys     r$   rÚ  zClickHouseQuery.drop_dictionary  s   € ä)Ó+×;Ñ;¸JÓGÐGr&   c                ó4   — t        «       j                  |«      S r(   )rÔ  Ú
drop_quota)rB   Úquotas     r$   rÝ  zClickHouseQuery.drop_quota  rØ  r&   c                ó4   — t        «       j                  |«      S r(   )rÔ  Ú	drop_user)rB   Úusers     r$   rà  zClickHouseQuery.drop_user  ó   € ä)Ó+×5Ñ5°dÓ;Ð;r&   c                ó4   — t        «       j                  |«      S r(   )rÔ  Ú	drop_view)rB   Úviews     r$   rä  zClickHouseQuery.drop_view  râ  r&   N)r#   r   r0   rÑ  )rÖ  zDatabase | strr0   rÔ  )r,   zTable | strr0   rÔ  )rÛ  re   r0   rÔ  )rÞ  re   r0   rÔ  )rá  re   r0   rÔ  )rå  re   r0   rÔ  )r2   r3   r4   r5   r6   r%   rÕ  r/   rÚ  rÝ  rà  rä  r   r&   r$   rÍ  rÍ  ü  s—   „ ñð ò
ó ð
ð
 òDó ðDð ò>ó ð>ð òHó ðHð ò>ó ð>ð ò<ó ð<ð ò<ó ñ<r&   rÍ  c                  óú   ‡ — e Zd ZU eZded<   ded<   dˆ fd„Zdˆ fd„Zedd„«       Z	eddd„«       Z
edd	„«       Zdd
„Zddd„Zdd„Zedd„«       Zdˆ fd„Zedd„«       Zedd„«       Zdˆ fd„Zdd„Zdˆ fd„Zˆ xZS )rÑ  z
list[Term]rK  z"tuple[int, int, list[Term]] | NoneÚ	_limit_byc                ój   •— t        ‰| �  di |¤Ž d| _        d | _        d | _        g | _        d | _        y )NFr   )r>   r?   Ú_finalÚ_sampleÚ_sample_offsetrK  rç  rA   s     €r$   r?   zClickHouseQueryBuilder.__init__&  s8   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒØˆŒØ"ˆÔØˆÔØˆ�r&   c                óX   •— t         ‰| �  «       }t        | j                  «      |_        |S r(   )r>   rs   r   rç  rt   s     €r$   rs   zClickHouseQueryBuilder.__copy__.  s&   ø€ Ü‘Ñ!Ó#ˆÜ §¡Ó/ˆÔØˆr&   c                ó   — d| _         y rw   )ré  rˆ   s    r$   ÚfinalzClickHouseQueryBuilder.final3  s	   € àˆ�r&   c                ó    — || _         || _        y r(   )rê  rë  )rB   Úsampler   s      r$   rð  zClickHouseQueryBuilder.sample7  s   € àˆŒØ$ˆÕr&   c                  ó   — y)NzALTER TABLEr   )r#   s    r$   Ú_delete_sqlz"ClickHouseQueryBuilder._delete_sql<  s   € àr&   c                óZ   — dj                   | j                  j                  di |¤Ž¬«      S )NzALTER TABLE {table}rs  r   )rŸ   rŽ  rŒ   r¥   s     r$   Ú_update_sqlz"ClickHouseQueryBuilder._update_sql@  s-   € Ø$×+Ñ+Ð2L°$×2DÑ2D×2LÑ2LÑ2VÈvÑ2VÐ+ÓWÐWr&   c                óž  ‡— dj                  ˆfd„| j                  D «       «      }| j                  rd|› d�S |g}| j                  dur|j	                  d«       | j
                  �|j	                  d| j
                  › �«       | j                  �|j	                  d| j                  › �«       d	j                  dj                  |«      ¬
«      S )Nr›   c              3  óH   •K  — | ]  } |j                   dd d dœ‰¤Ž–— Œ y­w)T)r¯   r®   Nr   r°   )r¡   Úclauser#   s     €r$   r¢   z3ClickHouseQueryBuilder._from_sql.<locals>.<genexpr>D  s'   øè ø€ ÒpÐ[a˜n˜fŸn™nÐV°dÀtÑVÈvÕVÑpùr´   r«   z DELETEFÚFINALzSAMPLE zOFFSET z FROM {clauses})Úclauses)r”   r•  r�  ré  rƒ   rê  rë  rŸ   )rB   r~  r#   Ú
selectablerù  s     `  r$   Ú	_from_sqlz ClickHouseQueryBuilder._from_sqlC  s¹   ø€ Ø—X‘XÓpÐei×eoÑeoÔpÓpˆ
Ø×ÒØ�z�l 'Ð*Ð*Ø�,ˆØ�;‰;˜eÑ#Ø�N‰N˜7Ô#Ø�<‰<Ð#Ø�N‰N˜W T§\¡\ NÐ3Ô4Ø×ÑÐ*Ø�N‰N˜W T×%8Ñ%8Ð$9Ð:Ô;Ø ×'Ñ'°·±¸Ó0AÐ'ÓBÐBr&   c                ól   ‡— dj                  dj                  ˆfd„| j                  D «       «      ¬«      S )Nz UPDATE {set}r›   c              3  ó    •K  — | ]E  \  }}d j                   |j                  di t        ‰d¬«      ¤Ž |j                  di ‰¤Ž¬«      –— ŒG y­w)r�   F)r~  rž   Nr   )rŸ   rŒ   Údictr    s      €r$   r¢   z2ClickHouseQueryBuilder._set_sql.<locals>.<genexpr>R  s\   øè ø€ ò ñ !�E˜5ð "×(Ñ(Ø'˜%Ÿ-™-ÑM¬$¨vÀeÔ*LÑMÐUbÐUZ×UbÑUbÑUlÐekÑUlð )÷ ñùs   ƒAA)rp   )rŸ   r”   Ú_updatesr¥   s    `r$   Ú_set_sqlzClickHouseQueryBuilder._set_sqlP  s:   ø€ Ø×%Ñ%Ø—‘ó ð %)§M¡Mô	ó ð &ó 
ð 	
r&   c                óÔ   — |D ]c  }t        |t        «      r%| j                  j                  t	        |«      «       Œ8t        |t
        «      sŒI| j                  j                  |«       Œe y r(   rN  rO  s      r$   rQ  z"ClickHouseQueryBuilder.distinct_onZ  rR  r&   c                ó¤   •‡— | j                   r4dj                  dj                  ˆfd„| j                   D «       «      ¬«      S t        ‰| �  di ‰¤ŽS )Nrh  r›   c              3  óF   •K  — | ]  } |j                   dd di‰¤Ž–— Œ y­wrj  r°   r±   s     €r$   r¢   z7ClickHouseQueryBuilder._distinct_sql.<locals>.<genexpr>e  rk  rl  rm  r   rn  rA   s    `€r$   ro  z$ClickHouseQueryBuilder._distinct_sqlb  rp  r&   c           	     ót   — |d|D �cg c]  }t        |t        «      rt        |«      n|‘Œ! c}f| _        y c c}w )Nr   ©r‚   re   r   rç  )rB   ÚnÚbyr„   s       r$   Úlimit_byzClickHouseQueryBuilder.limit_byi  s2   € à˜QÐ`bÖ cÐW\´¸EÄ3Ô1G¤ u¤ÈUÑ!RÒ cÐdˆ�ùÒ có   ‡$5c           	     ót   — |||D �cg c]  }t        |t        «      rt        |«      n|‘Œ! c}f| _        y c c}w r(   r  )rB   r  r   r  r„   s        r$   Úlimit_offset_byz&ClickHouseQueryBuilder.limit_offset_bym  s3   € à˜VÐegÖ%hÐ\a´jÀÌÔ6L¤e¨E¤lÐRWÑ&WÒ%hÐiˆ�ùÒ%hr	  c                óf   •— | j                   r| | j                  di |¤Žz  }t        ‰| �  |fi |¤ŽS r   )rç  Ú_limit_by_sqlr>   r9  )rB   r�   r#   rC   s      €r$   r9  z(ClickHouseQueryBuilder._apply_paginationq  s<   ø€ ð �>Š>ØÐ-˜4×-Ñ-Ñ7°Ñ7Ñ7ˆKÜ‰wÑ(¨Ñ?¸Ñ?Ð?r&   c                óŒ   ‡— | j                   \  }}}dj                  ˆfd„|D «       «      }|dk7  rd|› d|› d|› d�S d|› d|› d�S )Nr›   c              3  óF   •K  — | ]  } |j                   dd di‰¤Ž–— Œ y­wrj  r°   r±   s     €r$   r¢   z7ClickHouseQueryBuilder._limit_by_sql.<locals>.<genexpr>{  s$   øè ø€ ÒMÀ$�l�d—l‘lÑ=¨dÐ=°fÕ=ÑMùrl  r   z LIMIT z OFFSET z BY (rv  )rç  r”   )rB   r#   r  r   r  s    `   r$   r  z$ClickHouseQueryBuilder._limit_by_sqly  s]   ø€ ØŸ.™.‰ˆˆF�BØ�X‰XÓMÈ"ÔMÓMˆØ�QŠ;Ø˜Q˜C˜x¨ x¨u°R°D¸Ð:Ð:à˜Q˜C˜u R D¨Ð*Ð*r&   c           	     óè   •— t         ‰| �  ||«      }| j                  rO| j                  d   | j                  d   | j                  d   D �cg c]  }|j                  ||«      ‘Œ c}f|_        |S c c}w )Nr   é   é   )r>   Úreplace_tablerç  )rB   Úcurrent_tableÚ	new_tableru   ÚcolumnrC   s        €r$   r  z$ClickHouseQueryBuilder.replace_table�  so   ø€ Ü‘Ñ& }°iÓ@ˆØ�>Š>à—‘˜qÑ!Ø—‘˜qÑ!ØNRÏnÉnÐ]^ÑN_Ö`ÀF�×%Ñ% m°YÕ?Ò`ð ˆFÔð
 ˆùò as   ÁA/rR   )r0   rÑ  r(   )rð  r(  r   z
int | Noner0   rE   r½   ©F)r~  r»   r#   r   r0   re   r©  )r  rª  r0   rE   r:  )r  úTable | Noner  r  r0   rÑ  )r2   r3   r4   rÍ  rI   Ú__annotations__r?   rs   r   rî  rð  Ústaticmethodrò  rô  rû  r   rQ  ro  r  r  r9  r  r  rJ   rK   s   @r$   rÑ  rÑ     sÅ   ø… Ø€IàÓØ1Ó1õõð
 òó ðð ó%ó ð%ð òó ðóXôCó
ð ò0ó ð0õ/ð òeó ðeð òjó ðjõ@ó+÷ñ r&   rÑ  c                  ól   ‡ — e Zd ZeZˆ fd„Zedˆ fd„«       Zedˆ fd„«       Zedd„«       Z	d	ˆ fd„Z
ˆ xZS )
rÔ  c                óP   •— t         ‰| �  t        j                  ¬«       d | _        y rN   )r>   r?   r   rÒ  Ú_cluster_namerP   s    €r$   r?   z#ClickHouseDropQueryBuilder.__init__�  s!   ø€ Ü‰Ñ¤×!4Ñ!4ÐÔ5Ø!ˆÕr&   c                ó&   •— t         ‰| �  d|«       y )NÚ
DICTIONARY©r>   Ú_set_target)rB   rÛ  rC   s     €r$   rÚ  z*ClickHouseDropQueryBuilder.drop_dictionary“  s   ø€ ä‰Ñ˜L¨*Õ5r&   c                ó&   •— t         ‰| �  d|«       y )NÚQUOTAr   )rB   rÞ  rC   s     €r$   rÝ  z%ClickHouseDropQueryBuilder.drop_quota—  s   ø€ ä‰Ñ˜G UÕ+r&   c                ó@   — | j                   rt        d«      ‚|| _         y )Nz5'DropQuery' object already has attribute cluster_name)r  rú   )rB   Úclusters     r$   Ú
on_clusterz%ClickHouseDropQueryBuilder.on_cluster›  s   € à×ÒÜ Ð!XÓYÐYØ$ˆÕr&   c                ó¤   •— t        ‰| �  di |¤Ž}| j                  dk7  r0| j                  �$|dt	        | j                  t         ‰| �  «      z   z  }|S )Nr  z ON CLUSTER r   )r>   rŒ   Ú_drop_target_kindr  r   rF   )rB   r#   r  rC   s      €r$   rŒ   z"ClickHouseDropQueryBuilder.get_sql¡  sS   ø€ Ü‘‘Ñ) &Ñ)ˆà×!Ñ! \Ò1°d×6HÑ6HÐ6TØ�^¤m°D×4FÑ4FÌÉÑHZÓ&[Ñ[Ñ[ˆEàˆr&   )rÛ  re   r0   rE   )rÞ  re   r0   rE   )r%  re   r0   rE   r½   )r2   r3   r4   rÍ  rI   r?   r   rÚ  rÝ  r&  rŒ   rJ   rK   s   @r$   rÔ  rÔ  Œ  sS   ø„ Ø€Iô"ð ô6ó ð6ð ô,ó ð,ð ò%ó ð%÷
ñ r&   rÔ  c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚSQLLiteValueWrapperc                óv   •— t        | j                  t        «      r| j                  rdS dS t        ‰| �  di |¤ŽS )NÚ1Ú0r   )r‚   r…   r»   r>   Úget_value_sqlrA   s     €r$   r.  z!SQLLiteValueWrapper.get_value_sql«  s5   ø€ Ü�d—j‘j¤$Ô'ØŸ*š*�3Ð-¨#Ð-Ü‰wÑ$Ñ. vÑ.Ð.r&   r½   )r2   r3   r4   r.  rJ   rK   s   @r$   r*  r*  ª  s   ø„ ÷/ñ /r&   r*  c                  ó"   — e Zd ZdZedd„«       Zy)ÚSQLLiteQueryr¶  c                ó   — t        di |¤ŽS r   )ÚSQLLiteQueryBuilderr!   s     r$   r%   zSQLLiteQuery._builder¶  râ   r&   N)r#   r   r0   r2  r-  r   r&   r$   r0  r0  ±  s   „ ñð ò-ó ñ-r&   r0  c                  óB   ‡ — e Zd ZeZdˆ fd„Zedd„«       Zdˆ fd„Zˆ xZ	S )r2  c                ó\   •— t        ‰| �  dt        j                  t        dœ|¤Ž d| _        y )N)r<   Úwrapper_clsFr   )r>   r?   r   ÚSQLLITEr*  Ú_insert_or_replacerA   s     €r$   r?   zSQLLiteQueryBuilder.__init__¾  s*   ø€ Ü‰ÑÐ]¤×!1Ñ!1Ô?RÑ]ÐV\Ò]Ø"'ˆÕr&   c                ó>   —  | j                   |Ž  d| _        d| _        y rw   )Ú_apply_termsÚ_replacer7  )rB   rˆ  s     r$   Úinsert_or_replacez%SQLLiteQueryBuilder.insert_or_replaceÂ  s!   € àˆ×Ñ˜5Ñ!ØˆŒØ"&ˆÕr&   c                óH   •— | j                   rdnd}|t        ‰| �  di |¤Žz   S )Nz
INSERT OR r9   r   )r7  r>   Ú_replace_sql)rB   r#   ÚprefixrC   s      €r$   r=  z SQLLiteQueryBuilder._replace_sqlÈ  s*   ø€ Ø!%×!8Ò!8‘¸bˆØœ™Ñ,Ñ6¨vÑ6Ñ6Ð6r&   rD   r¬  r½   )
r2   r3   r4   r0  rI   r?   r   r;  r=  rJ   rK   s   @r$   r2  r2  »  s+   ø„ Ø€Iõ(ð ò'ó ð'÷
7ñ 7r&   r2  c                  óZ   — e Zd ZdZedd„«       Zedd„«       Zed	d
d„«       Zedd„«       Zy)Ú	JiraQueryz2
    Defines a query class for use with Jira.
    c                ó   — t        di |¤ŽS r   )ÚJiraQueryBuilderr!   s     r$   r%   zJiraQuery._builderÒ  s   € äÑ) &Ñ)Ð)r&   c                ó6   —  t        «       j                  |i |¤ŽS r(   )rB  rb  )r"   rÐ   r#   s      r$   rb  zJiraQuery.whereÖ  s   € à'ÔÓ!×'Ñ'¨Ð8°Ñ8Ð8r&   c                ó   — ~t        «       S )z=
        Convenience method for creating a JiraTable
        )Ú	JiraTable)r"   Ú
table_nameÚ_s      r$   r   zJiraQuery.TableÚ  s   € ð
 Ü‹{Ðr&   c                ób   — ~t        t        |«      «      D �cg c]  }t        «       ‘Œ c}S c c}w )zJ
        Convenience method for creating many JiraTable instances
        )Úranger[  rE  )r"   Únamesr#   rG  s       r$   ÚTableszJiraQuery.Tablesâ  s&   € ð
 Ü%*¬3¨u«:Ó%6Ö7 ”	•Ò7Ð7ùÒ7s   ˜,N)r0   rB  )r0   r   )r9   )rF  re   r0   rE  )rJ  ztuple[str, str] | strr#   r   r0   zlist[JiraTable])	r2   r3   r4   r5   r6   r%   rb  r   rK  r   r&   r$   r@  r@  Í  sW   „ ñð ò*ó ð*ð ò9ó ð9ð óó ðð ò8ó ñ8r&   r@  c                  óZ   ‡ — e Zd ZdZdZdZeZd	ˆ fd„Zd
dˆ fd„Z	ddd„Z
dd„Zddd„Zˆ xZS )rB  zF
    Defines a main query builder class to produce JQL expression
    r9   r8   c                ó’   •— t        ‰| �  ddt        j                  i|¤Ž t	        «       g| _        t        «       g| _        d| _        y )Nr<   Tr   )	r>   r?   r   ÚJIRArE  r•  r   r¸   Ú_select_starrA   s     €r$   r?   zJiraQueryBuilder.__init__ô  s:   ø€ Ü‰ÑÑ9¤§¡Ð9°&Ò9Ü“k�]ˆŒ
Ü›˜ˆŒØ ˆÕr&   c                óB   •— t        ‰| �  ||fi |¤Žj                  «       S r(   )r>   rŒ   Ústrip)rB   r®   r¯   r#   rC   s       €r$   rŒ   zJiraQueryBuilder.get_sqlú  s"   ø€ Ü‰w‰˜z¨8Ñ>°vÑ>×DÑDÓFÐFr&   c                 ó   — y)z1
        JQL doen't have from statements
        r9   r   )rB   r~  rG  s      r$   rû  zJiraQueryBuilder._from_sqlý  ó   € ð r&   c                 ó   — y)z3
        JQL doen't have select statements
        r9   r   )rB   rG  s     r$   r¹   zJiraQueryBuilder._select_sql  rS  r&   c                ó@   —  | j                   j                  d|ddœ|¤ŽS )NT)Ú
quote_charr¯   r   )Ú_wheresrŒ   )rB   rV  r#   s      r$   Ú
_where_sqlzJiraQueryBuilder._where_sql	  s#   € Ø#ˆt�|‰|×#Ñ#ÐS¨zÀDÑSÈFÑSÐSr&   rR   r­  )r®   r»   r¯   r»   r0   re   r  )r~  r»   rG  r   r0   re   )rG  r   r0   re   r(   r½   )r2   r3   r4   r5   rF   ÚSECONDARY_QUOTE_CHARr@  rI   r?   rŒ   rû  r¹   rX  rJ   rK   s   @r$   rB  rB  ë  s;   ø„ ñð €JØÐØ€Iõ!öGôó÷Tð Tr&   rB  c                  ó   — e Zd Zddd„Zy)ÚJiraEmptyCriterionc                óŠ   — ~dj                   | j                  j                  di |¤Ž¬«      }t        || j                  fi |¤ŽS )Nz{term} is EMPTY©r²   r   ©rŸ   r²   rŒ   r   Úalias©rB   r®   r#   rò   s       r$   rŒ   zJiraEmptyCriterion.get_sql  sI   € ØØ×&Ñ&Ø"�—‘×"Ñ"Ñ, VÑ,ð 'ó 
ˆô    T§Z¡ZÑ:°6Ñ:Ð:r&   Nr  )r®   r»   r#   r   r0   re   ©r2   r3   r4   rŒ   r   r&   r$   r[  r[    ó   „ õ;r&   r[  c                  ó   — e Zd Zddd„Zy)ÚJiraNotEmptyCriterionc                óŠ   — ~dj                   | j                  j                  di |¤Ž¬«      }t        || j                  fi |¤ŽS )Nz{term} is not EMPTYr]  r   r^  r`  s       r$   rŒ   zJiraNotEmptyCriterion.get_sql  sI   € ØØ#×*Ñ*Ø"�—‘×"Ñ"Ñ, VÑ,ð +ó 
ˆô    T§Z¡ZÑ:°6Ñ:Ð:r&   Nr  )r®   r»   r0   re   ra  r   r&   r$   rd  rd    rb  r&   rd  c                  ó   — e Zd Zdd„Zdd„Zy)Ú	JiraFieldc                ó   — t        | «      S r(   )r[  rˆ   s    r$   ÚisemptyzJiraField.isempty   s   € Ü! $Ó'Ð'r&   c                ó   — t        | «      S r(   )rd  rˆ   s    r$   ÚnotemptyzJiraField.notempty#  s   € Ü$ TÓ*Ð*r&   N)r0   r[  )r0   rd  )r2   r3   r4   ri  rk  r   r&   r$   rg  rg    s   „ ó(ô+r&   rg  c                  ó&   ‡ — e Zd Zˆ fd„Zdd„Zˆ xZS )rE  c                ó$   •— t         ‰| �  d«       y )NÚissues)r>   r?   rP   s    €r$   r?   zJiraTable.__init__(  s   ø€ Ü‰Ñ˜Õ"r&   c                ó   — t        || ¬«      S rr  )rg  )rB   Únames     r$   r„   zJiraTable.field+  s   € Ü˜ TÔ*Ð*r&   )rp  re   r0   rg  )r2   r3   r4   r?   r„   rJ   rK   s   @r$   rE  rE  '  s   ø„ ô#÷+r&   rE  )BÚ
__future__r   r�  r$  r   Útypingr   Úpypika.enumsr   Úpypika.queriesr   r   r	   r
   r   r   r   Úpypika.termsr   r   r   r   r   r   r   r   r   Úpypika.utilsr   r   r   r   r   r    r)   r.   rX   rZ   r]   rb   rd   rß   rá   rç   rä   r  r*  r,  r<  r>  r¯  r±  rµ  r¸  rÍ  rÑ  rÔ  r*  r0  r2  r@  rB  r[  rd  rg  rE  r   r&   r$   ú<module>rw     sð  ðÝ "ã Û Ý Ý å !÷÷ ñ ÷
÷ 
õ 
÷ RÓ Qô=�Uô =ô$?˜Lô ?ô5Ð"4ô 5ô5Ð 0ô 5ô9�ô 9ô,`
˜ô `
÷F"ñ "ôJÐ0ô ôÐ,ô ô?�5ô ?ô$˜,ô ô()IÐ 2ô )I÷X"ñ "ôJ
¨ô 
ô,�%ô ,ôÐ;ô ô00�eô 0ôB˜\ô BôJI�Eô Iô˜<ô ô+�ô +ô:
Ð:ô :
ôz!<�eô !<ôHi˜\ô iôXÐ!1ô ô</˜,ô /ô-�5ô -ô7˜,ô 7ô$8�ô 8ô<T�|ô TôD;˜ô ;ô;Ð.ô ;ô+�ô +ô+�õ +r&   