%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/
Upload File :
Create Path :
Current File : //opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyc

�
��4]c_@szdZddlZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Z
dd
lmZddlmZdd
lm
Z
ddlmZedddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdlg^�Zejdmej�Zejdnej�Zdo�edpdq�D�jdrg�Zejdsej�Zejdsej�Zejdtej�Zejduej�Zejdvej�Zidwdx6dydz6d{d|6d}d~6dd�6Zi%d�ej6d�ej 6d�ej!6d�ej"6d�ej#6d�ej$6d�ej%6d�ej&6d�ej'6d�ej(6d�ej)6d�ej*6d�ej+6d�ej,6d�ej-6d�ej.6d�ej/6d�ej06d�ej16d�ej26d�ej36d�ej46d�ej56d�ej66d�ej76d�ej86d�ej96d�ej:6d�ej;6d�ej<6d�ej=6d�ej>6d�ej?6d�ej@6d�ejA6d�ejB6d�ejC6ZDid�ejE6d�ejF6d�ejG6d�ejH6d�ejI6d�ejJ6d�ejK6d�ejL6d�ejM6d�ejN6d�ejO6d�ejP6d�ejQ6d�ejR6ZSid�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6d�d�6ZTid�e
jUjV6d�e
jUjW6d�e
jUjX6d�e
jUjY6d�e
jUjZ6d�e
jUj[6Z\d�e]fd���YZ^d�ej_ej`e]�fd���YZad�ejbfd���YZcd�e^fd���YZdd�edfd���YZed�e^fd���YZfd�eafd���YZgd�egfd���YZhd�e]fd���YZidS(�s]Base SQL and DDL compiler implementations.

Classes provided include:

:class:`.compiler.SQLCompiler` - renders SQL
strings

:class:`.compiler.DDLCompiler` - renders DDL
(data definition language) strings

:class:`.compiler.GenericTypeCompiler` - renders
type specification strings.

To generate user-defined SQL strings, see
:doc:`/ext/compiler`.

i����Ni(tcrud(telements(t	functions(t	operators(tschema(t
selectable(tsqltypes(tvisitorsi(texc(tutiltalltanalysetanalyzetandtanytarraytastasct
asymmetrict
authorizationtbetweentbinarytbothtcasetcasttchecktcollatetcolumnt
constrainttcreatetcrosstcurrent_datetcurrent_roletcurrent_timetcurrent_timestamptcurrent_usertdefaultt
deferrabletdesctdistincttdotelsetendtexcepttfalsetfortforeigntfreezetfromtfulltgranttgroupthavingtiliketint	initiallytinnert	intersecttintotistisnulltjointleadingtlefttliketlimitt	localtimetlocaltimestamptnaturaltnewtnottnotnulltnulltofftoffsettoldtontonlytortordertoutertoverlapstplacingtprimaryt
referencestrighttselecttsession_usertsettsimilartsomet	symmetricttabletthenttottrailingttruetuniontuniquetusertusingtverbosetwhentwheres
^[A-Z0-9_$]+$s^[A-Z0-9_ $]+$cCsh|]}t|��qS((tstr(t.0tx((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<setcomp>�s	ii
t$s5^(?:RESTRICT|CASCADE|SET NULL|NO ACTION|SET DEFAULT)$s^(?:DEFERRED|IMMEDIATE)$s%(?<![:\w\$\x5c]):([\w\$]+)(?![:\w\$])s\x5c(:[\w\$]*)(?![:\w\$])s
%%(%(name)s)stpyformatt?tqmarks%%stformats:[_POSITION]tnumerics	:%(name)stnameds AND s OR s + s * s - s / s % t-s < s <= s != s > s >= s = s IS DISTINCT FROM s IS NOT DISTINCT FROM s || s MATCH s NOT MATCH s IN s NOT IN s, s FROM s AS s IS s IS NOT s	 COLLATE sEXISTS s	DISTINCT sNOT sANY sALL s DESCs ASCs NULLS FIRSTs NULLS LASTtcoalescetCURRENT_DATEtCURRENT_TIMEtCURRENT_TIMESTAMPtCURRENT_USERt	LOCALTIMEtLOCALTIMESTAMPtrandomtsysdatetSESSION_USERtUSERtCUBEtROLLUPs
GROUPING SETStmonthtdaytyeartsecondthourtdoytminutetquartertdowtweektepochtmillisecondstmicrosecondst
timezone_hourttimezone_minutetUNIONs	UNION ALLtEXCEPTs
EXCEPT ALLt	INTERSECTs
INTERSECT ALLtCompiledcBs�eZdZd
Zej�Zd
d
ej�d�Zej	dd�d��Z
d�Zed��Z
d�Zd�Zd
d	�Zed
��Zd�Zd�ZRS(sRepresent a compiled SQL or DDL expression.

    The ``__str__`` method of the ``Compiled`` object should produce
    the actual text of the statement.  ``Compiled`` objects are
    specific to their underlying database dialect, and also may
    or may not be specific to the columns referenced within a
    particular set of bind parameters.  In no case should the
    ``Compiled`` object be dependent on the actual values of those
    bind parameters, even though it may reference those values as
    defaults.
    cCs�||_||_|jj|_|r?|jj|�|_n|dk	r�||_|j|_|jrx|j	|_
n|j|j|�|_ndS(sqConstruct a new :class:`.Compiled` object.

        :param dialect: :class:`.Dialect` to compile against.

        :param statement: :class:`.ClauseElement` to be compiled.

        :param bind: Optional Engine or Connection to compile this
          statement against.

        :param schema_translate_map: dictionary of schema names to be
         translated when forming the resultant SQL

         .. versionadded:: 1.1

         .. seealso::

            :ref:`schema_translating`

        :param compile_kwargs: additional kwargs that will be
         passed to the initial call to :meth:`.Compiled.process`.


        N(
tdialecttbindtidentifier_preparertpreparert_with_schema_translatetNonet	statementtsupports_executiontcan_executet_execution_optionstexecution_optionstprocesststring(tselfR�R�R�tschema_translate_maptcompile_kwargs((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt__init__s 					s0.7s�The :meth:`.Compiled.compile` method is deprecated and will be removed in a future release.   The :class:`.Compiled` object now runs its compilation within the constructor, and this method does nothing.cCsdS(sDProduce the internal string representation of this element.
        N((R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytcompileAs
cCs2|jr|j|||�Stj|j��dS(N(R�t_execute_compiledRtObjectNotExecutableErrorR�(R�t
connectiontmultiparamstparams((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_execute_on_connectionMs	cCs
t��dS(s�Return a Compiled that is capable of processing SQL expressions.

        If this compiler is one, it would likely just return 'self'.

        N(tNotImplementedError(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytsql_compilerSscKs|j||�S(N(t_compiler_dispatch(R�tobjtkwargs((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�]scCs
|jpdS(s3Return the string text of the generated SQL or DDL.t(R�(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt__str__`scCs
t��dS(s�Return the bind params for this compiled object.

        :param params: a dict of string/object pairs whose values will
                       override bind values compiled in to the
                       statement.
        N(R�(R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytconstruct_paramsescCs
|j�S(s0Return the bind params for this compiled object.(R�(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�oscOs@|j}|dkr-tjddd��n|j|||�S(sExecute this compiled object.s>This Compiled object is not bound to any Engine or Connection.tcodet2afiN(R�R�RtUnboundExecutionErrorR�(R�R�R�te((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytexecutets	cOs|j||�j�S(sJExecute this compiled object and return the result's
        scalar value.(R�tscalar(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��sN(t__name__t
__module__t__doc__R�t_cached_metadataR	t
immutabledictR�R�t
deprecatedR�R�tpropertyR�R�R�R�R�R�R�(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s"
)
	
		
	tTypeCompilercBs&eZdZdZd�Zd�ZRS(s2Produces DDL specification for TypeEngine objects.s	visit_\w+cCs
||_dS(N(R�(R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��scKs|j||�S(N(R�(R�ttype_tkw((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s(R�R�R�tensure_kwargR�R�(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s	t
_CompileLabelcBsMeZdZdZdZd	d�Zed��Zed��Zd�Z	RS(
s;lightweight label object which acts as an expression.Label.tlabeltelementtnamecCs&||_||_|f||_dS(N(R�R�t
_alt_names(R�tcolR�t	alt_names((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s		cCs
|jjS(N(R�t	proxy_set(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��scCs
|jjS(N(R�ttype(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��scKs|S(N((R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
self_group�s(R�R�((
R�R�R�t__visit_name__t	__slots__R�R�R�R�R�(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��stSQLCompilercBs�eZdZeZeZeZZ	Z
eZd�Z
eZeZeZeZeZeZeZd�ZZd�ed�Zed��Zejd��Zejd��Z d�Z!ej"d��Z#d�Z$ed��Z%d�d�ed	�Z&ed
��Z'ej(d�d��Z)d
�Z*ed�Z+ed�Z,ed�Z-d�eed�d�Z.d�Z/d�ed�Z0d�Z1d�Z2d�Z3d�Z4d�Z5d�Z6d�Z7d�eed�Z8d�Z9d�Z:d�Z;d�Z<d �Z=d!�Z>d"�Z?d#�Z@d$�ZAd%�ZBd&�ZCd'�ZDd�d(�ZEd)�ZFd*�ZGd+�ZHeed,d-�ZId.�ZJd/�ZKd0�ZLd1�ZMd2�ZNd3�ZOd4�ZPd5�ZQd6�ZRd�ed7�ZSd8�ZTd9�ZUd:�ZVd;�ZWd<�ZXed=�ZYd>�ZZd?�Z[ej"d@��Z\dA�Z]dB�Z^dC�Z_dD�Z`dE�ZadF�ZbdG�ZcdH�ZddI�ZedJ�ZfdK�ZgdL�ZheeedM�ZidN�ZjdO�ZkdP�ZldQ�ZmdR�ZndS�Zod�edT�Zpeed�d�dU�Zqeeed�dV�ZrdW�ZsedX�ZtdY�ZudZ�Zvd�ed[�Zwd\�Zxd]�Zyd^�Zzd_�Z{d`�Z|da�Z}db�Z~ejdce��fdde��fg�Z�ede�Z�eed�d,ed�edf�Z�dg�Z�dh�Z�di�Z�dj�Z�dk�Z�dl�Z�dm�Z�dn�Z�do�Z�dp�Z�dq�Z�dr�Z�eeed�eds�Z�edt�Z�du�Z�edv�Z�dw�Z�dx�Z�dy�Z�edz�Z�ej"d{��Z�d|�Z�d}�Z�ed~�Z�d�Z�d��Z�d��Z�RS(�ssDefault implementation of :class:`.Compiled`.

    Compiles :class:`.ClauseElement` objects into SQL strings.

    cKs9||_|pt|dt�|_i|_tj�|_g|_g|_	|j
|_
|j
r�g|_|jdk|_
nt|j|_d|_|jp�|j|_tj|j�|_i|_tj||||�|js�|js�|jr|jr|j|_n|j
r5|j
r5|j�ndS(sConstruct a new :class:`.SQLCompiler` object.

        :param dialect: :class:`.Dialect` to be used

        :param statement: :class:`.ClauseElement` to be compiled

        :param column_keys:  a list of column names to be compiled into an
         INSERT or UPDATE statement.

        :param inline: whether to generate INSERT statements as "inline", e.g.
         not formatted to return any generated defaults

        :param kwargs: additional keyword arguments to be consumed by the
         superclass.

        tinlineRpN( tcolumn_keystgetattrtFalseR�tbindsR	tcolumn_dictt
bind_nameststackt_result_columnst
positionaltpositiontupt
paramstylet_numeric_bindstBIND_TEMPLATEStbindtemplateR�tctestlabel_lengthtmax_identifier_lengthtPopulateDictt
_process_anontanon_mapttruncated_namesR�R�tisinserttisupdatetisdeletet
_returningt	returningt_apply_numbered_params(R�R�R�R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s*									cCst|j|j�S(N(tlisttinsert_prefetchtupdate_prefetch(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytprefetch<scCs:tj�|_i|_t|_|jr6i|_ndS(s�Initialize collections related to CTEs only if
        a CTE is located, to save on the overhead of
        these collections otherwise.

        N(R	tOrderedDictR�tctes_by_nameR�tctes_recursiveR�tcte_positional(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_init_cte_state@s
			ccs�|j|j}}gt|_|_z>|jrL|jd}t|d<nd}|j|jfVWd|r}|jd�n|||_|_XdS(s;special API to support the use case of 'nested result sets'i����tneed_result_map_for_nestedN(R�t_ordered_columnsR�R�tTrueR�tpop(R�tresult_columnstordered_columnstentry((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_nested_resultNs
	

cs7tjd��tjd�fd�|j�|_dS(Nis
\[_POSITION\]csttj���S(N(RhR	tnext(tm(tposcount(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt<lambda>iR�(t	itertoolstcounttretsubR�(R�((RsJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�fscs'td��fd��jD�D��S(Ncss-|]#\}}|dk	r||fVqdS(N(R�(Ritkeytvalue((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>os	c3s1|]'}�j||jj�j�fVqdS(N(R�R�t_cached_bind_processorR�(Rit	bindparam(R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>qs(tdictR�(R�((R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_bind_processorslscCst|j�dkS(Ni(tlenR�(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytis_subqueryzscCs|S(N((R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�}scCs�|r�i}x�|jD]�}|j|}|j|krL||j||<q||kri||||<q|r�|jr�|r�tjd|j|fdd��q�tjd|jdd��q|jr�|j||<q|j||<qW|Si}x�|jD]�}|r_|jr_|r@tjd|j|fdd��q_tjd|jdd��n|jr|j||j|<q|j||j|<qW|SdS(s5return a dictionary of bind parameter keys and valuess@A value is required for bind parameter %r, in parameter group %dR�tcd3xs)A value is required for bind parameter %rN(R�RtrequiredRtInvalidRequestErrortcallableteffective_valueR(R�R�t
_group_numbert_checktpdR	R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��sL

	
	cCs|jdt�S(soReturn the bind param dictionary embedded into this
        compiled object, for those values that are present.R(R�R�(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��sssqlalchemy.engine.resultcCs|jj|j�S(s(utility method used for unit tests only.(tResultMetaDatat_create_result_mapR�(R�tresult((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�scCsdS(s�Called when a SELECT statement has no froms, and no FROM clause is
        to be appended.

        Gives Oracle a chance to tack on a ``FROM DUAL`` to the string output.

        R�((R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytdefault_from�scKsd|jj||�dS(Nt(t)(R�R�(R�tgroupingtasfromR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_grouping�sc
Ks�|jr�|jjr�|jdd}|j\}}}|rG|}n|}|jj}	|	dk	r�|	j|kr�|	j||	j�r�|jj|d<q�n|j	|jd||�S(Ni����Rtrender_label_as_labeltwithin_columns_clause(
R�R�tsupports_simple_order_by_labelt_label_resolve_dictR�t_order_by_label_elementR�R�tshares_lineageR�(
R�R�R R�Rt	with_colst
only_fromst	only_colstresolve_dictt
order_by_elem((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_label_reference�s 		c	Ks�|js|j|j�S|jdd}|j\}}}y'|rU||j}n
||j}Wn*tk
r�tj|jtj	d�n!X||d<|j|d||�SdS(Ni����Rs6Can't resolve label reference for ORDER BY / GROUP BY.RR (
R�R�t_text_clauseR"R�tKeyErrorRt_no_text_coercionRtCompileError(	R�R�R R�RR%R&R'R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_textual_label_reference�s 	

c
Ks|o
|}||k}|s%|r^t|jtj�rR|jd|j�}	q^|j}	n|r�|dk	r�||	|j||	f|j|j�n|jj	|dt
dt
|�ttj
|jj||	�S|r�|jj||	�S|jj	|dt|�SdS(NtcolidentR twithin_label_clause(t
isinstanceR�Rt_truncated_labelt_truncated_identifierR�R�R�R�R�R�t	OPERATORSRtas_R�tformat_labelR�(
R�R�tadd_to_result_mapR1R RR�trender_label_with_astrender_label_onlyt	labelname((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_labels$


=	cCstjd��dS(Ns:Cannot compile Column object until its 'name' is assigned.(RR.(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_fallback_column_name=scKsn|j}}|dkr+|j|�}n|j}|rbt|tj�rb|jd|�}n|dk	r�||||||jf|j	�n|r�|j
|�}n|jj|�}|j
}|dks�|s�|jr�|S|jj|�}	|	r|jj|	�d}
nd}
|j}t|tj�rN|jd|�}n|
|jj|�d|SdS(NR0t.R�talias(R�R�R=t
is_literalR2RR3R4RR�tescape_literal_columnR�tquoteR\tnamed_with_columntschema_for_objecttquote_schema(R�RR8t
include_tableR�R�t	orig_nameR@R\teffective_schemat
schema_prefixt	tablename((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_columnBs.
	"		cKs|jj|j�S(N(R�tformat_collationt	collation(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_collationjscKs|jS(N(R�(R�t
fromclauseR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_fromclausemscKs|jS(N(R�(R�tindexR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_indexpscKs#||d<|jjj|j|�S(Nttype_expression(R�t
type_compilerR�R�(R�t
typeclauseR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_typeclausess
cCs%|jjr!|jdd�}n|S(Nt%s%%(R�t_double_percentstreplace(R�ttext((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytpost_process_textwscCs%|jjr!|jdd�}n|S(NRWs%%(R�RXRY(R�RZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRA|scsU���fd�}�js*t�_ntjd�tj|�j�j���S(NcsI|jd�}|�jkr5�j�j|��S�j|��SdS(Ni(R3t_bindparamsR�tbindparam_string(R�R�(R�R�t
textclause(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytdo_bindparam�scSs
|jd�S(Ni(R3(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�R�(R�R�tisplaintexttBIND_PARAMS_ESCRtBIND_PARAMSR[RZ(R�R^R�R_((R�R�R^sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_textclause�s	cKs�|j}|r|jn
|jd}|pY|dkrJ|jdt�pY|jdt�}|r�|j|_|_x0|jD]"}	|j|	dt	d|j
�qWn|j|j|�}
|r�|r�d|
}
n|
S(Ni����itneed_result_map_for_compoundR�R R8s(%s)(R�t_default_stack_entrytgetR�R�R�t_textual_ordered_columnstcolumn_argsR�R�t_add_to_result_mapR�(R�ttaftcompound_indexRtparensR�ttoplevelR�tpopulate_result_maptcRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_text_as_from�s"

cKsdS(NtNULL((R�texprR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_null�scKs|jjrdSdSdS(NR`t1(R�tsupports_native_boolean(R�RrR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_true�scKs|jjrdSdSdS(NR,t0(R�Ru(R�RrR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_false�scs�|j}|dkrd}n
t|j}|jd���fd�|jD�D��}|jr|�jjr|d|}n|S(Nt css|]}|r|VqdS(N((Rits((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�sc3s!|]}|j���VqdS(N(R�(RiRo(R�R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�ssVALUES (toperatorR�R5R=tclausest
_tuple_valuesR�ttuple_in_values(R�t
clauselistR�tsepRZ((R�R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_clauselist�s		
#
cKs�d}|jdk	r5||jj||�d7}nxI|jD]>\}}|d|j||�d|j||�d7}q?W|jdk	r�|d|jj||�d7}n|d7}|S(NsCASE RysWHEN s THEN sELSE tEND(RR�R�twhenstelse_(R�tclauseR�RjtcondR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_case�s 3!
cKs|jj||�S(N(ttyped_expressionR�(R�ttype_coerceR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_type_coerce�scKs,d|jj||�|jj||�fS(NsCAST(%s AS %s)(R�R�RU(R�RR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_cast�scKs*d|dtjkrdnx|dtjkr5dn_|ddkrqd|jtjt|d��|�fn#d|jtj|d�|�f|dtjkr�dnx|dtjkr�dn_|ddkrd|jtjt|d��|�fn#d|jtj|d�|�ffS(	Ns	%s AND %sisUNBOUNDED PRECEDINGsCURRENT ROWs%s PRECEDINGs%s FOLLOWINGisUNBOUNDED FOLLOWING(RtRANGE_UNBOUNDEDt
RANGE_CURRENTR�tliteraltabs(R�trange_R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_format_frame_clause�s< <c
Ks�|jr%d|j|j|�}n+|jrJd|j|j|�}nd}d|jj||�djgd|jfd|jffD]@\}}|dk	r�t	|�r�d||j||�f^q�|r�|gng�fS(NsRANGE BETWEEN %ssROWS BETWEEN %ss%s OVER (%s)Ryt	PARTITIONtORDERs%s BY %s(
R�R�trowsR�R�R�R=tpartition_bytorder_byR(R�toverR�R�twordR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_overs				7cKs,d|jj||�|jj||�fS(Ns%s WITHIN GROUP (ORDER BY %s)(R�R�R�(R�twithingroupR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_withingroup$scKs,d|jj||�|jj||�fS(Ns%s FILTER (WHERE %s)(tfuncR�t	criterion(R�t
funcfilterR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_funcfilter*scKs8|jj|j|j�}d||jj||�fS(NsEXTRACT(%s FROM %s)(textract_mapRftfieldRrR�(R�textractR�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_extract0scKs7|dk	r+||j|jd|j�nt|d|jj�d�}|r]|||�Stj|jd�}|r�|jr�|d7}q�n=|j}|j	j
|�r�|j	j|�n|}|d}djg|j
D]0}|j	j
|�r|j	j|�n|^q�|g�i|j||�d6SdS(Ns
visit_%s_funcs%(expr)sR>Rr((R�R�R�R�tlowert	FUNCTIONSRft	__class__t	_has_argsR�t_requires_quotes_illegal_charsRBR=tpackagenamestfunction_argspec(R�R�R8R�tdispR�ttok((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_function7s$
		$
:
cKs|j|j�S(N(tvisit_sequencetsequence(R�t
next_valueR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_next_value_funcWscKstd|jj��dS(Ns2Dialect '%s' does not support sequence increments.(R�R�R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�ZscKs|jj||�S(N(tclause_exprR�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�`sics��j}|r�jn
�jd}|pG|dkoG|jdt�}�jji|dd6|dd6|d6|d6��jj|j�}	d|	dj���fd�t|j	�D��}
|
�j
|td	����7}
|
�j|��7}
|
|j
dk	s"|jdk	r4�j|��p7d
7}
�jr]|r]�j�|
}
n�jjd��r�|r�d|
dS|
SdS(
Ni����iRdtcorrelate_fromstasfrom_fromsRRyc
3s9|]/\}}|j�d�dtd|��VqdS(RRlRkN(R�R�(RitiRo(RR�R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>zsRR�RR(R�ReRfR�tappendtcompound_keywordstkeywordR=t	enumeratetselectstgroup_by_clauseR
torder_by_clauset
_limit_clauseR�t_offset_clausetlimit_clauseR�t_render_cte_clauseR�(R�tcsRRlRkR�RmR�tneed_result_mapR�RZ((RR�R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_compound_selectcs6
	"cCs6d|j||rd|ndf}t||d�S(Ns
visit_%s_%s%st_R�(R�R�R�(R�t	operator_t
qualifier1t
qualifier2tattrname((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_get_operator_dispatch�s
cKs�|jrr|jr$tjd��n|j|jdd�}|rU|||j|�S|j|t|j|�Snf|jr�|j|jdd�}|r�|||j|�S|j|t|j|�Sntjd��dS(NsFUnary expression does not support operator and modifier simultaneouslytunaryR{tmodifiers,Unary expression has no operator or modifier(R{R�RR.R�t _generate_generic_unary_operatorR5t _generate_generic_unary_modifier(R�R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_unary�s&			cKsC|js|jjr(|j|j|�Sd|j|j|�SdS(Ns%s = 1(t_is_implicitly_booleanR�RuR�R�(R�R�R{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_istrue_unary_operator�s	cKsG|js|jjr,d|j|j|�Sd|j|j|�SdS(NsNOT %ss%s = 0(R�R�RuR�R�(R�R�R{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_isfalse_unary_operator�s	cKsd|j|dtj�S(NsNOT %stoverride_operator(tvisit_binaryRtmatch_op(R�RR{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_notmatch_op_binary�s	cCstjd�dS(Ns�The IN-predicate was invoked with an empty sequence. This results in a contradiction, which nonetheless can be expensive to evaluate.  Consider alternative strategies for improved performance.(R	twarn(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_emit_empty_in_warning�scKsF|jjrdS|jjr)|j�n|j|j|jk�SdS(Ns1 != 1(R�t_use_static_int_warn_on_empty_inR�R�R?(R�RR{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_empty_in_op_binary�s

cKsF|jjrdS|jjr)|j�n|j|j|jk�SdS(Ns1 = 1(R�R�R�R�R�R?(R�RR{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_empty_notin_op_binary�s

cCstd|jj��dS(Ns3Dialect '%s' does not support empty set expression.(R�R�R�(R�t
element_types((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_empty_set_expr�scKs�|jr@t|jtj�r@t|jtj�r@t|d<n|pL|j}|j|dd�}|rz||||�Syt
|}Wn#tk
r�tj
||��nX|j|||�SdS(Nt
literal_bindsR(tansi_bind_rulesR2R?Rt
BindParameterRUR�R{R�R�R5R,RtUnsupportedCompilationErrort_generate_generic_binary(R�RR�teager_groupingR�R�R�topstring((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s	

cKs|j|j|�S(N(R�tsql_function(R�R�R{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt&visit_function_as_comparison_op_binaryscKsd|jjr6|j|j|�d|j|j|�S|j|j|�d|j|j|�SdS(Ns %% s % (R�RXR�R?RU(R�RR{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_mod_binarys*cKs+|j|d<|j|d|jd|�S(NR�Ry(R�R�R�(R�R�R{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_custom_op_binarys
cKs|j||jd|�S(NRy(R�R�(R�R�R{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_custom_op_unary_operator"scKs|j|d|j|�S(NRy(R�R�(R�R�R{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_custom_op_unary_modifier'scKsq|jdt�}t|d<|jj|d||�||jj|d||�}|rm|rmd|}n|S(Nt
_in_binaryR�s(%s)(RfR�R�R?R�RU(R�RR�R�R�R�RZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�,s
%
cKs||jj||�S(N(R�R�(R�R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�AscKs|jj||�|S(N(R�R�(R�R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�DscCstjddtj�S(Ns'%'R�(Rtliteral_columnRt
STRINGTYPE(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_like_percent_literalGscKsF|j�}|j}|j|j�j|�|_|j|||�S(N(t_cloneR�t__add__RUtvisit_like_op_binary(R�RR{R�tpercent((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_contains_op_binaryKs	cKsF|j�}|j}|j|j�j|�|_|j|||�S(N(R�R�R�RUtvisit_notlike_op_binary(R�RR{R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_notcontains_op_binaryQs	cKs=|j�}|j}|j|j�|_|j|||�S(N(R�R�t__radd__RUR�(R�RR{R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_startswith_op_binaryWs	cKs=|j�}|j}|j|j�|_|j|||�S(N(R�R�R�RUR�(R�RR{R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_notstartswith_op_binary]s	cKs=|j�}|j}|j|j�|_|j|||�S(N(R�R�R�RUR�(R�RR{R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_endswith_op_binarycs	cKs=|j�}|j}|j|j�|_|j|||�S(N(R�R�R�RUR�(R�RR{R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_notendswith_op_binaryis	cKsd|jjdd�}d|jj||�|jj||�f|r_d|j|tj�ndS(Ntescapes
%s LIKE %ss ESCAPE R�(	t	modifiersRfR�R?R�RUtrender_literal_valueRR�(R�RR{R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�oscKsd|jjdd�}d|jj||�|jj||�f|r_d|j|tj�ndS(NR�s%s NOT LIKE %ss ESCAPE R�(	R�RfR�R?R�RUR�RR�(R�RR{R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�|scKsd|jjdd�}d|jj||�|jj||�f|r_d|j|tj�ndS(NR�slower(%s) LIKE lower(%s)s ESCAPE R�(	R�RfR�R?R�RUR�RR�(R�RR{R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_ilike_op_binary�scKsd|jjdd�}d|jj||�|jj||�f|r_d|j|tj�ndS(NR�slower(%s) NOT LIKE lower(%s)s ESCAPE R�(	R�RfR�R?R�RUR�RR�(R�RR{R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_notilike_op_binary�scKs4|jjdt�}|j||r*dnd|�S(NR[s BETWEEN SYMMETRIC s	 BETWEEN (R�RfR�R�(R�RR{R�R[((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_between_op_binary�scKs4|jjdt�}|j||r*dnd|�S(NR[s NOT BETWEEN SYMMETRIC s
 NOT BETWEEN (R�RfR�R�(R�RR{R�R[((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_notbetween_op_binary�s
c
	Ks�|sX|jj|j�}|jrX|j|�}|j|dtd|d||�Sn|sm|r�|jr�|jdkr�|j
dkr�tjd|j
��n|j|dt|�S|j|�}||jkrl|j|}	|	|k	rl|	js|jr2|	jj|j�r2tjd|j
��qi|	jsD|jritjd|j
|j
f��qiqln||j|j
<|j|<|j|d|j|�S(Ntskip_bind_expressionR R�s@Bind parameter '%s' without a renderable value not allowed here.sIBind parameter '%s' conflicts with unique bind parameter of the same names�bindparam() name '%s' is reserved for automatic usage in the VALUES or SET clause of this insert/update statement.   Please use a name other than column name when using bindparam() with insert() or update() (for example, 'b_%s').t	expanding(R�tdialect_implR�t_has_bind_expressiontbind_expressionR�R�R�RR�RRR.Rtrender_literal_bindparamt_truncate_bindparamR�RbR�tintersectiont_is_crudR]R(
R�R	R R�RR�timplRR�texisting((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_bindparam�sB		

cKs|j}|j||j�S(N(RR�R�(R�R	R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�s	cCs6|j|j�}|r"||�Std|��dS(sRender the value of a bind parameter as a quoted literal.

        This is used for statement sections that do not accept bind parameters
        on the target driver/database.

        This should be implemented by subclasses using the quoting services
        of the DBAPI.

        s(Don't know how to literal-quote value %rN(t_cached_literal_processorR�R�(R�RR�t	processor((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s

cCs[||jkr|j|S|j}t|tj�rJ|jd|�}n||j|<|S(NR	(R�RR2RR3R4(R�R	t	bind_name((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�s	
cCs�||f|jkr&|j||fS|j|j�}t|�|jdkr�|jj|d�}|dt|jdd�!dt|�d}|d|j|<n|}||j||f<|S(NiiiR�i(R�t	apply_mapR�RR�Rftmaxthex(R�tident_classR�tanonnametcountert	truncname((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR4s/cCs||jS(N(R�(R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
_anonymizescCsP|jdd�\}}|jj|d�}|d|j|<|dt|�S(NRyiR�(tsplitR�RfRh(R�Rtidenttderivedtanonymous_counter((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�"scKse|jr8|dk	r%|j|�q8|jj|�n|rOt|_d|S|ji|d6SdS(Ns([EXPANDING_%s])R�(R�R�R�R�R�tcontains_expanding_parametersR�(R�R�tpositional_namesRR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR](s		cs��j�||d<t|jtj�rA�jd|j�}n	|j}t}t}	|�jkr��j|}
||
k}	||
j	ks�||
kr�t}q�|
|j	kr��j
|
=q�tjd|��n|s�|r=|j
dk	r.|j
}|j
j}t|tj�r:�jd|�}q:q=|}d}n|r8|�j|<d|jjkr�d�jkr��jji|jjdd6��_n|�j
kr��j||�n|r8|�j
kr8|jr�t�_n�jj||�}
|jr�t|jtj�r&|j}n4t|jtj�rN|jjd}ntsZt�gtj|j �D]}|dk	rm|^qm}|
ddj!�fd�|D��7}
n�j"r�g|d	<�j#|<n|
d
|jj$�dt|�7}
|j%r%|
d�j&||j%|�7}
n|
�j
|<q8n|r�|r^|	r^�jj||�S|r��jj||�}
�jj'|�r��jj(|�}n|
�j)|�7}
|
S�jj||�SndS(
Ntvisiting_cteR?s5Multiple, unrelated CTEs found with the same name: %rt
autocommitis(%s)s, c3s!|]}�jj|�VqdS(N(R�t
format_column(RiR(R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�sRs AS 
RRy(*R�R2R�RR3R4R�R�R�t	_restatesR�RR.t
_cte_aliasR�R�R�R�Rat	visit_ctet	recursiveR�R�tformat_aliastoriginalRtSelecttCompoundSelectR�tAssertionErrorR	tunique_listt
inner_columnsR=R�R�R�t	_suffixest_generate_prefixest_requires_quotesRBtget_render_as_alias_suffix(R�tcteRtashintt	fromhintsRR�tcte_namet
is_new_ctetembedded_in_current_named_ctetexisting_ctet
pre_alias_ctetcte_pre_alias_nameRZt
col_sourceRot
recur_cols((R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR$6s�	

	
	

		
						
c	Ks�|s|rEt|jtj�r9|jd|j�}qE|j}n|r^|jj||�S|r�|jj|dt	|�|j
|jj||��}|r�||kr�|j|||||�}n|S|jj||�SdS(NR?R(R2R�RR3R4R�R&R'R�R�R0tformat_from_hint_text(	R�R?RR2tiscrudR3R�t
alias_nametret((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_alias�s 		cKst|d<d|j||�S(Ntlaterals
LATERAL %s(R�R@(R�RAR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_lateral�s
cKsgd|j|dt|�|j�j||�f}|jdk	rc|d|jj||�7}n|S(Ns%s TABLESAMPLE %sRs REPEATABLE (%s)(R@R�t_get_methodR�tseedR�(R�ttablesampleRR�RZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_tablesample�scCsd|S(Ns AS ((R�talias_name_text((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR0�scCs |jj||||f�dS(N(R�R�(R�tkeynameR�tobjectsR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRi�scs&�jj�j�}|jrH|rH|j��}	��fd�}
n�}	|r`�j}
nd}
|su|	}n�t�tj	�r�|	�k	r�t
|	�jd�jf�}q|	}nC|dk	r�|r�t
|	|d�j
f�}n|r^t�tj�r^�jr^�jdk	r^t�jtj�r^t
|	tj�j�d�jf�}n�t�tj�r�t�tj�s��jr�t�d�s�t�tj�r�t
|	�j�}n<|	�k	r�t
|	tj�j�d�jf�}n|	}|jd|d|
�|j�|�S(s.produce labeled columns present in a select().cs!�j||�f||�dS(N(Ri(RHR�RIR�(RR�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR8�sR�R�R R8N(R�RR�t_has_column_expressiontcolumn_expressionRiR�R2RtLabelR�R�R�t
_key_labeltColumnClauseR@R\RR(t
_as_truncatedRt
TextClausetUnaryExpressiontwraps_column_expressionthasattrRtFunctiont
anon_labeltupdateR�(R�RVRRnRtcolumn_clause_argsR�R Rtcol_exprR8tresult_expr((RR�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_label_select_column�sV		
		cCs-|j||�}|r)|d|7}n|S(NRy(tget_from_hint_text(R�tsqltextR\thintR=thinttext((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR<;scCsdS(N(R�(R�tbyfroms((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytget_select_hint_textAscCsdS(N(R�(R�R\RZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR[DscCsdS(N(R�(R�R\RZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytget_crud_hint_textGscCs
dj|�S(NRy(R=(R�t
hint_texts((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytget_statement_hint_textJscs.i�ig����fd���|�S(s�Rewrite any "a JOIN (b JOIN c)" expression as
        "a JOIN (select * from b JOIN c) AS anon", to support
        databases that can't parse a parenthesized join correctly
        (i.e. sqlite < 3.7.16).

        c
sz|�dkr�d|S|�kr0�|S|j�}�|<|jr�|jr�t|jtj�r�|j��|j|�|_�|j|�}tj	|j
gdt�j�}x)|j
D]}|j|_|j|_q�Wtt|jj
j
|j
��}|||j
j<|||j
j<|||jj
j<|||jj
j<xEt�dj��D]-\}}||krg||�d|<qgqgW�dj|�||_�|j|�|_n�|jr�d|d<|jd�|�n�|jrc|jrc|jdd�dk}	|	r3�ji�nd|d<|jd�|�|	rv�d=qvn|jd�|�|S(Ni����t
use_labelstselect_containerttransform_cluetclonet
inside_select(R�t
is_selectablet_is_joinR2RURtFromGroupingt_reset_exportedR?R(R�R�R?RoRRMR�t_labelR
tzipR�titemsRVtonclauset_is_from_containert_copy_internalst
_is_selectRfR�R�(
R�R�tnewelemRUtselectable_Rottranslate_dicttktvtbarrier_select(tclonedtcolumn_translatetvisit(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR|WsR		
#		


((R�RV((RzR{R|sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt"_transform_select_for_nested_joinsMs	Qc	
s�td�|jD���t�fd�|jD��}g|jD]I\}}}}||tg|D]}|j||�^qd�|f^qB|_dS(Ncss|]}|j|fVqdS(N(RM(RiRo((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�sc3s"|]}�|j|fVqdS(N(RM(RiRo(t	inner_col(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�s(R
R,R�ttupleRf(	R�RVttransformed_selecttdRR�tobjsttypR�((R~sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt&_transform_result_map_for_nested_joins�s
R�R�c	Cs�|j}|r|jn
|jd}|d}|d}|rk|rk|jd|j|�dd�}n|jd|d|�}|S(Ni����R�R�texplicit_correlate_fromstimplicit_correlate_froms((R�Ret_get_display_fromst
difference(	R�RVRRARmR�R�R�tfroms((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_display_froms_for_select�s



				c	
s�|jo$|o$|jo$|jj}
|
ro|j|�}|j|d|d|d|d|dt|	�}n|j}
|
r�|jn
|jd}|
p�|dkr�|jdt	�p�|jd	t	�}|r�d
|	kr�|	d
=n|
r|r|j
||�n|S|j||||�}|	j�}|j
it	d6t	d6�d
}|jr�|j|�\}}|r�||d7}q�nd}|jr�||j||j|	�7}n||j||	�7}gg|jD]-\}}|j|||||d|�^q�D]}|dk	r
|^q
}|r�|dk	r�ttg|jD]\}}|^qJg|jD]\}}|^qi���g|jD]:\}}}}||t�fd�|D��|f^q�|_n|j||||||	�}|jr[g|jD]*\}}|d|jjfkr|^q}|r[|d|j|�7}q[n|jr}|
r}|j�|}n|j r�|d|j||j |	�7}n|jj!d�|s�|r�|r�d|dS|SdS(NRRlR3Rktnested_join_translationi����iRdR�R8R1R sSELECT RyR�c3s!|]}�j||�VqdS(N(Rf(Rito(t	translate(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>Dst*RR("RdR�R�tsupports_right_nested_joinsR}tvisit_selectR�ReRfR�R�t_setup_select_stacktcopyRVt_hintst_setup_select_hintsR�t	_prefixesR.tget_select_precolumnst_columns_plus_namesRZR
RnR�Rt_compose_select_bodyt_statement_hintsR�RcR�R�R-R�(R�RVRRlR3RkR�tselect_wraps_forRAR�tneeds_nested_translationR�RZRmR�RnR�RWt	hint_texttbyfromR�RRoR,RR�R�tdialect_namethttper_dialect((R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s�	

	


		>%M	$	c
Cs�tg|jj�D]P\\}}}|d|jjfkr||i|j|dt�d6f^q�}|j|�}||fS(NR�R2R�(R
R�RoR�R�R�R�R`(R�RVtfrom_R�R^R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�dsGcCs�|d}|d}|rE|rE|jd|j|�dd�}n|jd|d|�}ttj|��}|j|�}	i|d6|	d6|d6}
|jj|
�|S(NR�R�R�R�R((R�R�RXRt
_from_objectsRaR�R�(R�RVR�RRAR�R�R�tnew_correlate_fromstall_correlate_fromst	new_entry((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�ss$


				
c	Cs�|dj|�7}|r�|d7}|jrm|djg|D]$}|j|dtd||�^q<�7}q�|djg|D]}|j|dt|�^q}�7}n||j�7}|jdk	r�|jj||�}|r�|d|7}q�n|jjr||j	||�7}n|j
dk	rY|j
j||�}|rY|d|7}qYn|jjr~||j||�7}n|j
dk	s�|jdk	r�||j||�7}n|jdk	r�||j||�7}n|S(Ns, s 
FROM RR3s 
WHERE s	 
HAVING (R=R�R�R�Rt_whereclauseR�t_group_by_clauseR|R�t_havingt_order_by_clauseR�R�R�R�t_for_update_argtfor_update_clause(	R�RZRVR,R�R�R�tftt((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s:
		5	/cs9dj��fd�|D��}|r5|d7}n|S(NRyc3sE|];\}}|dks-|�jjkr|j���VqdS(N(R�R�R�R�(RitprefixR�(R�R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�s	(R=(R�tstmttprefixesR�R�((R�R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR.�s

cCs�|jrBtg|jD]}|j|^qg�|j|_n|j|j�d}|djg|jj�D]}|^qq�7}|d7}|S(NRys, 
s
 (	R�tsumR�R�R�tget_cte_preambleR�R=tvalues(R�R1tcte_textttxt((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��s	)/
cCs|r
dSdSdS(NsWITH RECURSIVEtWITH((R�R%((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��scKs|jrdpdS(scCalled when building a ``SELECT`` statement, position is just
        before column list.

        s	DISTINCT R�(t	_distinct(R�RVR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��scKs+|jj||�}|r#d|SdSdS(s5allow dialects to customize how GROUP BY is rendered.s
 GROUP BY R�N(R�R�(R�RVR�tgroup_by((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��scKs+|jj||�}|r#d|SdSdS(s5allow dialects to customize how ORDER BY is rendered.s
 ORDER BY R�N(R�R�(R�RVR�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��scKsdS(Ns FOR UPDATE((R�RVR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��scCstjd��dS(Ns@RETURNING is not supported by this dialect's statement compiler.(RR.(R�R�treturning_cols((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytreturning_clause�scKs�d}|jdk	r5|d|j|j|�7}n|jdk	r�|jdkr`|d7}n|d|j|j|�7}n|S(NR�s
 LIMIT s

 LIMIT -1s OFFSET (R�R�R�R�(R�RVR�RZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�	s 
 c
Ks�|s|r�|jj|�}|rV|rV|jj|�d|jj|j�}	n|jj|j�}	|r�||kr�|j|	||||�}	n|	SdSdS(NR>R�(R�RDRERBR�R<(
R�R\RR=R2R3t
use_schemaR�RHR?((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_table
	s
,cKsw|jrd}n|jr$d}nd}|jj|dt|�||jj|dt|�d|jj||�S(Ns FULL OUTER JOIN s LEFT OUTER JOIN s JOIN Rs ON (R1tisouterR?R�R�RURp(R�R=RR�t	join_type((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_join*	s				cCs�tg|jj�D]6\\}}}|d|jjfkr||f^q�}|j|kr�|j||j||jt�}n||fS(NR�(R
R�RoR�R�R\R<R�(R�R�t
table_textR\R�R�t
dialect_hints((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_setup_crud_hints9	s-cKs�|j}|jjit�d6t�d6|d6�tj||tj|�}|r�|jjr�|jjr�t	j
d|jj��n|jr�|jj
s�t	j
d|jj��n|d}n|}|j}|jj}d}	|jr|	|j||j|�7}	n|	d7}	|j|j�}
|jrT|j||
�\}}
n|	|
7}	|sk|r�|	d	d
jg|D]}|j|d�^q~�7}	n|js�|jr�|j||jp�|j�}
|jr�|	d|
7}	q�nd}
|jdk	re|j|j|�}|jrT|rT|jj rT|	d|j!�|f7}	q�|	d
|7}	nu|r|r|	d7}	n[|jr�|	dd
jd�|D��7}	n.|	dd
jg|D]}|d^q��7}	|j"dk	r|j|j"|�}|r|	d|7}	qn|
r9|jr9|	d|
7}	n|jrh|rh|jj rh|j!�|	}	n|jj#d�|r�d|	dS|	SdS(NR�R�RsWThe '%s' dialect with current database version settings does not support empty inserts.scThe '%s' dialect with current database version settings does not support in-place multirow inserts.isINSERT sINTO s (%s)s, Rys %s%ss %ss DEFAULT VALUESs
 VALUES %scss,|]"}ddjd�|D��VqdS(s(%s)s, css|]}|dVqdS(iN((RiRo((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�	sN(R=(Ritcrud_param_set((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�	ss VALUES (%s)ii����RR($R�R�RXRt_setup_crud_paramstISINSERTR�tsupports_default_valuestsupports_empty_insertRR.R�t_has_multi_parameterstsupports_multivalues_insertR�R�R.tformat_tableR\R�R�R=R!R�R�R�treturning_precedes_valuesR�RVR�t_insert_from_selectR�tcte_follows_insertR�t_post_values_clauseR�(R�tinsert_stmtRR�Rmtcrud_paramstcrud_params_singleR�R�RZR�R�RoR�tselect_texttpost_values_clause((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_insertG	s�
	



	
			
	

.	

	.cCsdS(s3Provide a hook for MySQL to add LIMIT to the UPDATEN(R�(R�tupdate_stmt((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytupdate_limit_clause�	scKs t|d<|j|dt|�S(s|Provide a hook to override the initial table clause
        in an UPDATE statement.

        MySQL overrides this.

        RR=(R�R�(R�R�t
from_tabletextra_fromsR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytupdate_tables_clause�	s
cKstd��dS(s~Provide a hook to override the generation of an
        UPDATE..FROM clause.

        MySQL and MSSQL override this.

        sCThis backend does not support multiple-table criteria within UPDATEN(R�(R�R�R�R�t
from_hintsR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytupdate_from_clause�	s	cs��j}|j}t|�}|rtttj|j��}g|D]}||krD|^qD}	|j|�}
ng}	|jh}
�jji|
d6|
d6|d6�d}|j	r�|�j
||j	|�7}n�j||j|	|�}tj
�|tj|�}
|jr3�j||�\}}nd}||7}|d7}|oY�j�|dj��fd�|
D��7}�js�|jr��jr�|d�j|�jp�|j�7}q�n|r�j||j|	||�}|r|d|7}qn|jdk	rE�j|j|�}|rE|d	|7}qEn�j|�}|rk|d|7}n�js}|jr��jr�|d�j|�jp�|j�7}n�jr�|r��j�|}n�jjd
�|r�d|dS|SdS(
NR�R�RsUPDATE s SET s, c3s4|]*}|dj�d��d|dVqdS(iRFt=iN(R�(RiRo(RFR�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>
sRys WHERE i����RR(R�t_extra_fromstboolRXRR�R\RaR�R�R.R�RR�tISUPDATER�R�R�t'render_table_with_column_in_update_fromR=R�R�R�R�R�R�R�R�R�R�R�(R�R�RR�RmR�t
is_multitablet
main_fromsR�trender_extra_fromsR�RZR�R�R�textra_from_textR�R�((RFR�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_update�	s|
	%				

		 	
cCstj||j�S(N(Rt_key_getters_for_crud_columnR�(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�6
scKstd��dS(s�Provide a hook to override the generation of an
        DELETE..FROM clause.

        This can be used to implement DELETE..USING for example.

        MySQL and MSSQL override this.

        sCThis backend does not support multiple-table criteria within DELETEN(R�(R�R�R�R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytdelete_extra_from_clause:
scCs|j|dtdt�S(NRR=(R�R�(R�tdelete_stmtR�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytdelete_table_clauseJ
scKs|j}tj||tj|�|j}|jhj|�}|jji|d6|d6|d6�d}|jr�||j	||j|�7}n|d7}|j
||j|�}|jr�|j||�\}	}nd}	||7}|jr|jr|d|j||j�7}qn|r]|j||j||	|�}
|
r]|d|
7}q]n|jdk	r�|jj||�}|r�|d|7}q�n|jr�|jr�|d|j||j�7}n|jr�|r�|j�|}n|jjd�|rd	|d
S|SdS(NR�R�RsDELETE sFROM Rys WHERE i����RR(R�RR�tISDELETER�R\RaR�R�R.R�R�R�R�R�R�R�R�R�R�R�R�R�(R�R�RR�RmR�R�RZR�R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_deleteM
s^
				
	
			cCsd|jj|�S(NsSAVEPOINT %s(R�tformat_savepoint(R�tsavepoint_stmt((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_savepoint�
scCsd|jj|�S(NsROLLBACK TO SAVEPOINT %s(R�R�(R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_rollback_to_savepoint�
scCsd|jj|�S(NsRELEASE SAVEPOINT %s(R�R�(R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_release_savepoint�
sN((�R�R�R�tEXTRACT_MAPR�tCOMPOUND_KEYWORDSR�R�R�R�R�R`R�R�R�R�RR�RgR�R�R�R�R�R�R�R�R	tmemoized_instancemethodR�t
contextlibtcontextmanagerR�R�tmemoized_propertyRR
R�R�R�tdependenciesRRRR*R/R<R=RKRNRPRRRVR[RARcRpRsRvRxR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RRR
RR�RR4RR�R]R$R@RBRFR0RiRZR<R`R[RaRcR}R�R�t	frozensetReR�R�R�R�R�R.R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��sF
G		8		"+	'																			 			2																										
					8			
			v	
		
L						]	!�			6	
										
	m		
	f		J		tStrSQLCompilercBsVeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
RS(	swA :class:`.SQLCompiler` subclass which allows a small selection
    of non-standard SQL features to render into a string value.

    The :class:`.StrSQLCompiler` is invoked whenever a Core expression
    element is directly stringified without calling upon the
    :meth:`.ClauseElement.compile` method.   It can render a limited set
    of non-standard SQL constructs to assist in basic stringification,
    however for more substantial custom or dialect-specific SQL constructs,
    it will be necessary to make use of :meth:`.ClauseElement.compile`
    directly.

    .. seealso::

        :ref:`faq_sql_expression_string`

    cCsdS(Ns<name unknown>((R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR=�
scKs,d|j|j|�|j|j|�fS(Ns%s[%s](R�R?RU(R�RR{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_getitem_binary�
scKs|j|||�S(N(R�(R�RR{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_json_getitem_op_binary�
scKs|j|||�S(N(R�(R�RR{R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt!visit_json_path_getitem_op_binary�
scKsd|jj|�S(Ns<next sequence value: %s>(R�tformat_sequence(R�tseqR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��
scCsHgtj|�D]!}|jd|tti�^q}ddj|�S(Ns
RETURNING s, (Rt_select_iterablesRZR�R�R�R=(R�R�R�Rotcolumns((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��
s4cs'ddj���fd�|D��S(NsFROM s, c3s-|]#}|j�dtd���VqdS(RR3N(R�R�(RiR�(R�R�R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�
s(R=(R�R�R�R�R�R�((R�R�R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��
s	cs'ddj���fd�|D��S(Ns, c3s-|]#}|j�dtd���VqdS(RR3N(R�R�(RiR�(R�R�R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�
s(R=(R�R�R�R�R�R�((R�R�R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��
s	(R�R�R�R=R�R�R�R�R�R�R�(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��
s							tDDLCompilercBspeZejd��Zejd��Zd$d�Zd�Zd�Z	d�Z
d�Zed�Z
d$d�Zd	�Zd
�Zd�Zeed�Zd
�Zed�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d�Z&d �Z'd!�Z(d"�Z)d#�Z*RS(%cCs|jj|jd�S(N(R�tstatement_compilerR�(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��
scCs
|jjS(N(R�RT(R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRT�
scCsdS(N(R�(R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��
scKs�|j}t|jtj�r�|j�}|j}|j|j�}t|�dkrk|dd}}n|d|d}}|j	d|�|j	d|�|j	d|j
|j��n|jj|j
|�S(NiiR�i����R\Rtfullname(tcontextR2ttargetRtTableR�R�tformat_table_seqRt
setdefaultR�R�R[R�(R�tddlR�RR�tpathR\tsch((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt	visit_ddl�
s		cCs|jj|j�}d|S(NsCREATE SCHEMA (R�t
format_schemaR�(R�RR((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_schemascCs9|jj|j�}d|}|jr5|d7}n|S(NsDROP SCHEMA s CASCADE(R�R
R�tcascade(R�tdropRRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_schemas

	
c
Cs�|j}|j}d}|jr>|dj|j�d7}n|d|j|�d7}|j|�}|r||d7}n|d7}d}t}x�|jD]�}|j}	yb|j|d|	j	o�|�}
|
dk	r�||7}d}|d|
7}n|	j	rt}nWq�tj
k
ra}tjtj
tjd	�|j|	j|jd
f��q�Xq�W|j|d|j�}|r�||d|7}n|d|j|�7}|S(
Ns
CREATE RysTABLE Rs
tfirst_pks, 
s	s (in table '%s', column '%s'): %sit _include_foreign_key_constraintss
)%s

(R�R�R�R=R�tcreate_table_suffixR�RR�tprimary_keyR�R�RR.R	traise_from_causetutdescriptionR�targstcreate_table_constraintstinclude_foreign_key_constraintstpost_create_table(
R�RR\R�RZRt	separatorRt
create_columnRt	processedtcetconst((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_tablesF			
	
	
)csh|j}|jrdS�j|d|�}dj�fd�|jD��}|rd|d|7}n|S(NRRyc3s|]}�j|�VqdS(N(R�(RiR(R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>Es(R�tsystemR�tget_column_specificationR=tconstraints(R�RRRRZR!((R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_column=s		cs�g}|jr"|j|j�n|j}|dk	rI|j|�}n	t�}|jg|jD]'}||jk	rb||krb|^qb�djd��fd�|D�D��S(Ns, 
	css!|]}|dk	r|VqdS(N(R�(Ritp((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>esc3s\|]R}|jdks'|j��r�jjsGt|dt�r�j|�VqdS(t	use_alterN(t_create_ruleR�R�tsupports_alterR�R�R�(RiR(R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>gs

(	RR�tforeign_key_constraintsR�R�RXtextendt_sorted_constraintsR=(R�R\RR%tall_fkcst	omit_fkcsRo((R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRLs			
(cCsd|jj|j�S(Ns
DROP TABLE (R�R�R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_tableuscCsd|jj|j�S(Ns
DROP VIEW (R�R�R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_viewxscCs,|jdkr(tjd|j��ndS(Ns,Index '%s' is not associated with any table.(R\R�RR.R�(R�RQ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_verify_index_table{scs�|j}�j|��j}d}|jr;|d7}n|d�j|d|�|j|jd|�dj�fd�|jD��f7}|S(NsCREATE sUNIQUE sINDEX %s ON %s (%s)tinclude_schemaR�s, c3s-|]#}�jj|dtdt�VqdS(RFR�N(R�R�R�R�(RiRr(R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>�s(	R�R2R�Rbt_prepared_index_nameR�R\R=texpressions(R�RR3tinclude_table_schemaRQR�RZ((R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_index�s	
		
cCs |j}d|j|dt�S(Ns
DROP INDEX R3(R�R4R�(R�RRQ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_index�s		cCs�|jdk	r'|jj|j�}nd}|rN|rN|jj|�}nd}|jj|�}|r}|d|}n|S(NR>(R\R�R�RDREtformat_index(R�RQR3RHtschema_namet
index_name((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR4�scCs,d|jj|jj�|j|j�fS(NsALTER TABLE %s ADD %s(R�R�R�R\R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_add_constraint�scCs8d|jj|j�|jj|jjtj��fS(NsCOMMENT ON TABLE %s IS %s(R�R�R�R�R�tcommentRtString(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_set_table_comment�s	cCsd|jj|j�S(NsCOMMENT ON TABLE %s IS NULL(R�R�R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_table_comment�scCsDd|jj|jdtdt�|jj|jjtj��fS(NsCOMMENT ON COLUMN %s IS %st	use_tableR�(	R�R!R�R�R�R�R=RR>(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_set_column_comment�s
		cCsd|jj|jdt�S(NsCOMMENT ON COLUMN %s IS NULLRA(R�R!R�R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_column_comment�scCsfd|jj|j�}|jjdk	rB|d|jj7}n|jjdk	rk|d|jj7}n|jjdk	r�|d|jj7}n|jjdk	r�|d|jj7}n|jjdk	r�|d7}n|jj	dk	r�|d7}n|jj
dk	r$|d|jj
7}n|jjtkrC|d	7}n|jj
dk	rb|d
7}n|S(NsCREATE SEQUENCE %ss INCREMENT BY %ds START WITH %ds MINVALUE %ds MAXVALUE %ds NO MINVALUEs NO MAXVALUEs	 CACHE %ds ORDERs CYCLE(R�R�R�t	incrementR�tstarttminvaluetmaxvaluet
nominvaluet
nomaxvaluetcacheROR�tcycle(R�RRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_create_sequence�s*




cCsd|jj|j�S(NsDROP SEQUENCE %s(R�R�R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_sequence�scCs�|j}|jdk	r-|jj|�}nd}|dkrXtjd|j��nd|jj|jj�||j	r�dp�dfS(Ns<Can't emit DROP CONSTRAINT for constraint %r; it has no names#ALTER TABLE %s DROP CONSTRAINT %s%ss CASCADER�(
R�R�R�R�tformat_constraintRR.R�R\R(R�RRtformatted_name((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_drop_constraint�s	cKsx|jj|�d|jjj|jd|�}|j|�}|dk	r^|d|7}n|jst|d7}n|S(NRyRSs	 DEFAULT s	 NOT NULL(	R�R!R�RTR�R�tget_column_default_stringR�tnullable(R�RR�tcolspecR$((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR$�s	
cCsdS(NR�((R�R\((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR
scCsdS(NR�((R�R\((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRscCspt|jtj�rht|jjtj�rI|jj|jjt	j
�S|jj|jjdt�SndSdS(NR�(R2tserver_defaultRt
DefaultClausetargR	tstring_typesR�R�RR�R�R�R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRQs		cCs�d}|jdk	rG|jj|�}|dk	rG|d|7}qGn|d|jj|jdtdt�7}||j	|�7}|S(NR�sCONSTRAINT %s s
CHECK (%s)RFR�(
R�R�R�RNR�R�R\R�R�tdefine_constraint_deferrability(R�RRZRO((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_check_constraint scCs�d}|jdk	rG|jj|�}|dk	rG|d|7}qGn|d|jj|jdtdt�7}||j	|�7}|S(NR�sCONSTRAINT %s s
CHECK (%s)RFR�(
R�R�R�RNR�R�R\R�R�RX(R�RRZRO((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_column_check_constraint,scs�t|�dkrdSd}|jdk	r]�jj|�}|dk	r]|d|7}q]n|d7}|ddj�fd�|jr�|jn|jD��7}|�j	|�7}|S(NiR�sCONSTRAINT %s sPRIMARY KEY s(%s)s, c3s$|]}�jj|j�VqdS(N(R�RBR�(RiRo(R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>Bs(
RR�R�R�RNR=t_implicit_generatedtcolumns_autoinc_firstRRX(R�RRZRO((R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_primary_key_constraint8s
cs|j�d}|jdk	rP|jj|�}|dk	rP|d|7}qPnt|j�djj}|ddj�fd�|jD��|j	||��dj�fd�|jD��f7}||j
|�7}||j|�7}||j|�7}|S(NR�sCONSTRAINT %s is"FOREIGN KEY(%s) REFERENCES %s (%s)s, c3s$|]}�j|jj�VqdS(N(RBtparentR�(RiR�(R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>Vsc3s$|]}�j|jj�VqdS(N(RBRR�(RiR�(R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>\s(
R�R�R�RNR�RRR\R=tdefine_constraint_remote_tabletdefine_constraint_matchtdefine_constraint_cascadesRX(R�RRZROtremote_table((R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_foreign_key_constraintLs$	!cCs
|j|�S(s=Format the remote table clause of a CREATE CONSTRAINT clause.(R�(R�RR\R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR_dscs�t|�dkrdSd}|jdk	rN�jj|�}|d|7}n|ddj�fd�|D��7}|�j|�7}|S(NiR�sCONSTRAINT %s sUNIQUE (%s)s, c3s$|]}�jj|j�VqdS(N(R�RBR�(RiRo(R�(sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pys	<genexpr>qs(RR�R�R�RNR=RX(R�RRZRO((R�sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_unique_constraintis!cCsnd}|jdk	r8|d|jj|jt�7}n|jdk	rj|d|jj|jt�7}n|S(NR�s
 ON DELETE %ss
 ON UPDATE %s(tondeleteR�R�tvalidate_sql_phrasetFK_ON_DELETEtonupdatetFK_ON_UPDATE(R�RRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRavscCsnd}|jdk	r8|jr+|d7}q8|d7}n|jdk	rj|d|jj|jt�7}n|S(NR�s DEFERRABLEs NOT DEFERRABLEs
 INITIALLY %s(R%R�R7R�RftFK_INITIALLY(R�RRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRX�s	

cCs-d}|jdk	r)|d|j7}n|S(NR�s	 MATCH %s(tmatchR�(R�RRZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR`�sN(+R�R�R	R�R�RTR�R�RRRR"R�R&RR0R1R2R�R7R8R4R<R?R@RBRCRLRMRPR$RRRQRYRZR]RcR_RdRaRXR`(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�
sH				1(								
								
						
		
tGenericTypeCompilercBs�eZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+RS(*cKsdS(NtFLOAT((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_FLOAT�scKsdS(NtREAL((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_REAL�scKsT|jdkrdS|jdkr4di|jd6Sdi|jd6|jd6SdS(NtNUMERICsNUMERIC(%(precision)s)t	precisions!NUMERIC(%(precision)s, %(scale)s)tscale(RrR�Rs(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_NUMERIC�s
cKsT|jdkrdS|jdkr4di|jd6Sdi|jd6|jd6SdS(NtDECIMALsDECIMAL(%(precision)s)Rrs!DECIMAL(%(precision)s, %(scale)s)Rs(RrR�Rs(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_DECIMAL�s
cKsdS(NtINTEGER((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_INTEGER�scKsdS(NtSMALLINT((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_SMALLINT�scKsdS(NtBIGINT((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_BIGINT�scKsdS(Nt	TIMESTAMP((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_TIMESTAMP�scKsdS(NtDATETIME((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_DATETIME�scKsdS(NtDATE((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_DATE�scKsdS(NtTIME((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_TIME�scKsdS(NtCLOB((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_CLOB�scKsdS(NtNCLOB((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_NCLOB�scCsD|}|jr#|d|j7}n|jr@|d|j7}n|S(Ns(%d)s
 COLLATE "%s"(tlengthRM(R�R�R�RZ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_render_string_type�s		cKs|j|d�S(NtCHAR(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_CHAR�scKs|j|d�S(NtNCHAR(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_NCHAR�scKs|j|d�S(NtVARCHAR(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_VARCHAR�scKs|j|d�S(NtNVARCHAR(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_NVARCHAR�scKs|j|d�S(NtTEXT(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_TEXT�scKsdS(NtBLOB((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_BLOB�scKsd|jrd|jpdS(NtBINARYs(%d)R�(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_BINARY�scKsd|jrd|jpdS(Nt	VARBINARYs(%d)R�(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_VARBINARY�scKsdS(NtBOOLEAN((R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_BOOLEAN�scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_large_binary�scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_boolean�scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_time�scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_datetime�scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_date�scKs|j||�S(N(R|(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_big_integer
scKs|j||�S(N(Rz(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_small_integer
scKs|j||�S(N(Rx(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_integer
scKs|j||�S(N(Rp(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_real

scKs|j||�S(N(Rn(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_float

scKs|j||�S(N(Rt(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_numeric
scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_string
scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_unicode
scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_text
scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_unicode_text
scKs|j||�S(N(R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt
visit_enum
scKstjd|��dS(NsKCan't generate DDL for %r; did you forget to specify a type on this Column?(RR.(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRs"
scKs|j|j|j�|�S(N(R�ttype_engineR�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_type_decorator)
scKs
|j|�S(N(tget_col_spec(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytvisit_user_defined,
s(,R�R�RnRpRtRvRxRzR|R~R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RsR�R�(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRl�sT																																										tStrSQLTypeCompilercBseZd�Zd�ZRS(cCs&|jd�r|jSt|��dS(Ntvisit_(t
startswitht_visit_unknowntAttributeError(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt__getattr__1
scKsd|jjS(Ns%s(R�R�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�7
s(R�R�R�R�(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�0
s	tIdentifierPreparercBsLeZdZeZeZeZe	j
d�Zddde
ed�Zd�Zd�Zd�Zd�Zd�Zd�Zd	�Zdd
�Zdd�Zd�Ze
d
�Zdd�Zdd�Zdd�Zejd�d��Z d�Z!e
dd�Z"d�Z#edded�Z$e
d�Z%ej&d��Z'd�Z(RS(s@Handle quoting and case-folding of identifiers based on options.t"cCsq||_||_|p|j|_||_|jd|_||_||_i|_|jjdk|_	dS(ssConstruct a new ``IdentifierPreparer`` object.

        initial_quote
          Character that begins a delimited identifier.

        final_quote
          Character that ends a delimited identifier. Defaults to
          `initial_quote`.

        omit_schema
          Prevent prepending schema name. Useful for databases that do
          not support schemae.
        iRoRlN(RoRl(
R�t
initial_quotetfinal_quotetescape_quotetescape_to_quotetomit_schematquote_case_sensitive_collationst_stringsR�RX(R�R�R�R�R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�G
s							cCs>|jj|j�}|jj|j�tj|�|_|S(N(R�t__new__t__dict__RVRt_schema_getterRD(R�R�tprep((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�k
scCs:|j|j|j�}|jr6|jdd�}n|S(s�Escape an identifier.

        Subclasses should override this to provide database-dependent
        escaping behavior.
        RWs%%(RYR�R�RX(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_escape_identifierq
s	cCs|j|j|j�S(s�Canonicalize an escaped identifier.

        Subclasses should override this to provide database-dependent
        unescaping behavior that reverses _escape_identifier.
        (RYR�R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_unescape_identifier}
scCs?|dk	r;|j|�r;tjd||jf��n|S(s�keyword sequence filter.

        a filter for elements that are intended to represent keyword sequences,
        such as "INITIALLY", "INITIALLY DEFERRED", etc.   no special characters
        should be present.

        .. versionadded:: 1.3

        s/Unexpected SQL phrase: %r (matching against %r)N(R�RkRR.tpattern(R�R�treg((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRf�
s
cCs|j|j|�|jS(s~Quote an identifier.

        Subclasses should override this to provide database-dependent
        quoting behavior.
        (R�R�R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytquote_identifier�
s
cCsT|j�}||jkpS|d|jkpS|jjtj|��pS||kS(s5Return True if the given identifier requires quoting.i(R�treserved_wordstillegal_initial_characterstlegal_charactersRkR	t	text_type(R�Rtlc_value((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR/�
s
cCs|jjtj|��S(sjReturn True if the given identifier requires quoting, but
        not taking case convention into account.(R�RkR	R�(R�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR��
scCs)|dk	rtjd�n|j|�S(sConditionally quote a schema name.


        The name is quoted if it is a reserved word, contains quote-necessary
        characters, or is an instance of :class:`.quoted_name` which includes
        ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for schema names.

        :param schema: string schema name
        :param force: unused

            .. deprecated:: 0.9

                The :paramref:`.IdentifierPreparer.quote_schema.force`
                parameter is deprecated and will be removed in a future
                release.  This flag has no effect on the behavior of the
                :meth:`.IdentifierPreparer.quote` method; please refer to
                :class:`.quoted_name`.

        s�The IdentifierPreparer.quote_schema.force parameter is deprecated and will be removed in a future release.  This flag has no effect on the behavior of the IdentifierPreparer.quote method; please refer to quoted_name().N(R�R	twarn_deprecatedRB(R�Rtforce((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRE�
s
cCs�|dk	rtjd�nt|dd�}|dkr�||jkrT|j|S|j|�r||j|�|j|<n
||j|<|j|Sn|r�|j|�S|SdS(sConditionally quote an identfier.

        The identifier is quoted if it is a reserved word, contains
        quote-necessary characters, or is an instance of
        :class:`.quoted_name` which includes ``quote`` set to ``True``.

        Subclasses can override this to provide database-dependent
        quoting behavior for identifier names.

        :param ident: string identifier
        :param force: unused

            .. deprecated:: 0.9

                The :paramref:`.IdentifierPreparer.quote.force`
                parameter is deprecated and will be removed in a future
                release.  This flag has no effect on the behavior of the
                :meth:`.IdentifierPreparer.quote` method; please refer to
                :class:`.quoted_name`.

        s�The IdentifierPreparer.quote.force parameter is deprecated and will be removed in a future release.  This flag has no effect on the behavior of the IdentifierPreparer.quote method; please refer to quoted_name().RBN(R�R	R�R�R�R/R�(R�RR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRB�
s


cCs|jr|j|�S|SdS(N(R�RB(R�tcollation_name((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRLs	
cCs[|j|j�}|j|�}|jrW|rW|dk	rW|j|�d|}n|S(NR>(RBR�RDR�R�RE(R�R�R�R�RH((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�s
cCs|j|p|j�S(N(RBR�(R�R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR7scCs|j|p|j�S(N(RBR�(R�R?R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR&!scCs4|p|j}|j|�r0|j|�}n|S(N(RR/R�(R�t	savepointR�R((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�$sssqlalchemy.sql.namingcCs
t|jtj�r^|j||j�}|dkrgt|jtj�rOdS|j}qgn	|j}t|tj�r�|j	dkr�|j
jp�|j
j}n|j
j}t
|�|kr�|d|d!dtj|�d}q�n|j
j|�|j|�S(NRQiiR�i����(R2R�Rt_defer_namet_constraint_name_for_tableR\R�t_defer_none_nameR3R�R�tmax_index_name_lengthR�RR	tmd5_hextvalidate_identifierRB(R�tnamingRR�tmax_((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyRN-s"	,cCs
|j|�S(N(RN(R�RQ((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR9KscCsj|dkr|j}n|j|�}|j|�}|jrf|rf|rf|j|�d|}n|S(s'Prepare a quoted table and schema name.R>N(R�R�RBRDR�RE(R�R\R�R�RRH((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�NscCs
|j|�S(sPrepare a quoted schema name.(RB(R�R�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR
[scCs�|dkr|j}nt|dt�sm|r]|j|jd|d|�d|j|�S|j|�Sn.|r�|j|jd|d|�d|S|SdS(sPrepare a quoted column name.R@R�R�R>N(R�R�R�R�R�R\RB(R�RRAR�t
table_nameR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR!`s
-$cCsa|j|�}|jrG|rG|rG|j|�|j|dt�fS|j|dt�fSdS(s(Format table name and schema as a tuple.R�N(RDR�RER�R�(R�R\R�RH((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�s
cCsrg|j|j|j|j�fD]}tj|�^q"\}}}tjdi|d6|d6|d6�}|S(NsM(?:(?:%(initial)s((?:%(escaped)s|[^%(final)s])+)%(final)s|([^\.]+))(?=\.|$))+tinitialtfinaltescaped(R�R�R�RR�R�(R�RzR�R�t
escaped_finaltr((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt_r_identifiers�s7cCsQ|j}gg|j|�D]\}}|p1|^qD]}|j|�^q8S(s:Unpack 'schema.table.column'-like strings into components.(R�tfindallR�(R�tidentifiersR�tatbR�((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pytunformat_identifiers�s	N()R�R�R�tRESERVED_WORDSR�tLEGAL_CHARACTERSR�tILLEGAL_INITIAL_CHARACTERSR�RR�R�RDR�R�R�R�R�R�RfR�R/R�RERBRLR�R7R&R�R	R�RNR9R�R
R!RR�R�R�(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyR�;
sF						
	
	%2	
		
	 (jR�R�RRR�RRRRRRRRRR	RXR�R�tIR�tLEGAL_CHARACTERS_PLUS_SPACEtrangeRaR�RgRiRjtUNICODERbRaR�tand_tor_taddtmulRtdivtmodttruedivtnegtlttletnetgttgeteqtis_distinct_fromtisnot_distinct_fromt	concat_opR�tnotmatch_optin_optnotin_optcomma_opR�R6tis_tisnotRtexiststdistinct_optinvtany_optall_optdesc_optasc_opt
nullsfirst_optnullslast_opR5RsRR!R"R#RBRCRzR{RWRctcubetrollupt
grouping_setsR�R�R)R�t	UNION_ALLR�t
EXCEPT_ALLR�t
INTERSECT_ALLR�tobjectR�twith_metaclasstEnsureKWArgTypeR�t	VisitableR�R�R�RRlR�R�(((sJ/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/sql/compiler.pyt<module>s�%

























































�%���������=���

Zerion Mini Shell 1.0