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/orm/unitofwork.pyc
�
���ec@sqdZddlmZddlmZddlmZddlmZddlmZddlmZd�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(tutili(tevent(ttopologicalcCs'tjd|jj|fdd�dS(NsH"%s" object is being merged into a Session along the backref cascade path for relationship "%s"; in SQLAlchemy 2.0, this reverse cascade will not take place.  Set cascade_backrefs to False in either the relationship() or backref() function for the 2.0 behavior; or to set globally for the whole Session, set the future=True flagtcodets9r1(Rtwarn_deprecated_20tclass_t__name__(tstatetprop((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt_warn_for_cascade_backrefsscs�|j��fd�}�fd�}�fd�}tj|d|dt�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�|jry|js��|j
kr�|j|�r��|j
kr�t||�n|j|�q�n|S(Nscollection append(tNonetsessiont_warn_on_eventst_flush_warningtmanagertmappert_propsRtinstance_statet_cascadetsave_updatetcascade_backrefstfuturetkeyt_contains_stateRt_save_or_update_state(R
titemt	initiatortsessRt
item_state(R(sJ/opt/alt/python27/lib/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(R
RRRRRRtuselistRt	NEVER_SETtPASSIVE_NO_RESULTRt
delete_orphanRt
_is_orphant_newtexpungetTruet_orphaned_outside_of_session(R
RRRRR(R(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytremoveGs"	
csV||kr|S|j}|rR|jr8|jd�n|jjj�}|dk	r�tj|�}|j	j
r�|jr�|js��|j
kr�|j|�r��|j
kr�t||�n|j|�q�n|dk	rR|tjk	rR|tjk	rR|j	jrRtj|�}||jkrO|jj|�rO|j|�qOqRn|S(Nsrelated attribute set(RRRRRRR
RRRRRRRRRRR"R#R$R&R%R'(R
tnewvaluetoldvalueRRRtnewvalue_statetoldvalue_state(R(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytset_is2			tappend_wo_mutationtrawR tretvalR*tsetN(RRtlistenR((t
descriptorRR R*R/((RsJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyttrack_cascade_events$s	"*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(R3(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt<lambda>�t(RRRtdefaultdictR3tdepstmapperstpresort_actionstpostsort_actionstdependencieststatestpost_update_states(tselfR((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt__init__�s					cCs
t|j�S(N(tboolR@(RB((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pythas_work�scCsR|jrNy|j|tj�WqNtjk
rJ|jj|g�tSXnt	S(sZReturn ``True`` if the given state is expired and was deleted
        previously.
        (
texpiredt
_load_expiredRtPASSIVE_OFFtorm_exctObjectDeletedErrorRt_remove_newly_deletedR(tFalse(RBR
((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytwas_already_deleted�s	cCs||jko|j|dS(s[Return ``True`` if the given state is marked as deleted
        within this uowtransaction.i(R@(RBR
((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt
is_deleted�scCs6||jkr|j|S|�|j|<}|SdS(N(R(RBRt	callable_tret((sJ/opt/alt/python27/lib/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(R@R((RBR
tisdelete((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytremove_state_actions�sc	Cs<d||f}||jkr�|j|\}}}|tj@r8|tj@r8|j|j}|j||jtjtjBtjB�}|r�|j	r�|j
�}n|}|||f|j|<q8np|j|j}|j||j|tjBtjB�}|r|j	r|j
�}n|}|||f|j|<|S(sOFacade to attributes.get_state_history(), including
        caching of results.thistory(RtSQL_OKRtimpltget_historytdictRHtLOAD_AGAINST_COMMITTEDtNO_RAISEtuses_objectstas_state(	RBR
RtpassivethashkeyRTt
state_historytcached_passiveRV((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytget_attribute_history�s0
cCs|tf|jkS(N(R(R=(RBt	processor((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pythas_dep scCs8||f}||jkr4t||�|j|<ndS(N(R=t
Preprocess(RBRbt
fromparentR((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytregister_preprocessor#s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(RRtdeletedR
Rtwarntorm_utiltstate_class_strRLR@RRR<t_per_mapper_flush_actionstaddR((RBR
RRtlistonlyt
cancel_deletet	operationRR((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytregister_object(s	cCs@|jjj}|j|\}}|j|�|j|�dS(N(RRtbase_mapperRARltupdate(RBR
tpost_update_colsRR@tcols((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytregister_post_updateJs
cCs�t||j�}t||j�}|jj||f�x|jD]}|j|�qDWx6|jD]+}|jrzqen|j	}|j|�qeWdS(N(
t
SaveUpdateAllRqt	DeleteAllR?Rlt_dependency_processorstper_property_preprocessorst
relationshipstviewonlyt_dependency_processor(RBRtsavestdeletestdepR((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRkPs		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(RtgetRR(ttup((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR8iR9(RtPopulateDict(RB((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt_mapper_for_dep^s
cCs6|j}g|D]"}||jj|fr|^qS(smFilter the given list of InstanceStates to those relevant to the
        given DependencyProcessor.

        (R�RR(RBRR@tmapper_for_depts((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytfilter_states_for_depls	ccsZ||f}xG|jjD]9}x0|j|D]!}|j||kr-|Vq-q-WqWdS(N(Rqtself_and_descendantsR<R@(RBRRRRmtchecktupR
((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytstates_for_mapper_hierarchyts
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(R3tper_state_flush_actions(t.0trec(RB(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pys	<genexpr>�siiN(R(RLtlistR=tvaluestexecuteRtfind_cyclesR?R>tcyclesRXR
tdisabledt
issupersetR*RlR3t
difference(RBRPtactionR�tconverttedgeRta((RBsJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt_generate_actions{s:	
%

!(.cCs�|j�}t|dd��}|jr�x�tj|j|�D];}t|�}x&|rz|j�}|j||�qUWq@Wn-x*tj	|j|�D]}|j
|�q�WdS(NRcSs|jS(N(tsort_key(R((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR8�R9(R�tsortedR�Rtsort_as_subsetsR?R3tpoptexecute_aggregatetsortR�(RBR>tsubsetR/tnR�((sJ/opt/alt/python27/lib/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�RRRm((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pys	<genexpr>�s(R@R3titemsR�RRKt_register_persistent(RBR@tisdeltother((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pytfinalize_flush_changes�s	N(R	t
__module__RCtpropertyRERMRNRQRSRtPASSIVE_NO_INITIALIZERaRcRfRLR
RpRuRkRtmemoized_propertyR�R�R�R�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR7�s,	-				4							4	tIterateMappersMixincBseZd�ZRS(cs@�jr/t��fd��jjjD��S�jjjSdS(Nc3s+|]!}�j|�jfr|VqdS(N(R�tdependency_processor(R�tm(RBtuow(sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pys	<genexpr>�s(RetiterR�tparentR�R(RBR�((RBR�sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt_mappers�s
	(R	R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��sRdcBs eZdZd�Zd�ZRS(R�Ret	processedtsetup_flush_actionscCs+||_||_t�|_t|_dS(N(R�ReR3R�RLR�(RBR�Re((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRC�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(R3R�R<R�R�R@RlR�tpresort_deletesRrt
presort_savesR�tprop_has_changesR(RLtper_property_flush_actions(RBR�t
delete_statestsave_statesRR
RRRm((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s2		 
		(R�ReR�R�(R	R�t	__slots__RCR�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRd�s	tPostSortReccBs eZdZd�Zd�ZRS(R�cGsR|f|}||jkr'|j|Stj|�|j|<}t|_|SdS(N(R>tobjectt__new__RLR�(tclsR�targsRRP((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�!s
	cCs|j|�dS(N(R�(RBR�trecs((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�*s(R�(R	R�R�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�s		t
ProcessAllcBs;eZd	Zd�Zd�Zd�Zd�Zd�ZRS(
R�RRReR�cCsQ||_d|jj|f|_||_||_|j|jjj|�dS(NR�(R�R�RRReR;R�RqRl(RBR�R�RRRe((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRC1s				cCsE|j|�}|jr.|jj||�n|jj||�dS(N(t	_elementsRRR�tprocess_deletest
process_saves(RBR�R@((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�>s	cCs
tg�S(N(R�(RBR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�EscCsd|jj|j|jfS(Ns%s(%s, isdelete=%s)(t	__class__R	R�RR(RB((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt__repr__Ls	ccsgx`|j|�D]O}xF|j|D]7}|j|\}}||jkr$|r$|Vq$q$WqWdS(N(R�R<R@RR(RBR�RR
RRRm((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�Ss
(R�RRReR�(R	R�R�RCR�R�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�.s	
			t
PostUpdateAllcBs/eZdZd�Zejd�d��ZRS(RRRR�cCs+||_||_d|j|f|_dS(NR�(RRRt	_sort_keyR�(RBR�RRR((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRC^s		ssqlalchemy.orm.persistencecCsrtjj}|j|j\}}g|D]&}|j|d|jkr)|^q)}|j|j|||�dS(Ni(Rt	preloadedtorm_persistenceRARR@RRtpost_update(RBR�tpersistenceR@RtR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�cs3(RRRR�(R	R�R�RCRtpreload_moduleR�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�[s	RvcBsAeZdZd�Zejd�d��Zd�Zd�ZRS(RR�cCs4||_d|jf|_||jks0t�dS(NRv(RR�R�RqtAssertionError(RBR�R((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRCos	ssqlalchemy.orm.persistencecCs2tjjj|j|j|jtt�|�dS(N(RR�R�tsave_objRR�RL(RBR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�tsc	cs�t|j|jtt��}|jj}t||�}x8|D]0}t||�}|jj||f�|Vq@Wx=|j	|jD]+}|j
||�}|j||t�q�WdS(N(R�R�RRLRqRwtSaveUpdateStateR?RlR;R�R�(	RBR�R@Rqt
delete_allR
R�Rtstates_for_prop((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�|s
	cCsd|jj|jfS(Ns%s(%s)(R�R	R(RB((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s(RR�(	R	R�R�RCRR�R�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRvls
		RwcBsAeZdZd�Zejd�d��Zd�Zd�ZRS(RR�cCs4||_d|jf|_||jks0t�dS(NRw(RR�R�RqR�(RBR�R((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRC�s	ssqlalchemy.orm.persistencecCs2tjjj|j|j|jtt�|�dS(N(RR�R�t
delete_objRR�R(RL(RBR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��sc	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(RLRqRvtDeleteStateR?RlR;R�R�(	RBR�R@Rqtsave_allR
R�RR�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s
	cCsd|jj|jfS(Ns%s(%s)(R�R	R(RB((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s(RR�(	R	R�R�RCRR�R�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRw�s
		tProcessStatecBs)eZdZd�Zd�Zd�ZRS(R�RRR
R�cCs1||_d|jf|_||_||_dS(NR�(R�R�RRR
(RBR�R�RRR
((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRC�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�RRtdifference_updateR
R�R�(	RBR�R�tcls_R�RRtrtour_recsR@((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s			

&cCs,d|jj|jtj|j�|jfS(Ns%s(%s, %s, delete=%s)(R�R	R�Rit	state_strR
RR(RB((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s
	(R�RRR
R�(R	R�R�RCR�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s		R�cBs8eZdZd�Zejd�d��Zd�ZRS(R
RR�cCs1||_|jj|_d|jjf|_dS(NR�(R
RRqR�R�(RBR�R
((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRC�s	ssqlalchemy.orm.persistencecCs�tjj}|j}|j}g|D]*}|j|kr%|j|kr%|^q%}|j|�|j||jgg|D]}|j^q{|�dS(N(RR�R�R�RR�R�R
(RBR�R�R�R�RR�R�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s		7
cCs d|jjtj|j�fS(Ns%s(%s)(R�R	RiR�R
(RB((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s	(R
RR�(R	R�R�RCRR�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s	
R�cBs8eZdZd�Zejd�d��Zd�ZRS(R
RR�cCs1||_|jj|_d|jjf|_dS(NR�(R
RRqR�R�(RBR�R
((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyRC�s	ssqlalchemy.orm.persistencec
Cs�tjj}|j}|j}g|D]*}|j|kr%|j|kr%|^q%}|j|�|jgg|D]}|j^qr}|j|g|D]}	|j|	dr�|	^q�|�dS(Ni(	RR�R�R�RR�R
R�R@(
RBR�R�R�R�RR�R�R@R�((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s		7
&cCs d|jjtj|j�fS(Ns%s(%s)(R�R	RiR�R
(RB((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR�s	(R
RR�(R	R�R�RCRR�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyR��s	N(t__doc__R9RRRIRRiRRRR6R�R7R�RdR�R�R�RvRwR�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/unitofwork.pyt<module>s(		u�H2-%%$