HEX
Server: LiteSpeed
System: Linux us-phx-web1284.main-hosting.eu 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: u300739242 (300739242)
PHP: 8.2.30
Disabled: system, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
Upload Files
File: //opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyc
�
���ec@sTdZddlZddlZddlZddlZddlZddlmZddlmZ	ddlm
Z
ddlmZdd	lm
Z
dd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZejdejejB�ZejdejejB�Zejd�Zejd�Z ejd�Z!ejd�Z"ejd�Z#de
j$fd��YZ%de&fd��YZ'de'ej(fd��YZ)de'ej*fd ��YZ+d!e'ej,fd"��YZ-d#e%fd$��YZ.d%e
j/fd&��YZ0e0e%_1dS('sDefault implementations of per-dialect sqlalchemy.engine classes.

These are semi-private implementation classes which are only of importance
to database dialect authors; dialects will usually use the classes here
as the base class for their own corresponding classes.

i����Ni(tcharacteristics(tcursor(t
interfaces(t
Connectioni(tevent(texc(tpool(t
processors(ttypes(tutil(tcompiler(t
expression(tquoted_names-\s*(?:UPDATE|INSERT|CREATE|DELETE|DROP|ALTER)s	\s*SELECTt	CACHE_HITt
CACHE_MISStCACHING_DISABLEDtNO_CACHE_KEYtNO_DIALECT_SUPPORTtDefaultDialectc
BszeZdZejZejZejZ	ej
ZeZ
eZeZeZeZdZeZeZeZeZeZeZeZeZeZeZeZeZ eZ!eZ"eZ#eZ$eZ%e&j'ie(j)�d6�Z*e&j'de&j+d�fde&j,fde&j+d�fde&j+d�fd	e&j,fd
e&j,fde&j,fde&j-fg�Z.eZ/e&j0r�eZ1eZ2e3j4j5Z6dFZ8neZ1eZ2e3j4j9Z6d
Z8dZ:dZ;dFZ<dFZ=dFZ>dFZ?eZ@eZAiZBdZCeZDeZEeZFeZGeZHeZIeZJeZKdFZLdFZMdFZNeZOdGZPe&j'�ZQeZReSZSeTZTeUZUeVZVeWZWeZXe&jYddHddIddJddK�eddFdFdFedFdFdFeZej[�ed��Z\d�Z]e&j^d��Z_e&j^d��Z`ead��Zbead ��Zcedd!��Zed"�Zfedd#��Zgd$�Zhd%�Zid&�Zjd'�ZkdFd(�Zld)�Zmd*�ZndFd+�Zod,�Zpd-�Zqd.�Zrd/�Zsd0�Ztd1�Zud2�Zvd3�Zwd4�Zxd5�Zyd6�Zzd7�Z{e&j^d8��Z|d9�Z}d:�Z~d;�Zd<�Z�d=�Z�dFd>�Z�dFd?�Z�dFd@�Z�dA�Z�dB�Z�dC�Z�dD�Z�dE�Z�RS(Ls!Default implementation of Dialectitisolation_leveltconvert_unicodetforcetpool_timeouttechotdebugt	echo_pooltpool_recyclet	pool_sizetmax_overflowtfuturetuse_encodingtdefaulti'tnameds1.3s�The :paramref:`_sa.create_engine.convert_unicode` parameter and corresponding dialect-level parameters are deprecated, and will be removed in a future release.  Modern DBAPIs support Python Unicode natively and this parameter is unnecessary.tempty_in_strategys1.4sThe :paramref:`_sa.create_engine.empty_in_strategy` keyword is deprecated, and no longer has any effect.  All IN expressions are now rendered using the "expanding parameter" strategy which renders a set of boundexpressions, or an "empty set" SELECT, at statement executiontime.tcase_sensitives�The :paramref:`_sa.create_engine.case_sensitive` parameter is deprecated and will be removed in a future release. Applications should work with result column names in a case sensitive fashion.tserver_side_cursorss�The :paramref:`_sa.create_engine.server_side_cursors` parameter is deprecated and will be removed in a future release.  Please use the :paramref:`_engine.Connection.execution_options.stream_results` parameter.sutf-8c
Ks�t|dt�s)tjd|j�n|rZ|jsNtjd|��qZt|_n||_	||_
t|_d|_||_|dk	r�||_n-|jdk	r�|jj|_n|j|_|dk	r�||_n|jdk|_|j|�|_|j|�|_|dk	r2||_n||_||_|jr\|j|_n|	|_|
|_|jdkr�tj|�|_n'|jdk	r�tj|j�|_nt j!|j
�|_"tj|j
�|_#dS(	Ntported_sqla_06s2The %s dialect is not yet ported to the 0.6 formats/Dialect %s does not support server side cursorstqmarktformattnumericR(R%R&R'($tgetattrtTrueR	twarntnametsupports_server_side_cursorsRt
ArgumentErrorR#RtencodingtFalset
positionaltNonet_ischematdbapit
paramstyletdefault_paramstyletimplicit_returningtpreparertidentifier_preparert
type_compilertsupports_native_booleanR"t#_user_defined_max_identifier_lengthtmax_identifier_lengthtlabel_lengthtcompiler_lintingtdescription_encodingRtto_unicode_processor_factoryt_description_decodertcodecst
getencodert_encodert_decoder(
tselfRR.R4R3R6R"R:R<R=R>R#tkwargs((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt__init__�sP3											cCs5t|t�s1tjdtt|�f��ndS(Ns�The argument passed to Dialect.has_table() should be a %s, got %s. Additionally, the Dialect.has_table() method is for internal dialect use only; please use ``inspect(some_engine).has_table(<tablename>>)`` for public API use.(t
isinstanceRRR-ttype(RFtarg((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_ensure_has_table_connectionSscCsT|jjjdd�}|dkrJtjd|j|jfdd�nt|�S(Ntsupports_statement_caches�Dialect %s:%s will not make use of SQL compilation caching as it does not set the 'supports_statement_cache' attribute to ``True``.  This can have significant performance implications including some performance degradations in comparison to prior SQLAlchemy versions.  Dialect maintainers should seek to set this attribute to True after appropriate development and testing for SQLAlchemy 1.4 caching support.   Alternatively, this attribute may be set to False which will disable this warning.tcodetcprf(	t	__class__t__dict__tgetR1R	R*R+tdrivertbool(RFtssc((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_supports_statement_cache`s	
cCs
tj�S(N(tweakreftWeakKeyDictionary(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_type_memostscCs|jd|jS(Nt+(R+RS(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdialect_descriptionxscCs|jS(s�True if this dialect supports sane rowcount even if RETURNING is
        in use.

        For dialects that don't support RETURNING, this is synonymous with
        ``supports_sane_rowcount``.

        (tsupports_sane_rowcount(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt supports_sane_rowcount_returning|s	cCst|dtj�S(Nt	poolclass(R(Rt	QueuePool(tclsturl((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytget_pool_class�scCs
|j|�S(N(Rb(RFRa((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytget_dialect_pool_class�scCsLdj|jjd�dd!�}yt|d�Wntk
rGnXdS(Nt.ii����s
.provision(tjoint
__module__tsplitt
__import__tImportError(R`tpackage((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytload_provisioning�s
"
cCs�y|j|�|_Wntk
r2d|_nXy|j|�|_Wntk
red|_nXy|j|j�|_Wntk
r�d|_nX|j	t
jjkr�t
jr�tjd��n|j|�|_	n|jdk	r|j|�rd|_|_n|js?|j|�}|r?||_q?n|jr||j|jkr|tjd|j|jf��ndS(Ns*RETURNS_UNKNOWN is unsupported in Python 3sQLabel length of %d is greater than this dialect's maximum identifier length of %d(t_get_server_version_infotserver_version_infotNotImplementedErrorR1t_get_default_schema_nametdefault_schema_nametget_default_isolation_levelt
connectiontdefault_isolation_leveltreturns_unicode_stringstsqltypestStringtRETURNS_UNKNOWNR	tpy3kRtInvalidRequestErrort_check_unicode_returnsR?t_check_unicode_descriptionRAR;t_check_max_identifier_lengthR<R=R-(RFRrtmax_ident_length((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
initialize�sB





			cCsdS(N(R1(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
on_connect�scCsdS(s�Perform a connection / server version specific check to determine
        the max_identifier_length.

        If the dialect's class level max_identifier_length should be used,
        can return None.

        .. versionadded:: 1.3.9

        N(R1(RFRr((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR|�s
cCs
|j|�S(s�Given a DBAPI connection, return its isolation level, or
        a default isolation level if one cannot be retrieved.

        May be overridden by subclasses in order to provide a
        "fallback" isolation level for databases that cannot reliably
        retrieve the actual isolation level.

        By default, calls the :meth:`_engine.Interfaces.get_isolation_level`
        method, propagating any exceptions raised.

        .. versionadded:: 1.3.22

        (tget_isolation_level(RFt
dbapi_conn((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRq�scstjr�jrtj�n	tj��jr@�j��ni�����fd��tjtj	d�t
jd��tjtj	d�t
jd��g}|r�||7}n�fd�|D�}|j
ttg�r�t
jjS|thkrt
jjSt
jjSdS(Ncs��tj|�jd���}y<�jj�}�j||��|j�}|j�Wn(tj	k
r�}t
jd|�tSXt
|dt
j�SdS(Ntdialects2Exception attempting to detect unicode returns: %ri(RtselecttcompileRrRt_cursor_executetfetchonetcloseRt
DBAPIErrorR	R*R/RIt	text_type(ttestt	statementRtrowtde(tcast_toRrt
parametersRF(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
check_unicode�s!s'test plain returns'i<s'test unicode returns'csh|]}�|��qS(((t.0R�(R�(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	<setcomp>s	(R	tpy2ktsupports_unicode_statementstbinary_typeR�R0texecute_sequence_formatRtcasttliteral_columnRutVARCHARtUnicodet
issupersetR)R/RvtRETURNS_CONDITIONALtRETURNS_UNICODEt
RETURNS_BYTES(RFRrtadditional_teststteststresults((R�R�RrR�RFsJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRz�s(		

cCs�tjr|jrtj}n	tj}|jj�}zY|j|tj	tj
d�jd��jd|���t
|jddtj�SWd|j�XdS(Ns'x't
some_labelR�i(R	R�R�R�R�RrRtexecuteRR�R�tlabelR�RItdescriptionR�(RFRrR�R((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR{$s	
cCstj||j�S(s)Provide a database-specific :class:`.TypeEngine` object, given
        the generic object which comes from the types module.

        This method looks for a dictionary called
        ``colspecs`` as a class or instance-level variable,
        and passes on to :func:`_types.adapt_type`.

        (Rut
adapt_typetcolspecs(RFttypeobj((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyttype_descriptor9s	cCs[|j||d|�stSx8|j||d|�D]}|d|kr5tSq5WtSdS(NtschemaR+(t	has_tableR/tget_indexesR)(RFRrt
table_namet
index_nameR�tidx((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt	has_indexDscCs8t|�|jkr4tjd||jf��ndS(Ns7Identifier '%s' exceeds maximum length of %d characters(tlenR<RtIdentifierError(RFtident((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytvalidate_identifierMscOs|jj||�S(N(R3tconnect(RFtcargstcparams((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�TscCs&|j�}|j|j�g|gS(N(ttranslate_connect_argstupdatetquery(RFRatopts((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytcreate_connect_argsXscsht�j�j��}|rdtj�fd�|D���tj|d���fd��}ndS(Nc3s|]}|�|fVqdS(N((R�R+(R�(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	<genexpr>dstengine_connectcs|s�j|��ndS(N(t_set_connection_characteristics(Rrtbranch(RRF(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytset_connection_characteristicsgs(tsettconnection_characteristicstintersectionR	t
immutabledictRtlistens_for(RFtengineR�tsupported_namesR�((RR�RFsJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytset_engine_execution_options^s	csTt|j�j��}|rPtj�fd�|D��}|j||�ndS(Nc3s|]}|�|fVqdS(N((R�R+(R�(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	<genexpr>ts(R�R�R�R	R�R�(RFRrR�R�R((R�sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt set_connection_execution_optionsns	c
Cs6g|j�D]"\}}||j||f^q
}|j�r�g|D]$\}}}|jrH||f^qH}|r�|jr�tjddjd�|D����q�tj	ddjd�|D���q�n|j
j}x*|D]"\}}	}|	j|||�q�W|j
j
jjtj|j|��dS(Ns�This connection has already initialized a SQLAlchemy Transaction() object via begin() or autobegin; %s may not be altered unless rollback() or commit() is called first.s, css|]\}}|VqdS(N((R�R+tobj((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	<genexpr>�ss�Connection is already established with a Transaction; setting %s may implicitly rollback or commit the existing transaction, or have no effect until next transactioncss|]\}}|VqdS(N((R�R+R�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	<genexpr>�s(titemsR�tin_transactiont
transactionalt
_is_futureRRyReR	R*Rrtdbapi_connectiontset_characteristict_connection_recordtfinalize_callbacktappendt	functoolstpartialt_reset_characteristics(
RFRrRR+tvaluetcharacteristic_valuesR�t
trans_objsR�tcharacteristic((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�xs&2	 !cCs2x+|D]#}|j|}|j||�qWdS(N(R�treset_characteristic(RFRR�tcharacteristic_nameR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR��s
cCsdS(N((RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdo_begin�scCs|j�dS(N(trollback(RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdo_rollback�scCs|j�dS(N(tcommit(RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt	do_commit�scCs|j|�dS(N(tdo_close(RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdo_terminate�scCs|j�dS(N(R�(RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR��scCsttjd�jd|��S(NiR�(tstrRR�R�(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_dialect_specific_select_one�scCsxd}y2|j�}z|j|j�Wd|j�XWn5|jjk
ro}|j|||�ritS�nXt	SdS(N(
R1RR�R�R�R3tErrort
is_disconnectR/R)(RFR�Rterr((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdo_ping�scCsdtjdd�S(s�Create a random two-phase transaction ID.

        This id will be passed to do_begin_twophase(), do_rollback_twophase(),
        do_commit_twophase().  Its format is unspecified.
        s	_sa_%032xiii�l	(trandomtrandint(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
create_xid�scCs|jtj|��dS(N(R�RtSavepointClause(RFRrR+((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdo_savepoint�scCs|jtj|��dS(N(R�RtRollbackToSavepointClause(RFRrR+((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdo_rollback_to_savepoint�scCs|jtj|��dS(N(R�RtReleaseSavepointClause(RFRrR+((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdo_release_savepoint�scCs|j||�dS(N(texecutemany(RFRR�R�tcontext((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdo_executemany�scCs|j||�dS(N(R�(RFRR�R�R�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
do_execute�scCs|j|�dS(N(R�(RFRR�R�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdo_execute_no_params�scCstS(N(R/(RFteRrR((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR��scCs|j||j�dS(N(tset_isolation_levelRs(RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytreset_isolation_level�scCs�|dkrdStjr@t|t�r@|j|j�}q@n|j�}|j�}||krh|S||kr�|j	j
|�r�|S||kr�t|dt�S|SdS(Ntquote(
R1R	R�RIR�tdecodeR.tlowertupperR8t_requires_quotesRR)(RFR+t
name_lowert
name_upper((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytnormalize_name�s 		
cCs�|dkrdS|j�}|j�}||kr8|S||kr`|jj|�r`|}ntjr�|js�|j|j	�}q�t
|�}n|S(N(R1R�R�R8R�R	R�tsupports_unicode_bindstencodeR.tunicode(RFR+R�R((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytdenormalize_names	
			cCs|S(N((RFRr((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytget_driver_connection!sN((s1.3s�The :paramref:`_sa.create_engine.convert_unicode` parameter and corresponding dialect-level parameters are deprecated, and will be removed in a future release.  Modern DBAPIs support Python Unicode natively and this parameter is unnecessary.(s1.4sThe :paramref:`_sa.create_engine.empty_in_strategy` keyword is deprecated, and no longer has any effect.  All IN expressions are now rendered using the "expanding parameter" strategy which renders a set of boundexpressions, or an "empty set" SELECT, at statement executiontime.(s1.4s�The :paramref:`_sa.create_engine.case_sensitive` parameter is deprecated and will be removed in a future release. Applications should work with result column names in a case sensitive fashion.(s1.4s�The :paramref:`_sa.create_engine.server_side_cursors` parameter is deprecated and will be removed in a future release.  Please use the :paramref:`_engine.Connection.execution_options.stream_results` parameter.(�t__name__Rft__doc__R
tSQLCompilertstatement_compilertDDLCompilertddl_compilertGenericTypeCompilerR9tIdentifierPreparerR7R)tsupports_alterR/tsupports_commentstinline_commentstuse_setinputsizesRMtdefault_sequence_basettupleR�tsupports_schemastsupports_viewstsupports_sequencestsequences_optionalt"preexecute_autoincrement_sequencestsupports_identity_columnstpostfetch_lastrowidR6tfull_returningtinsert_executemany_returningtcte_follows_inserttsupports_native_enumR:t#non_native_boolean_check_constrainttsupports_simple_order_by_labelttuple_in_valuesR	R�RtIsolationLevelCharacteristicR�tbool_or_strtasinttasbooltengine_config_typestsupports_native_decimalRxR�RRuRvR�RtR1R?RwR+R<R;Rtmax_index_name_lengthtmax_constraint_name_lengthR\tsupports_sane_multi_rowcountR�R5tsupports_default_valuestsupports_default_metavaluetsupports_empty_inserttsupports_multivalues_inserttsupports_is_distinct_fromR,R#tsupports_for_update_ofRmRptconstruct_argumentstrequires_name_normalizetreflection_optionstdbapi_exception_translation_maptis_asyncR
RRRRt
has_terminatetdeprecated_paramstintt
NO_LINTINGRHRLtmemoized_propertyRVRYtpropertyR[R]tclassmethodRbRcRkR~RR|RqRzR{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(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR3s						*			8	
		3			;								
	(																t_RendersLiteralcBseZd�ZRS(cCs
d�}|S(NcSsd|S(Ns'%s'((R�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytprocess's((RFR�R?((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytliteral_processor&s	(RRfR@(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR>%st_StrDateTimecBseZRS((RRf(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRA-st_StrDatecBseZRS((RRf(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRB1st_StrTimecBseZRS((RRf(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRC5stStrCompileDialectcBs�eZejZejZejZej	Z
eZeZ
eZeZeZeZeZeZeZieej6eej6eej6ZRS((RRfR
tStrSQLCompilerR
RRtStrSQLTypeCompilerR9RR7R)RMRRRR/RR6R:R/R!RARutDateTimeRBtDateRCtTimeR�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRD9s"				

tDefaultExecutionContextcBs�eZeZeZeZeZeZeZeZ	d,Zd,Zd,Z
d,Zej�Zd,Zd,ZejZd,Zd,ZeZeZeZeZeZd,Zej�Ze Z!e"d��Z#e"e$d��Z%e"d��Z&e"d��Z'd�Z(ej)d��Z*ej)d��Z+ej)d��Z,ej)d��Z-ej)d	��Z.ej)d
��Z/ej)d��Z0d,d�Z1e2d
��Z3d�Z4d�Z5d�Z6d�Z7d�Z8d�Z9d�Z:d�Z;d�Z<d�Z=d�Z>e2d��Z?d�Z@d�ZAd�ZBd�ZCd�ZDej)d��ZEd �ZFd!�ZGd"�ZHd#�ZId$�ZJd%�ZKd&�ZLd,ZMeNd'�ZOd(�ZPd)�ZQd*�ZRd+�ZSRS(-c
Cs8|j|�}||_||_|j|_||_}t|_||_|jpg|jj	dt
�|_tj
|�|_|jr�|jj	di�}|jj}	|	|j|�|_n|js�|j|j�d|_n|j|_|j�|_g|_|jr(|j�g|_nig|_|S(s8Initialize execution context for a DDLElement construct.t
future_resulttschema_translate_mapi(t__new__troot_connectiont_dbapi_connectionR�tcompiledR)tisddltexecution_optionsR�RRR/t_is_future_resultR	R�tunicode_statementRLR7t_render_schema_translatesR�RDR�t
create_cursorRtcompiled_parametersR0R�R�(
R`R�RrR�RRtcompiled_ddlRFRPRLtrst((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt	_init_ddl{s2		
								c

s�|j|�}
||
_||
_|j|
_||
_||
_||
_|	|
_||
_|j	pu|
jj
dt�|
_|j
|j|j|j|jf|
_|j|
_|j|
_|j|
_|j|
_|
js�|
js�|
jr-t|
_t|jj�|
_t|jo!|jj�|
_n|sT|j d|dt�g|
_!nXgt"|�D]-\}}|j |dtd|d|�^qa|
_!t#|�dk|
_$t%j&r�t%j'|j(�|
_)n|j(|
_)|
j*�|
_+|
jj,s|
jj-r#|
j$r|
j.�q#|
j/�n|j0�|j1s>|j2r�|
j$rYt3j4d��n|j5|
j!d�}
|
j|
_)|
j6|
_7t8����j9|
j:�|
j;}n|j<r�|
jj;}n|j=r	|
jj
di�}|j>j?}||
j)|�|
_)n|j@s0|
j)jA|
jjB�|
_n|
j)|
_g}|j<r�x8|
j!D]Y�g|D]0}|�kr��|�|�n�|^qb}|jC|jD|��qUWn�|j@}|r�|jE�nx�|
j!D]��|jF�|r7�r����fd	��D�}qu���fd
��D�}n>�r\���fd��D�}n��fd��D�}|jC|�q�W|jD|�|
_G|
S(
s6Initialize execution context for a Compiled construct.RKtextracted_parameterstescape_namest
_group_numberisL'literal_execute' or 'expanding' parameters can't be used with executemany()iRLcsSi|]I}|�kr,�|�|�n�|��j||��d�qS(i(RR(R�tkey(tcompiled_paramstencodertescaped_bind_namesR(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys
<dictcomp>Fs	csGi|]=}|�kr,�|�|�n�|�|�d�qS(i((R�R^(R_R`R(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys
<dictcomp>Os	csIi|]?}|�kr,�|�|�n�|�j||��qS((RR(R�R^(R_RaR(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys
<dictcomp>Ys	cs=i|]3}|�kr,�|�|�n�||�qS(((R�R^(R_R(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys
<dictcomp>bs	(HRMRNROR�R[tinvoked_statementRPt	cache_hitRRR�RRR/RSt_result_columnst_ordered_columnst_textual_ordered_columnst_ad_hoc_textualt_loose_column_name_matchingtresult_column_structtisinserttisupdatetisdeletetisplaintexttis_textR)tis_crudRTR�t
_returningt_is_explicit_returningt	returningt_is_implicit_returningtconstruct_paramsRWt	enumerateR�R�R	R�R�tstringRTRVRtinsert_prefetchtupdate_prefetcht_process_executemany_defaultst_process_executesingle_defaultst_bind_processorstliteral_execute_paramstpost_compile_paramsRRyt#_process_parameters_for_postcompiletparameter_expansiont_expanded_parameterstdictR�RtpositiontupR0RLR7RUR�RR.R�R�RDRaR�(R`R�RrR�RRRPR�RbR[RcRFtgrptmtexpanded_stateR�RLRYR^tparamR((R_R`RaRsJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_init_compiled�s�										@		

								:
	



c	s�|j|�}||_||_|j|_t|_||_|jpZ|jjdt	�|_
|s�|jjr��j�g|_
q@ig|_
n�t|d�j�r�||_
n�t|dt�r�jr�||_
q@g|D]���fd��D�^q�pig|_
n%g|D]}�j|�^q"|_
t|�dk|_�jr�t|tj�r�||_�j|�d|_n||_|_|j�|_|S(s8Initialize execution context for a string SQL statement.RKics*i|] }�|�j|�d�qS(i(RD(R�tk(tdR�(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys
<dictcomp>�s	i(RMRNROR�R)RnRRR�RRR/RSR0R�R�RIR�R�R�R�R	R�RTRDR�RVR(	R`R�RrR�RRR�R�RFtp((R�R�sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_init_statementns:						)%
	cCsj|j|�}||_||_|j|_||_|jpQ|jjdt�|_|j	�|_
|S(s;Initialize execution context for a ColumnDefault construct.RK(RMRNROR�RRR�RRR/RSRVR(R`R�RrR�RRRF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
_init_default�s				cCs�|jdkrdStj�}|j}|tkrId||jjfS|tkrjd||jjfS|tkr�d||jjfS|t	kr�d||jjfS|t
kr�d|jj|jj
||jjfSdSdS(Nsraw sqlsno key %.5fsscached since %.4gs agosgenerated in %.5fsscaching disabled %.5fss,dialect %s+%s does not support caching %.5fstunknown(RPR1R	tperf_counterRcRt	_gen_timeR
RRRR�R+RS(RFtnowtch((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_get_cache_stats�s$			cCsJ|jr|jjSd|jkr<|jjj|jd�S|jjSdS(NRL(RPR7RRR�R8t_with_schema_translate(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR8�s	
cCs
|jjS(N(RNR�(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR��scCs
|jjS(N(RPt	postfetch(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytpostfetch_cols�scCs.|jr|jjS|jr&|jjSdSdS(N((RjRPRwRkRx(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
prefetch_cols�s
	
	
cCs|jjdS(N(RPRr(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytreturning_cols�scCs|jjdt�S(Nt
no_parameters(RRRRR/(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR��scCsX|jjd|jr(|jr(tjp+t�}|tjkrP|j|j�S|SdS(Nt
autocommit(	RRRRRPR�RtPARSE_AUTOCOMMITR/tshould_autocommit_textRT(RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytshould_autocommit�s	
			c	Cs%|j}t|tj�rA|jjrA|jj|�d}nd|jkr�|jjdi�}|j	j
}|||�}n|s�|jjr�|jj�}q�i}n|j
|j||d|�|jj�d}|dk	r!|j|j|jjdd�}|r!||�Sn|S(sExecute a string statement on the current cursor, returning a
        scalar result.

        Used to fire off sequences, default phrases, and "select lastrowid"
        types of statements individually or in the context of a parent INSERT
        or UPDATE statement.

        iRLR�iN(RNRIR	R�R�R�RDRRRRR8RUR0R�R�RR�R1t_cached_result_processorR�(	RFtstmtttype_R�tconnRLRYtrtproc((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_execute_scalar	s*
	
		
cCs$|j}|jr|S|j�SdS(N(RNR�t_branch(RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRr3s		cCs
tj|�S(N(tAUTOCOMMIT_REGEXPtmatch(RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�;scCs�|jjstS|jjr�|jjdt�o�|jrRt|jj	t
j�p�|jstt|jj	t
j�o�|j
o�tj|j
�}n|jjdt�}|S(Ntstream_results(R�R,R/R#RRRRR)RPRIR�Rt
Selectablet
TextClauseRTtSERVER_SIDE_CURSOR_RER�(RFtuse_server_side((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_use_server_side_cursor>s 		
		cCsc|jjrL|jjdt�s9|jjrL|j�rLt|_|j	�St|_|j
�SdS(NR�(R�R,RRRRR/R#R�R)t_is_server_sidetcreate_server_side_cursortcreate_default_cursor(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRV_s	
	cCs
|jj�S(N(ROR(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�qscCs
t��dS(N(Rn(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�tscCsdS(N((RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytpre_execwscCstd��dS(Ns,This dialect does not support OUT parameters(Rn(RFtnames((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytget_out_parameter_valueszscCsdS(N((RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt	post_execscCs|j|j|�S(s�Return a 'result processor' for a given type as present in
        cursor.description.

        This has a default implementation that dialects can override
        for context-sensitive result type handling.

        (R�R�(RFR�tcolnametcoltype((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytget_result_processor�scCs
|jjS(s
return self.cursor.lastrowid, or equivalent, after an INSERT.

        This may involve calling special cursor functions, issuing a new SELECT
        on the cursor (or a new one), or returning a stored value that was
        calculated within post_exec().

        This function will only be called for dialects which support "implicit"
        primary key generation, keep preexecute_autoincrement_sequences set to
        False, and when no explicit id value was bound to the statement.

        The function is called once for an INSERT statement that would need to
        return the last inserted primary key for those dialects that make use
        of the lastrowid concept.  In these cases, it is called directly after
        :meth:`.ExecutionContext.post_exec`.

        (Rt	lastrowid(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
get_lastrowid�scCsdS(N((RFR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pythandle_dbapi_exception�scCs
|jjS(N(Rtrowcount(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR��scCs
|jjS(N(R�R\(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR\�scCs
|jjS(N(R�R+(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR+�scCsr|j}|js|jr4|j�}t}}n�|jdd�}|jp^|jdt�}|j}|r�|t	j
kr�t	j|j|j�}n|j
p�|jj}|dkr�t	j}n|jr|jjr�tjd��nt	j|||�}nt	j|||�}|jrJ|jrJ|jjrJ|j|�n|j|_|rn|j|�}n|S(Nt	yield_perR�s3can't use future_result=True with close_with_result(RRRoRnt_setup_dml_or_text_resultR/RRR1R�tcursor_fetch_strategyt_cursort_DEFAULT_FETCHtBufferedRowCursorFetchStrategyRtalternate_cursor_descriptionR�t_NO_CURSOR_DQLRSRNtshould_close_with_resultRRytCursorResulttLegacyCursorResultRPRQthas_out_parameterst_setup_out_parameterst_soft_closedR�(RFtexec_opttresulttyptsrtstrategytcursor_description((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_setup_result_proxy�s<	
				
cCsg|jjj�D]!\}}|jr||f^q}i}x�tg|D]\}}|^qM|jg|D]\}}|^qo��D]y\}}|j}|j|j�}	|	j	|jj
�}
|	j|j|
�}|dk	r�||�}n|||j
<q�W||_dS(N(RPt
bind_namesR�t
isoutparamtzipR�RJtdialect_implR�tget_dbapi_typeR3tresult_processorR1R^tout_parameters(RFR�R�R+tout_bindparamsR�t	bindparamt	raw_valueR�t	impl_typet
dbapi_typeR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR��s"/	cCs�|jr*|jjr*|j�|_q*n|j}|jrf|tjkrftj	|j
|j�}n|jpx|j
j
}|dkr�tj}n|jr�tj|||�}ntj|||�}|jr=|jr$|j�}||_|j||�|_|jjst�|j�q�|js�|j�q�ni|jr�|jr�|j�}|g|_|j�|jjs�t�n |jjs�|j|j�n|S(N(RjRPRt_setup_ins_pk_from_lastrowidtinserted_primary_key_rowsR�R�R�R�R�RRRR�R�R1t_NO_CURSOR_DMLRSR�R�Rstalltreturned_default_rowst%_setup_ins_pk_from_implicit_returningt	_metadatatreturns_rowstAssertionErrort_soft_closeRqRkR�R�(RFR�R�R�trowsR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR��s@						
	

cCs
|j�S(N(t_setup_ins_pk_from_empty(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�>scCs/|jj}|j�}|||jd�gS(Ni(RPt+_inserted_primary_key_from_lastrowid_getterR�RW(RFtgetterR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�EscCs/|jj}g|jD]}|d|�^qS(N(RPR�RWR1(RFR�R�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�KscCsN|s
gS|jj}|j}gt||�D]\}}|||�^q/S(N(RPt+_inserted_primary_key_from_returning_getterRWR�(RFR�R�R�R_R�R�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�Os
	cCs"|js|jo!t|jj�S(N(RjRkRTRPR�(RF((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytlastrow_has_defaults[scs�|js|jrdS|jjd|jd|j�}|dkrGdS|jjr�t	|�}|jj
j||j|j
|j|�nt|jj���r�|jj�n|jjr�g|jjD]}||jj|f^q�}n1g|jjj�D]\�}|�f^q}g}x'|D]\}��|jjkrQq-n||jkr�jjr�t�jj��|��|j�����fd�t|j|�D��qL|j�d��|j����fd�|j|D��q-|j�d���r-�j||�n|}|j|��jf�q-Wy|jj |j||�Wn/t!k
r�}|j"j#|ddd|�nXdS(s:Given a cursor and ClauseParameters, call the appropriate
        style of ``setinputsizes()`` on the cursor, using DB-API types
        from the bind parameter's ``TypeEngine`` objects.

        This method only called by those dialects which require it,
        currently cx_oracle, asyncpg and pg8000.

        Nt
include_typest
exclude_typesc3sR|]H\}}�r'�j||�n|�|��jj|�fVqdS(N(RRRJR(R�R�t	paramname(R�tdbtypesRathas_escaped_namestnum(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	<genexpr>�s	c3s9|]/}�r!�j||�n|��jfVqdS(N(RRRJ(R�R�(R�tdbtypeRaR�(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	<genexpr>�s	($RQRnRPt_get_set_input_sizes_lookuptinclude_set_input_sizestexclude_set_input_sizesR1R�t_has_eventsR�tdispatchtdo_setinputsizesRR�R�RTRaR0R�tbindsR�R�R|R�RJt_is_tuple_typeR�RtextendRuRRR�tdo_set_input_sizest
BaseExceptionRNt_handle_dbapi_exception(RFt
inputsizesR^R�tgeneric_inputsizestescaped_nameR�((R�R�R�RaR�R�sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt_set_input_sizes`s\		/.
				cCs_|jr|j||�S|jr8||_|j|�S|jrT|j|||�S|jSdS(N(tis_sequencet
fire_sequencetis_callabletcurrent_columnRKtis_clause_elementt_exec_default_clause_element(RFtcolumnRR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt
_exec_default�s			
	c	s�|js!tj|j|�}n	|j}tj|�jd|j�}|j��|j�|j	r�|j
}|jjg|D]0}|�kr��|�|�n�|^q�}nt��fd��D��}|j
tj|�|d|�S(NR�c3s?|]5}||�kr,�|�|�n�|fVqdS(N((R�R^(R_R(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	<genexpr>�sR�(t
_arg_is_typedRttype_coerceRKR�R�R�RtR{R0R�R�R�R�R	R�(	RFR	RR�tdefault_argRPR�R^R�((R_RsJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyR�s 						@
cs�y|j�|j}Wn tk
r8tjd��nX|jj}|r�|jr�|jr�|j	r�|j
d�i�|j|jj6}ni�|j|j6}d�|j
j�}|j��fd�|D��|S�SdS(siReturn a dictionary of parameters applied to the current row.

        This method can only be used in the context of a user-defined default
        generation function, e.g. as described at
        :ref:`context_default_functions`. When invoked, a dictionary is
        returned which includes entries for each column/value pair that is part
        of the INSERT or UPDATE statement. The keys of the dictionary will be
        the key value of each :class:`_schema.Column`,
        which is usually synonymous
        with the name.

        :param isolate_multiinsert_groups=True: indicates that multi-valued
         INSERT constructs created using :meth:`_expression.Insert.values`
         should be
         handled by returning only the subset of parameters that are local
         to the current column default invocation.   When ``False``, the
         raw parameters of the statement are returned including the
         naming convention used in the case of multi-valued INSERT.

        .. versionadded:: 1.2  added
           :meth:`.DefaultExecutionContext.get_current_parameters`
           which provides more functionality over the existing
           :attr:`.DefaultExecutionContext.current_parameters`
           attribute.

        .. seealso::

            :attr:`.DefaultExecutionContext.current_parameters`

            :ref:`context_default_functions`

        sdget_current_parameters() can only be invoked in the context of a Python side column default functioniic3s)|]}|�d|�ffVqdS(s%s_m%dN((R�R^(tindexR�(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pys	<genexpr>FsN(tcurrent_parametersRtAttributeErrorRRyRPt
compile_stateRjt_has_multi_parameterst_is_multiparam_columnRR^toriginalt_dict_parameterstkeysR�(RFtisolate_multiinsert_groupsR	RR�R((RR�sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytget_current_parameterss(!	


			
cCs0|jdkrdS|j||j|j�SdS(N(RR1R
RJ(RFR	((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytget_insert_defaultLscCs0|jdkrdS|j||j|j�SdS(N(tonupdateR1R
RJ(RFR	((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pytget_update_defaultRscCs�|jj}i}|jj}|jj}xC|D];}|jr1|jjr1|jjr1|jj||<q1q1Wx6|D].}|jrw|jjrw|jj||<qwqwWx�|j	D]�}||_
xU|D]M}||kr�||}n|j|�}|dk	r�||||�<q�q�WxU|D]M}||kr@||}n|j
|�}|dk	r!||||�<q!q!Wq�W|`
dS(N(RPt_within_exec_param_key_getterRwRxRRt	is_scalarRKRRWRRR1R(RFt
key_gettertscalar_defaultsRwRxtcR�tval((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRyXs2
"
	



cCs�|jj}|jd|_}xs|jjD]e}|jrd|jjrd|jjrd|jj}n|j	|�}|dk	r-||||�<q-q-WxB|jjD]4}|j|�}|dk	r�||||�<q�q�W|`dS(Ni(
RPRRWRRwRRRRKRR1RxR(RFRRWR R!((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRz~s"N(TRRfR/RjRkRlRoRnRQR�R1RPR�RiR�R	R�RRR�R�R�R�R�tcache_statsRbRsRqRSR�R�t_translate_colnameR�RRcR=RZRR�R�R�R�R;R8R�R�R�R�R�R�R�R<RrR�R�RVR�R�R�R�R�R�R�R�R�R\R+R�R�R�R�R�R�R�R�RR
RRR)RRRRyRz(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyRJUs�	4�:		*		!							
					0		F					c		'>			&(2RRBR�R�treRWtRRR�RtbaseRRRRRRRuR	tsqlR
Rtsql.elementsRR�tItUNICODER�R�tsymbolR
RRRRtDialectRtobjectR>RGRARHRBRIRCRDtExecutionContextRJtexecution_ctx_cls(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/engine/default.pyt<module>sP�������D