%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/self/root/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/
Upload File :
Create Path :
Current File : //proc/self/root/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyc

�
��4]c@sxdZddlmZddlmZddlmZddlmZddlmZddlmZddlm	Z	d	�Z
d
efd��YZdefd
��YZ
de
fd��YZdefd��YZde
efd��YZdefd��YZdefd��YZdefd��YZdefd��YZdefd��YZdefd��YZd S(!s�The internals for the unit of work system.

The session's flush() process passes objects to a contextual object
here, which assembles flush tasks based on mappers and their properties,
organizes them in order of dependency, and executes.

i(t
attributes(texc(tpersistence(tutili(tevent(ttopologicalcs�|j��fd�}�fd�}�fd�}tj|d|dtdt�tj|d|dtdt�tj|d|dtdt�d	S(
s\Establish event listeners on object attributes which handle
    cascade-on-set/append.

    cs�|dkrdS|j}|r�|jr8|jd�n|jjj�}tj|�}|j	j
r�|js~�|jkr�|j
|�r�|j|�q�n|S(Nscollection append(tNonetsessiont_warn_on_eventst_flush_warningtmanagertmappert_propsRtinstance_statet_cascadetsave_updatetcascade_backrefstkeyt_contains_statet_save_or_update_state(tstatetitemt	initiatortsesstpropt
item_state(R(sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytappend s		cs�|dkrdS|j}|jjj�}|rZ|jrZ|j|jrPdnd�n|dk	r�|tj	k	r�|tj
k	r�|jjr�tj
|�}|jj|�r�|r�||jkr�|j|�q�t|_q�ndS(Nscollection removesrelated attribute delete(RRR
RRRR	tuselistRt	NEVER_SETtPASSIVE_NO_RESULTRt
delete_orphanR
t
_is_orphant_newtexpungetTruet_orphaned_outside_of_session(RRRRRR(R(sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytremove6s"	
cs-||kr|S|j}|r)|jr8|jd�n|jjj�}|dk	r�tj|�}|j	j
r�|js��|jkr�|j
|�r�|j|�q�n|dk	r)|tjk	r)|tjk	r)|j	jr)tj|�}||jkr&|jj|�r&|j|�q&q)n|S(Nsrelated attribute set(RRR	R
RRRRR
RRRRRRRRRR RR!(RtnewvaluetoldvalueRRRtnewvalue_statetoldvalue_state(R(sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytset_Xs,			RtrawtretvalR$tsetN(RRtlistenR"(t
descriptorRRR$R)((RsL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyttrack_cascade_eventss	"%tUOWTransactioncBs�eZd�Zed��Zd�Zd�Zd�Zd�Ze	j
d�Zd�Zd�Z
eeeddd	�Zd
�Zd�Zejd��Zd
�Zd�Zd�Zd�Zd�ZRS(cCsv||_i|_tjt�|_tjt�|_i|_i|_t�|_	i|_
tjd��|_dS(NcSst�t�fS(N(R,(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt<lambda>�t(RRRtdefaultdictR,tdepstmapperstpresort_actionstpostsort_actionstdependencieststatestpost_update_states(tselfR((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt__init__�s					cCs
t|j�S(N(tboolR9(R;((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pythas_work�scCsR|jrNy|j|tj�WqNtjk
rJ|jj|g�tSXnt	S(sVreturn true if the given state is expired and was deleted
        previously.
        (
texpiredt
_load_expiredRtPASSIVE_OFFtorm_exctObjectDeletedErrorRt_remove_newly_deletedR"tFalse(R;R((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytwas_already_deleted�s	cCs||jko|j|dS(sWreturn true if the given state is marked as deleted
        within this uowtransaction.i(R9(R;R((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt
is_deleted�scCs6||jkr|j|S|�|j|<}|SdS(N(R(R;Rt	callable_tret((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytmemo�scCs(|j|d}|tf|j|<dS(s;remove pending actions for a state from the uowtransaction.iN(R9R"(R;Rtisdelete((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytremove_state_actions�sc	Cs.d||f}||jkr�|j|\}}}|tj@r*|tj@r*|j|j}|j||jtjtjB�}|r�|jr�|j	�}n|}|||f|j|<q*ni|j|j}|j||j|tjB�}|r|jr|j	�}n|}|||f|j|<|S(sOfacade to attributes.get_state_history(), including
        caching of results.thistory(
RtSQL_OKR
timpltget_historytdictRAtLOAD_AGAINST_COMMITTEDtuses_objectstas_state(	R;RRtpassivethashkeyRMt
state_historytcached_passiveRO((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytget_attribute_history�s,
cCs|tf|jkS(N(R"R6(R;t	processor((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pythas_depscCs8||f}||jkr4t||�|j|<ndS(N(R6t
Preprocess(R;RZt
fromparentR((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytregister_preprocessorscCs�|jj|�sR|jrN|dk	rNtjdtj|�||f�ntS||j	kr�|j
j}||jkr�|j
|�n|j|j|�||f|j	|<n)|r�|s�|r�|tf|j	|<ntS(NsJObject of type %s not in session, %s operation along '%s' will not proceed(RRtdeletedRRtwarntorm_utiltstate_class_strRER9R
RR5t_per_mapper_flush_actionstaddR"(R;RRKtlistonlyt
cancel_deletet	operationRR((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytregister_objects	cCs@|jjj}|j|\}}|j|�|j|�dS(N(R
Rtbase_mapperR:Rdtupdate(R;Rtpost_update_colsRR9tcols((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytregister_post_update-s
cCs�t||j�}t||j�}|jj||f�x|jD]}|j|�qDWx6|jD]+}|jrzqen|j	}|j|�qeWdS(N(
t
SaveUpdateAllRit	DeleteAllR8Rdt_dependency_processorstper_property_preprocessorst
relationshipstviewonlyt_dependency_processor(R;RtsavestdeletestdepR((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRc3s		cCstjd��S(sreturn a dynamic mapping of (Mapper, DependencyProcessor) to
        True or False, indicating if the DependencyProcessor operates
        on objects of that Mapper.

        The result is stored in the dictionary persistently once
        calculated.

        cSs(|djj|dj�|djkS(Nii(RtgetRR(ttup((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR1LR2(RtPopulateDict(R;((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt_mapper_for_depAs
cCs6|j}g|D]"}||jj|fr|^qS(smFilter the given list of InstanceStates to those relevant to the
        given DependencyProcessor.

        (R{R
R(R;RwR9tmapper_for_depts((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytfilter_states_for_depOs	ccsZ||f}xG|jjD]9}x0|j|D]!}|j||kr-|Vq-q-WqWdS(N(Ritself_and_descendantsR5R9(R;RRKRetchecktupR((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytstates_for_mapper_hierarchyWs
cs�xRtrTt}x5t�jj��D]}|j��r%t}q%q%W|sPqqWtj�jt�j	j����_
}|r�t�fd�|D��}xt�j�D]�}d|ks�|dj
s�|dj
s�|j|�r�jj|�q�|d|krV�jj|�x�||dD] }�jj||df�q/Wq�|d|kr��jj|�x3||dD] }�jj|d|f�q�Wq�q�Wntg�j	j�D]}|j
s�|^q��j|�S(s}Generate the full, unsorted collection of PostSortRecs as
        well as dependency pairs for this UOWTransaction.

        c3s*|] }|t|j���fVqdS(N(R,tper_state_flush_actions(t.0trec(R;(sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pys	<genexpr>wsiiN(R"REtlistR6tvaluestexecuteRtfind_cyclesR8R7tcyclesRQRtdisabledt
issupersetR$RdR,t
difference(R;RItactionR�tconverttedgeRwta((R;sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt_generate_actions^s:	
%

!(.cCs�|j�}|jraxvtj|j|�D]/}x&|rY|j�}|j||�q4Wq+Wn-x*tj|j|�D]}|j|�qwWdS(N(	R�R�Rtsort_as_subsetsR8tpoptexecute_aggregatetsortR�(R;R7R)tnR�((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s
			cCs�|js
dSt|j�}td�|jj�D��}|j|�}|rc|jj|�n|r||jj|�ndS(s�mark processed objects as clean / deleted after a successful
        flush().

        this method is called within the flush() method after the
        execute() method has succeeded and the transaction has been committed.

        Ncss'|]\}\}}|r|VqdS(N((R�R}RKRe((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pys	<genexpr>�s(R9R,titemsR�RRDt_register_persistent(R;R9tisdeltother((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytfinalize_flush_changes�s	N(t__name__t
__module__R<tpropertyR>RFRGRJRLRtPASSIVE_NO_INITIALIZERYR[R^RERRhRmRcRtmemoized_propertyR{R~R�R�R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR0�s,	-				.							4	tIterateMappersMixincBseZd�ZRS(cs@�jr/t��fd��jjjD��S�jjjSdS(Nc3s+|]!}�j|�jfr|VqdS(N(R{tdependency_processor(R�tm(R;tuow(sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pys	<genexpr>�s(R]titerR�tparentRR(R;R�((R;R�sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt_mappers�s
	(R�R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��sR\cBs eZdZd�Zd�ZRS(R�R]t	processedtsetup_flush_actionscCs+||_||_t�|_t|_dS(N(R�R]R,R�RER�(R;R�R]((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR<�s		cCsUt�}t�}xz|j|�D]i}x`|j|j|j�D]E}|j|\}}|sB|rw|j|�q�|j|�qBqBWq"W|r�|jj||�|jj	|�n|r�|jj
||�|jj	|�n|s�|rM|jrI|jj||t
�s-|jj||t�rI|jj|�t
|_nt
StSdS(N(R,R�R5R�R�R9RdR�tpresort_deletesRjt
presort_savesR�tprop_has_changesR"REtper_property_flush_actions(R;R�t
delete_statestsave_statesRRRKRe((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s2		 
		(R�R]R�R�(R�R�t	__slots__R<R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR\�s	tPostSortReccBs eZdZd�Zd�ZRS(R�cGsR|f|}||jkr'|j|Stj|�|j|<}t|_|SdS(N(R7tobjectt__new__RER�(tclsR�targsRRI((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s
	cCs|j|�dS(N(R�(R;R�trecs((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�s(R�(R�R�R�R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s		t
ProcessAllcBs;eZdZd�Zd�Zd�Zd�Zd�ZRS(	R�RKR]cCs9||_||_||_|j|jjj|�dS(N(R�RKR]R4R�RiRd(R;R�R�RKR]((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR<s
			cCsE|j|�}|jr.|jj||�n|jj||�dS(N(t	_elementsRKR�tprocess_deletest
process_saves(R;R�R9((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�s	cCs
tg�S(N(R�(R;R�((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�scCsd|jj|j|jfS(Ns%s(%s, isdelete=%s)(t	__class__R�R�RK(R;((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt__repr__%s	ccsgx`|j|�D]O}xF|j|D]7}|j|\}}||jkr$|r$|Vq$q$WqWdS(N(R�R5R9RK(R;R�RRRKRe((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�,s
(R�RKR](R�R�R�R<R�R�R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�s				t
PostUpdateAllcBs eZdZd�Zd�ZRS(RRKcCs||_||_dS(N(RRK(R;R�RRK((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR<7s	cCsf|j|j\}}g|D]&}|j|d|jkr|^q}tj|j|||�dS(Ni(R:RR9RKRtpost_update(R;R�R9RlR}((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�;s3(RRK(R�R�R�R<R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�4s	RncBs2eZdZd�Zd�Zd�Zd�ZRS(RcCs"||_||jkst�dS(N(RRitAssertionError(R;R�R((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR<Es	cCs,tj|j|j|jtt�|�dS(N(Rtsave_objRR�RE(R;R�((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�Isc	cs�t|j|jtt��}|jj}t||�}x8|D]0}t||�}|jj||f�|Vq@Wx=|j	|jD]+}|j
||�}|j||t�q�WdS(N(R�R�RRERiRotSaveUpdateStateR8RdR4R~R�(	R;R�R9Rit
delete_allRR�Rwtstates_for_prop((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�Ps
	cCsd|jj|jfS(Ns%s(%s)(R�R�R(R;((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�as(R(R�R�R�R<R�R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRnBs
			RocBs2eZdZd�Zd�Zd�Zd�ZRS(RcCs"||_||jkst�dS(N(RRiR�(R;R�R((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR<hs	cCs,tj|j|j|jtt�|�dS(N(Rt
delete_objRR�R"RE(R;R�((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�lsc	cs�t|j|jtt��}|jj}t||�}x8|D]0}t||�}|jj	||f�|Vq@Wx=|j
|jD]+}|j||�}|j||t�q�WdS(N(
R�R�RR"RERiRntDeleteStateR8RdR4R~R�(	R;R�R9Ritsave_allRR�RwR�((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�ss
	cCsd|jj|jfS(Ns%s(%s)(R�R�R(R;((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s(R(R�R�R�R<R�R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRoes
			tProcessStatecBs)eZdZd�Zd�Zd�ZRS(R�RKRcCs||_||_||_dS(N(R�RKR(R;R�R�RKR((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR<�s		c	Cs�|j}|j}|j}g|D]9}|j|kr"|j|kr"|j|kr"|^q"}|j|�|jgg|D]}|j^q~}|r�|j||�n|j||�dS(N(R�R�RKtdifference_updateRR�R�(	R;R�R�tcls_R�RKtrtour_recsR9((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s			

&cCs,d|jj|jtj|j�|jfS(Ns%s(%s, %s, delete=%s)(R�R�R�Rat	state_strRRK(R;((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s
	(R�RKR(R�R�R�R<R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s		R�cBs)eZdZd�Zd�Zd�ZRS(RRcCs||_|jj|_dS(N(RRRi(R;R�R((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR<�s	cCs�|j}|j}g|D]*}|j|kr|j|kr|^q}|j|�tj||jgg|D]}|j^qo|�dS(N(R�RR�RR�R(R;R�R�R�RR�R�((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s		7
cCs d|jjtj|j�fS(Ns%s(%s)(R�R�RaR�R(R;((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s	(RR(R�R�R�R<R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s		R�cBs)eZdZd�Zd�Zd�ZRS(RRcCs||_|jj|_dS(N(RRRi(R;R�R((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR<�s	c	Cs�|j}|j}g|D]*}|j|kr|j|kr|^q}|j|�|jgg|D]}|j^qf}tj|g|D]}|j|dr�|^q�|�dS(Ni(R�RR�RRR�R9(	R;R�R�R�RR�R�R9R}((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s		7
&cCs d|jjtj|j�fS(Ns%s(%s)(R�R�RaR�R(R;((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s	(RR(R�R�R�R<R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s		N(t__doc__R2RRRBRRRaRRR/R�R0R�R\R�R�R�RnRoR�R�R�(((sL/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt<module>s(	i�=2(###

Zerion Mini Shell 1.0