Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
contego / home / tvault / .virtenv / lib / python2.7 / site-packages / sqlalchemy / orm / persistence.pyc
Size: Mime:
ó
‹EYc@sZdZddlZddlmZmZddlmZmZmZ	ddlm
Z
mZmZm
Z
ddlmZmZmZdd	lmZdd
lmZddlmZd„Zd
„Zed„Zd„Zd„Zd„Zd„Zd„Zeed„Zed„Z d„Z!d„Z"e#d„Z$e#d„Z%d„Z&d„Z'd„Z(ed„Z)d„Z*d„Z+d „Z,d!e-fd"„ƒYZ.d#e.fd$„ƒYZ/d%e.fd&„ƒYZ0d'e.fd(„ƒYZ1d)e.fd*„ƒYZ2d+e/e1fd,„ƒYZ3d-e/e2fd.„ƒYZ4d/e0e1fd0„ƒYZ5d1e0e2fd2„ƒYZ6dS(3sçprivate module containing functions used to emit INSERT, UPDATE
and DELETE statements on behalf of a :class:`.Mapper` and its descending
mappers.

The functions here are called only by the unit of work functions
in unitofwork.py.

iÿÿÿÿN(tgroupbytchaini(tsqltutiltexci(t
attributestsyncRt	evaluator(t	state_strt_attr_as_keyt_entity_descriptor(t
expression(t
_from_objects(tloadingc
s͈j}t|ƒ}|jjr0tdƒ‚n|rŸ|r€g|D]}||jf^qC}g|D]\}}	|	^qe}q«g|D]}|j^q‡}nt|ƒ}|j|ƒ‰x’|jj	ƒD]\}
}ˆj
|ƒsëqÊn‡‡fd†t|
‡‡fd†|Dƒdtd|ƒDƒ}t
|d|||
|d|ƒqÊW|rÉ|rɈj}
gˆjD]}|j^qn}xC|D]8\}}	|
tg|D]}|	|^q£ƒf|_qŠWndS(NsJconnection_callable / per-instance sharding not supported in bulk_insert()c		3sE|];\}}}}}}}}d||ˆˆ|||fVqdS(N(tNone(	t.0tstatet
state_dicttparamstmptconntvalue_paramsthas_all_pksthas_all_defaults(t
connectiontmapper(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>5s	c3s!|]}d|ˆˆfVqdS(N(R(Rtmapping(RR(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>;stbulktreturn_defaultstbookkeeping(tbase_mappert_cached_connection_dicttsessiontconnection_callabletNotImplementedErrortdicttlistRt_sorted_tablestitemstisat_collect_insert_commandstTruet_emit_insert_statementsRt_identity_classt_identity_key_propstkeyttuple(Rtmappingstsession_transactiontisstatesRRtcached_connectionsRtstatestdict_ttabletsuper_mappertrecordstidentity_clstptidentity_propsR-((RRsO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt_bulk_inserts<	""
		c
s`ˆj}t|ƒ}ˆj‰ˆjrHtˆjjgƒjˆƒ‰n‡fd†}|r§|rˆg|D]}|ˆ|ƒ^qj}q³g|D]}|j^q}nt|ƒ}|j	j
rÎtdƒ‚n|j|ƒ‰x||j
jƒD]k\}	}
ˆj|
ƒsqíntd|	‡‡fd†|Dƒdtƒ}t|d||
|	|dtƒqíWdS(Ncs&t‡‡fd†ˆjjƒDƒƒS(Nc3s<|]2\}}|ˆjks*|ˆkr||fVqdS(N(tcommitted_state(Rtktv(tsearch_keysR(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>[s(R#R&(RR(R?(RsO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt
_changed_dictYssJconnection_callable / per-instance sharding not supported in bulk_update()c3s=|]3}d|ˆˆˆjr.|ˆjjndfVqdS(N(Rt_version_id_propR-(RR(RR(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>tsRR(RRt_primary_key_propkeysRAtsetR-tunionR#R$R R!R"RR%R&R't_collect_update_commandsRR)t_emit_update_statementstFalse(RR/R0R1tupdate_changed_onlyRR2R@RR5R6R7((RRR?sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt_bulk_updateOs4			!%	
		c	CsŒ|rE|jrEx-t|ƒD]}t||g|dtƒqWdSg}g}t|ƒ}xst|||ƒD]_\}}}	}
}}}
|s—|r¶|j|||	|
|
fƒqp|j|||	|
fƒqpWx…|jjƒD]t\}}	||	j	krqãnt
||ƒ}t|||ƒ}t||||	||ƒt
||||	||ƒqãWt||td„|Dƒd„|DƒƒƒdS(s;Issue ``INSERT`` and/or ``UPDATE`` statements for a list
    of objects.

    This is called within the context of a UOWTransaction during a
    flush operation, given a list of states to be flushed.  The
    base mapper in an inheritance hierarchy handles the inserts/
    updates for all descendant mappers.

    tsingleNcss0|]&\}}}}||||tfVqdS(N(RG(RRRRR((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>¸scss3|])\}}}}}||||tfVqdS(N(R)(RRRRRtupdate_version_id((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>¼s(tbatcht_sort_statestsave_objR)Rt_organize_states_for_savetappendR%R&t
_pks_by_tableR(RERFR*t _finalize_insert_update_commandsR(RR3tuowtransactionRJRtstates_to_updatetstates_to_insertR2R4RRthas_identityt
row_switchRKR5tinserttupdate((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRN€sD
(	
	cs¤t|ƒ}tt|||ƒƒ}xy|jjƒD]h\‰}ˆ|jkrUq4n‡fd†|Dƒ}t||ˆ||ƒ}t||||ˆ|ƒq4WdS(s\Issue UPDATE statements on behalf of a relationship() which
    specifies post_update.

    c3s<|]2\}}}}ˆ|jkr||||fVqdS(N(RQ(RRRt
sub_mapperR(R5(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>ÔsN(RR$t _organize_states_for_post_updateR%R&RQt_collect_post_update_commandst_emit_post_update_statements(RR3RStpost_update_colsR2RTRRY((R5sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pytpost_updateÄs
			c
Cs×t|ƒ}tt|||ƒƒ}|j}xmtt|jƒƒƒD]S}||}||jkrkqFnt||||ƒ}t||||||ƒqFWx3|D]+\}	}
}}}|j	j
|||	ƒq¤WdS(s‘Issue ``DELETE`` statements for a list of objects.

    This is called within the context of a UOWTransaction during a
    flush operation.

    N(RR$t_organize_states_for_deleteR%treversedtkeysRQt_collect_delete_commandst_emit_delete_statementstdispatchtafter_delete(
RR3RSR2tstates_to_deletettable_to_mapperR5RtdeleteRRRRK((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt
delete_objãs"	
		c
csÇxÀt|||ƒD]¬\}}}}t|jƒ}|jpI|j|ƒ}d}	}
|su|jj|||ƒn|jj|||ƒ|jrª|j|||ƒn|rT||j	j
krT|j	j
|}tj|ƒ}|j
|ƒstjdt|ƒ|t|ƒfƒ‚n|jd|t|ƒt|ƒƒ|j|ƒ|}	n|s`|	r¥|jdk	r¥|j|	r|	n||	r“|	jn||jƒ}
n||||||	|
fVqWdS(sTMake an initial pass across a set of states for INSERT or
    UPDATE.

    This includes splitting out into distinct lists for
    each, calling before_insert/before_update, obtaining
    key information for each state including its dictionary,
    mapper, the connection to use for the execution per state,
    and the identity flag.

    sJNew instance %s with identity key %s conflicts with persistent instance %ssPdetected row switch for identity %s.  will update %s, remove %s from transactionN(t_connections_for_statestboolR-t_identity_key_from_stateRRet
before_insertt
before_updatet_validate_polymorphic_identityR tidentity_mapRtinstance_statet
is_deletedtorm_exct
FlushErrorRt
_log_debugtremove_state_actionstversion_id_colt#_get_committed_state_attr_by_columnR#(
RR3RSRR4RRRVtinstance_keyRWRKtinstancetexisting((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyROsB
	
	cCst|||ƒS(s÷Make an initial pass across a set of states for UPDATE
    corresponding to post_update.

    This includes obtaining key information for each state
    including its dictionary, mapper, the connection to use for
    the execution per state.

    (Rk(RR3RS((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR[Gs
ccs‡x€t|||ƒD]l\}}}}|jj|||ƒ|jdk	re|j|||jƒ}nd}|||||fVqWdS(sôMake an initial pass across a set of states for DELETE.

    This includes calling out before_delete and obtaining
    key information for each state including its dictionary,
    mapper, the connection to use for the execution per state.

    N(RkRet
before_deleteRxRRy(RR3RSRR4RRRK((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR`TsccsÐxÉ|D]Á\}}}}||jkr.qni}i}	|j|}
xyt|
ƒj|ƒD]b}||}|
|}
|dkr‰q]q]|r²t|tjƒr²||	|
j<q]|||
j<q]W|sx4|j	|j
|ƒj
|	ƒD]}d||<qéWn|s
|rQ|j|j|ƒ}|j
jrH|j|j|ƒ}q[t}n
t}}|jtk	r«|jdk	r«|j|j|kr«|jdƒ||jj<n||||||	||fVqWdS(sSIdentify sets of values to use in INSERT statements for a
    list of states.

    N(RQt_propkey_to_colRCtintersectionRt
isinstanceRt
ClauseElementR-t_insert_cols_as_nonet
differencet_pk_keys_by_tabletissubsetRteager_defaultst_server_default_colsR)tversion_id_generatorRGRxt_cols_by_table(R5RURRRRRRRRtpropkey_to_coltpropkeytvaluetcoltcolkeyRR((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR(ns@




	
	c#sÜxÕ|D]Í\}‰}}}||jkr1qn|j|}i}	|j|‰|ržt‡‡fd†tˆƒjˆƒj|j|ƒDƒƒ}
t}nÀi}
xŒtˆƒj|jƒD]r}ˆ|}
ˆ|}t	|
t
jƒrö|
|	|<q½|j|j
j|
|j|ƒtk	r½|
|
|j<q½q½W|jjrX|j|j|
ƒ}nt}|dk	rB|j|j|krB|ræ|
p|	ræxO|jjƒD]8}|j|jj
j|ˆtjƒ}|jr¤Pq¤q¤Wqn|j}||
|j<|s|j|
krT|jtk	rT|j|ƒ}||
|j<qTn|
pK|	sTqn|r’t‡‡fd†tˆƒj|j |ƒDƒƒ}ni}x|D]û}|j|j}|j|j
j|ˆtj!ƒ}|jrW|j"sd||f|jkr,|jd||j<|
j#|jdƒqk|j"d||j<|jd|
|j<n|j$d||j<||jdkrŸt%j&d||fƒ‚qŸqŸW|
sª|	r|
j'|ƒ|ˆ|
|||	|fVqqWdS(stIdentify sets of values to use in UPDATE statements for a
    list of states.

    This function works intricately with the history system
    to determine exactly what values should be updated
    as well as how the row should be matched within an UPDATE
    statement.  Includes some tricky scenarios where the primary
    key of an object might have been changed.

    c3s&|]}ˆ|jˆ|fVqdS(N(R-(RR‹(RŠR(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>Àsc3s+|]!}ˆ|jˆj|ƒfVqdS(N(t_labeltget(RR‹(RŠR(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>ûstpk_cascadedisCCan't update table %s using NULL for primary key value on column %sN((RQR~R#RCRRƒR„R)R<R€RRtmanagertimpltis_equalR-RR†t_server_onupdate_default_colsR…RRxR‰t_columntopropertytvaluestget_historyRtPASSIVE_NO_INITIALIZEtaddedRRˆRGt_pk_attr_keys_by_tabletPASSIVE_OFFtdeletedtpopt	unchangedRtRuRY(RSR5RTRRRRRKtpksRRRR‹RŒRtpropthistorytvalt	pk_params((RŠRsO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRE¤s

	



		

	

ccsx|D]ø\}}}}|j|}	i}
t}x¶|j|D]§}||	krz|j|||dtjƒ|
|j<q@||kr@|j|}
|j|
j	j
j||tjƒ}|j
rç|j
d}||
|j	<t}qçq@q@W|r|
|fVqqWdS(srIdentify sets of values to use in UPDATE statements for a
    list of states within a post_update operation.

    tpassiveiN(RQRGR‰t_get_state_attr_by_columnRRœRR–R’R-R“R˜R™RšR)(RRSR5RTR^RRRRR RthasdataRR¡R¢RŒ((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR\ s(

	

ccsßxØ|D]Ð\}}}}}||jkr1qni}	x]|j|D]N}
|j|||
ƒ|	|
j<}|dkrEtjd||
fƒ‚qEqEW|dk	rÌ|j|j|krÌ||	|jj<n|	|fVqWdS(sSIdentify values to use in DELETE statements for a list of
    states to be deleted.sHCan't delete from table %s using NULL for primary key value on column %sN(RQRyR-RRtRuRxR‰(RRSR5RgRRRRRKRRRŒ((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRcCs cs4ˆjd	k	o"ˆjˆjˆk‰‡‡‡fd†}|jdˆf|ƒ}xÛt|d„ƒD]Ç\\}	}
}}}
d}t|
ƒ}
|}|	jj}|o°|	jj}|o½ˆ}|rè|rèˆj	j
rè|jƒ}n$ˆjd	k	r|jˆjƒ}n|r›x´|
D]{\}}}‰}	}}|	j|j
|ƒ|ƒ}|rtˆ|ˆ||||jjd|ƒn||j7}t}qWn.|s|}x|
D]g\}}}‰}	}}||	j||ƒ}tˆ|ˆ||||jjd|ƒ||j7}q®Wn­g|
D]}|d^q#}|pT|oTt|ƒdk}||	j||ƒ}||j7}xL|
D]D\}}}‰}	}}tˆ|ˆ||||jjd|ƒqW|r|t|
ƒkr,tjdˆjt|
ƒ|fƒ‚q,qeˆretjd|jjƒqeqeWd	S(
s`Emit UPDATE statements corresponding to value lists collected
    by _collect_update_commands().csŸtjƒ}x@ˆjˆD]1}|jj|tj|jd|jƒkƒqWˆrŒ|jjˆjtjˆjjdˆjjƒkƒnˆj	|ƒ}|S(Nttype_(
Rtand_RQtclausesRPt	bindparamRttypeRxRY(tclauseRtstmt(Rtneeds_version_idR5(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pytupdate_stmtis	RYcSs,|dt|dƒt|dƒ|dfS(Niiii(RCRl(trec((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt<lambda>~s

iiisMUPDATE statement on table '%s' expected to update %d row(s); %d were matched.sMDialect %s does not support updated rowcount - versioning cannot be verified.N(RxRR‰t_memoRR$tdialecttsupports_sane_rowcounttsupports_sane_multi_rowcountRR†RtexecuteR—t
_postfetchtcontexttcompiled_parameterstrowcountR)tlenRttStaleDataErrortdescriptionRtwarntdialect_description(RRSR2RR5RYRR°tcached_stmtRt	paramkeysthasvalueRR7trowst	statementtassert_singlerowtassert_multirowtallow_multirowRRRRtctcheck_rowcountR±tmultiparams((RR¯R5sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRF`s "

	








"	cCsv|jd|f|jƒ}xTt|d„ƒD]@\\}}	}
}}}
|}|s€|ss|jss|jjr(|r(|
r(t|
ƒ}
g|
D]}|d^q“}||j||ƒ}|rnx]t|
|j	j
ƒD]C\\}}}}}}}}}t||||||||ƒqÛWqnq.|rG|jrG|jƒ}n$|j
dk	rk|j|j
ƒ}nx|
D]ø\}}}}}}}}|r´|j|j|ƒ|ƒ}n||j||ƒ}|j	j}|dk	rAx\t||j|ƒD]A\}}|j|}|j|jƒdkrù|||j<qùqùWnt|||||||j	j
d|ƒqrWq.WdS(s`Emit INSERT statements corresponding to value lists collected
    by _collect_insert_commands().RXcSs3|dt|dƒt|dƒ|d|dfS(Niiiii(RCRl(R±((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR²ïs


iiN(R³RXRR†R´timplicit_returningR$R·tzipR¹RºR¸RRxRR—tinserted_primary_keyRQR–RR-(RRSR2RR5RXRRÁRtpkeysRÃRRR7RÅR±RËRÉRRRt
mapper_recRRtlast_inserted_paramstresulttprimary_keytpkRR¡((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR*äsn%



7"
	

csއ‡fd†}|jdˆf|ƒ}x]t|d„ƒD]I\}}	|d}
g|	D]\}}|^qZ}
||
j||
ƒq=WdS(seEmit UPDATE statements corresponding to value lists collected
    by _collect_post_update_commands().cs\tjƒ}x@ˆjˆD]1}|jj|tj|jd|jƒkƒqWˆj|ƒS(NR¨(	RR©RQRªRPR«RR¬RY(R­R(RR5(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR°?s
R_cSs|dt|dƒfS(Nii(RC(R±((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR²OsiN(R³RR·(RRSR2RR5RYR°RÅR-tgrouperRRRRË((RR5sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR]:s	

c	sçˆjd
k	o"ˆjˆjˆk‰‡‡‡fd†}|jdˆf|ƒ}xŽt|d„ƒD]z\}}	g|	D]\}
}|
^qx}||}t|ƒ}d}
t}|jjrë|j	||ƒ}ˆsßt
}n|j}
n‹ˆrf|jjr6d}
x]|D]%}
|j	||
ƒ}|
|j7}
q
Wqvt
jd|jjddƒ|j	||ƒn|j	||ƒ|jre|
dkre||
kre|r½t
jd	ˆj||
fƒqßtjd	ˆj||
fƒ‚qeqeWd
S(s`Emit DELETE statements corresponding to value lists collected
    by _collect_delete_commands().cs™tjƒ}x@ˆjˆD]1}|jj|tj|jd|jƒkƒqWˆrŒ|jjˆjtjˆjjdˆjjƒkƒnˆj	|ƒS(NR¨(
RR©RQRªRPR«R-R¬RxRi(R­R(Rtneed_version_idR5(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pytdelete_stmtbs	&	RicSs|dS(Ni((R±((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR²vsiÿÿÿÿisMDialect %s does not support deleted rowcount - versioning cannot be verified.t
stacklevelis­DELETE statement on table '%s' expected to delete %d row(s); %d were matched.  Please set confirm_deleted_rows=False within the mapper configuration to prevent this warning.N(RxRR‰R³RR¼RGR´R¶R·R)R»RµRR¿RÀtconfirm_deleted_rowsR¾RtR½(RRSR2RR5RiR×RÅRtrecsRtdel_objectstexpectedtrows_matchedt	only_warnRÉ((RRÖR5sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRdZsL
	

	c	Cs{xt|D]l\}}}}}|jr‡|jg|jD]*}|jsV|j|jkr5|j^q5ƒ}	|	r‡|j|j|	ƒq‡ng}
|jr©|
j|jƒnO|j	dk	rø|jtkrø|j
j|jkrø|
j|j
jgƒqøn|
r>|j|ƒ|_tj|jj|ƒ|jd|d|
ƒn|s]|jj|||ƒq|jj|||ƒqWdS(szfinalize state on states that have been inserted or updated,
    including calling after_insert/after_update events.

    t
refresh_statetonly_load_propsN(t_readonly_propstunmodified_intersectiontexpire_on_flushR-R#t_expire_attributesR†textendt_unloaded_non_objectRxRRˆRGRAtunloadedRmR
t
load_on_identR tqueryRetafter_inserttafter_update(RRSR3RRRRRVR9treadonlyt
toload_now((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRR­s.	-	
c	CsT|jjj}	|jjj}
|jjj}|jdk	rk|j|j|krkt|	ƒ|jg}	nt	|j
jjƒ}|rg}
n|r|jj
}|dk	rxX|D]M}|jrÉq´n||||j|j<|r´|
j|j|jƒq´q´Wqnxj|	D]b}|j|kr||jkr||j||j|j<|rt|
j|j|jƒqtqqW|r |
r |j
jj|||
ƒn|
rî|rî|j|jg|
D]%}||jkr¿|j|j^q¿ƒnx_|j|D]P\}}|dkr*tj|||ƒqütj|||||||jƒqüWdS(s†Expire attributes in need of newly persisted database state,
    after an INSERT or UPDATE statement has proceeded for that
    state.N(R¹tcompiledtprefetcht	postfetcht	returningRxRR‰R$Rlt
class_managerRet
refresh_flushtreturned_defaultsRÓR–R-RPRäR#t_table_to_equatedRtbulk_populate_inherit_keystpopulatetpassive_updates(RRSR5RR4RÒRRRt
prefetch_colstpostfetch_colstreturning_colsRótload_evt_attrstrowRRÉtmt
equated_pairs((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR¸ÖsL	
	$
!
&ccsŒ|jjr|jj}n|jj|ƒ}d}xRt|ƒD]D}|rd|||jƒƒ}n|jj}||j	||fVq@WdS(sßReturn an iterator of (state, state.dict, mapper, connection).

    The states are sorted according to _sort_states, then paired
    with the connection they should be using for the given
    unit of work transaction.

    N(
R R!ttransactionRRRMtobjR’RR#(RRSR3R!RRR((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRkscstj‡fd†ƒS(Ncs|jdˆjƒS(Ntcompiled_cache(texecution_optionst_compiled_cache(R(R(sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR²0s	(RtPopulateDict(R((RsO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR-scCs[t|ƒ}td„|Dƒƒ}|j|ƒt|dtjdƒƒt|dd„ƒS(Ncss$|]}|jdk	r|VqdS(N(R-R(Rts((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>7sR-tinsert_ordercSs|jdS(Ni(R-(tq((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR²:s(RCtdifference_updatetsortedtoperatort
attrgetter(R3tpendingt
persistent((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRM5s

tBulkUDcBsqeZdZd„Zd„Zed„ƒZed„ƒZd„Z	e
jdƒd„ƒZd„Z
d	„ZRS(
s5Handle bulk update and deletes via a :class:`.Query`.cCs2|jtƒ|_|jjƒ|_|jƒdS(N(tenable_eagerloadsRGRét_bind_mapperRt_validate_query_state(tselfRé((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt__init__@sc	CsÁxºdddtjfdddtjfddttjfddttjfd	d
ttjfdddtjffD]F\}}}}|t|j|ƒ|ƒsstjd
|fƒ‚qsqsWdS(Nt_limitslimit()t_offsetsoffset()t	_order_bys
order_by()t	_group_bys
group_by()t	_distincts
distinct()t	_from_objs2join(), outerjoin(), select_from(), or from_self()sCCan't call Query.update() or Query.delete() when %s has been called((	RRtis_RGteqtgetattrRétsa_exctInvalidRequestError(Rtattrtmethnametnotsettop((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyREs"cCs
|jjS(N(RéR (R((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR XscGs\y||}Wn=tk
rMtjddjtd„|Dƒƒƒƒ‚nX||ŒSdS(Ns3Valid strategies for session synchronization are %ss, css|]}t|ƒVqdS(N(trepr(Rtx((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pys	<genexpr>cs(tKeyErrorRt
ArgumentErrortjoinR
(tclstlookuptsynchronize_sessiontargtklass((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt_factory\s
cCs6|jƒ|jƒ|jƒ|jƒ|jƒdS(N(t_do_pret_do_pre_synchronizet_do_exect_do_post_synchronizet_do_post(R((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pytexec_hs




ssqlalchemy.orm.querycCsø|j}|j|ƒ|_t|jd|jƒr½tƒ}xG|jD]<}t||jƒsm|jƒPqG|jt	|j
ƒƒqGWt|ƒdkr«tj
dƒ‚qÕ|jƒ|_n|jdƒjj|_|j}|jrô|jƒndS(NiisLThis operation requires only one Table or entity be specified as the target.(RétQueryContextR¹R€t	_entitiest
_ColumnEntityRCtclearRYRtcolumnR¼RRRžt
primary_tablet_only_entity_zeroRtlocal_tableR t
_autoflush(RtquerylibRéttablestentR ((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR/os$		
		cCsdS(N((R((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR0‘scCsdS(N((R((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR2”s(t__name__t
__module__t__doc__RRtpropertyR tclassmethodR.R4RtdependenciesR/R0R2(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR=s			"	tBulkEvaluatecBs eZdZd„Zd„ZRS(sDBulkUD which does the 'evaluate' method of session state resolution.cCsdS(N((Rtevaluator_compiler((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt_additional_evaluators›scCsÞ|j}|jƒj}yMtj|ƒ}|jdk	rN|j|jƒ}n	d„}|j|ƒWn#tj	k
rŠt
jdƒ‚nXg|jj
jƒD]3\\}}}t||ƒrž||ƒrž|^qž|_dS(NcSstS(N(R)(R((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyteval_condition¨ssnCould not evaluate current criteria in Python. Specify 'fetch' or False for the synchronize_session parameter.(Rét_mapper_zerotclass_RtEvaluatorCompilertwhereclauseRtprocessRItUnevaluatableErrorRRR RqR&t
issubclasstmatched_objects(RRét
target_clsRHRJR)RÔR((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR0žs 		
"(RARBRCRIR0(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRG˜s	t	BulkFetchcBseZdZd„ZRS(sABulkUD which does the 'fetch' method of session state resolution.cCsd|j}|j}|jƒ}|jj|jjƒ}|j|d|jd|j	ƒj
ƒ|_dS(NRR(RéR t_compile_contextRÅtwith_only_columnsR:RÓR·Rt_paramstfetchalltmatched_rows(RRéR R¹tselect_stmt((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR0¾s				(RARBRCR0(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRT»st
BulkUpdatecBsJeZdZd„Zed„ƒZd„Zd„Zd„Zd„Z	RS(sBulkUD which handles UPDATEs.cCs,tt|ƒj|ƒ||_||_dS(N(tsuperR[RR—t
update_kwargs(RRéR—R]((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRÍs	cCs.tjitd6td6tt6||||ƒS(Ntevaluatetfetch(RR.tBulkUpdateEvaluatetBulkUpdateFetchR[RG(R)RéR+R—R]((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pytfactoryÒs
	cCs?|jr7t|tjƒr7t|j|ƒ}|jƒS|SdS(N(RR€Rtstring_typesR
t__clause_element__(RR-R ((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt_resolve_string_to_exprÚs
cCsÖ|jr7t|tjƒr7t|j|ƒ}|jjSt|tjƒrP|jSt	|dƒrn|j
ƒ}n|jr¿t|tjƒr¿y|jj
|}Wntjk
r´dSX|jSntjd|ƒ‚dS(NRdsInvalid expression type: %r(RR€RRcR
RDR-RtInstrumentedAttributethasattrRdRt
ColumnElementR–RttUnmappedColumnErrorRRR(RR-R ((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt_resolve_key_to_attrnameás

cCsÚgt|jdƒr$|jjƒn|jD]!\}}|j|ƒ|f^q+}|jjdtƒsvt|ƒ}ntj	|j
|jj||j}|j
jj|d|j
jd|jƒ|_|jj|_dS(NR&tpreserve_parameter_orderRR(RgR—R&ReR]RRGR#RRYR:R¹RNRéR R·RWRRÒR»(RR=R>R—R°((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR1õs!.cCs |jj}|jj|ƒdS(N(RéR Retafter_bulk_update(RR ((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR3	s(
RARBRCRRERbReRjR1R3(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR[Ês				t
BulkDeletecBs8eZdZd„Zed„ƒZd„Zd„ZRS(sBulkUD which handles DELETEs.cCstt|ƒj|ƒdS(N(R\RmR(RRé((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRscCs(tjitd6td6tt6||ƒS(NR^R_(RR.tBulkDeleteEvaluatetBulkDeleteFetchRmRG(R)RéR+((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRbs
	cCs[tj|j|jjƒ}|jjj|d|jjd|j	ƒ|_
|j
j|_dS(NRR(RRiR:R¹RNRéR R·RWRRÒR»(RR×((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR1scCs |jj}|jj|ƒdS(N(RéR Retafter_bulk_delete(RR ((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR3&s(RARBRCRRERbR1R3(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRms
		
R`cBs eZdZd„Zd„ZRS(sSBulkUD which handles UPDATEs using the "evaluate"
    method of session resolution.cCs‹i|_t|jdƒr*|jjƒn|j}xQ|D]I\}}|j|ƒ}|dk	r:|jtj|ƒƒ|j|<q:q:WdS(NR&(	tvalue_evaluatorsRgR—R&RjRRORt_literal_as_binds(RRHR—R-RŒ((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRI/s	!	c	Csê|jj}tƒ}t|jjƒƒ}x¬|jD]¡}tj|ƒtj	|ƒ}}|j
j|ƒ}x%|D]}|j||ƒ||<qrW|j|t|ƒƒ|j
|t|ƒj|ƒƒ|j|ƒq4W|j|ƒdS(N(RéR RCR$RqRbRRRRrt
instance_dictt
unmodifiedRt_commitRäRƒtaddt_register_altered(	RR R3tevaluated_keysRRR4tto_evaluateR-((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR29s 			
	
(RARBRCRIR2(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR`+s	
RncBseZdZd„ZRS(sSBulkUD which handles DELETEs using the "evaluate"
    method of session resolution.cCs6|jjjg|jD]}tj|ƒ^qƒdS(N(RéR t_remove_newly_deletedRRRRr(RR((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR2Vs(RARBRCR2(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRnRsRacBseZdZd„ZRS(sPBulkUD which handles UPDATEs using the "fetch"
    method of session resolution.c	CsÒ|jj}|jjƒ}tgg|jD]}|jt|ƒƒ^q+D]+}||jkrJtj	|j|ƒ^qJƒ}g|j
D]}t|ƒ^qˆ}x|D]}|j||ƒq§W|j
|ƒdS(N(RéR RKRCRYtidentity_key_from_primary_keyR$RqRRrR—R	t
_expire_stateRw(	RR t
target_mapperRÓtidentity_keyR3R=tattribR((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR2`s,."
(RARBRCR2(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRa\sRocBseZdZd„ZRS(sPBulkUD which handles DELETEs using the "fetch"
    method of session resolution.cCsz|jj}|jjƒ}xX|jD]M}|jt|ƒƒ}||jkr%|jtj	|j|ƒgƒq%q%WdS(N(
RéR RKRYR{R$RqRzRRr(RR R}RÓR~((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyR2ws(RARBRCR2(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyRoss(7RCRt	itertoolsRRtRRRRRRRtRtbaseRR	R
Rtsql.baseRR
R;RIRGRNR_RjROR[R`R(RER\RcR)RFR*R]RdRRR¸RkRRMtobjectRRGRTR[RmR`RnRaRo(((sO/home/tvault/.virtenv/lib/python2.7/site-packages/sqlalchemy/orm/persistence.pyt<module>sL"	4	2C		!	C	
	6z	#	„T	 	S	*;			[#D'