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/dynamic.pyc
�
���ec@s�dZddlmZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Zdd
lm
Z
ddlmZddlmZdd	lm
Z
dd
lmZejejjdd�de	jfd��Y��Zdejfd��YZdefd��YZdefd��YZdee
fd��YZd�Zdefd��YZdS(s�Dynamic collection API.

Dynamic collections act like Query() objects for read operations and support
basic add/delete mutation.

i(t
attributes(texc(t
interfaces(t
object_mapper(tobject_session(t
relationships(t
strategies(tutil(tQueryi(tlog(tresulttlazytdynamict
DynaLoadercBseZd�ZRS(c
Cs�t|_|js+tjd|j��n5|jjtjtj	fkr`t
jd|j�ntj
|j|dtdtd|jjd|jjd|jj�dS(NstOn relationship %s, 'dynamic' loaders cannot be used with many-to-one/one-to-one relationships and/or uselist=False.s�On relationship %s, 'dynamic' loaders cannot be used with many-to-one/one-to-one relationships and/or uselist=False.  This warning will be an exception in a future release.t	useobjectt
impl_classt
target_mappertorder_bytquery_class(tTruetis_class_leveltuselistRtInvalidRequestErrortparent_propertyt	directionRt	ONETOMANYt
MANYTOMANYRtwarnRt_register_attributetDynamicAttributeImpltmapperRR(tselfR((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytinit_class_attribute!s&			(t__name__t
__module__R (((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR
sRcBs%eZeZeZeZeZeZdZ	dd�Zej
d�Zdejd�Zejd��Zejd��Zdd�Zdd�Zd�Zdej
deed�Zd	�Zd
�Zej
d�Zejd�Zej
d
�Zej
d�Zej
d�Zej
d�Z RS(c	Ks�tt|�j|||||�||_|rCt|�|_n|sUt|_n-t|j	�krs||_nt
|�|_dS(N(tsuperRt__init__RttupleRt
AppenderQueryRt
AppenderMixintmrotmixin_user_query(	Rtclass_tkeyttypecallabletdispatchRRRtkw((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR$Gs	cCs7|tj@s#|j|tj�jS|j||�SdS(N(RtSQL_OKt_get_collection_historytPASSIVE_NO_INITIALIZEtadded_itemsR(Rtstatetdict_tpassive((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytget_s
cCsJ|tj@s%|j||�j}n|j||�}|j}t|�S(N(RR/R0R2tadded_plus_unchangedtDynamicCollectionAdapter(RR3R4t	user_dataR5tdatathistory((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytget_collectiongs

	cCstj|tj�S(N(RtEventt	OP_APPEND(R((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyt
_append_tokenuscCstj|tj�S(N(RR=t	OP_REMOVE(R((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyt
_remove_tokenyscCs�|dkr!|j||�}n|j|�x/|jjD]!}||||pV|j�}q;W|jr�|dk	r�|jtj	|�|t
�ndS(N(tNonet_modified_eventt	add_addedR-tappendR?ttrackparenttsethasparentRtinstance_stateR(RR3R4tvaluet	initiatortcollection_historytfn((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytfire_append_event}s
cCs�|dkr!|j||�}n|j|�|jrb|dk	rb|jtj|�|t�nx-|jj	D]}||||p�|j
�qoWdS(N(RBRCtadd_removedRFRGRRHtFalseR-tremoveRA(RR3R4RIRJRKRL((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytfire_remove_event�s
cCs_|j|jkr.t||�|j|j<n|j||tj�t||j<|j|jS(N(R+tcommitted_statetCollectionHistoryRCRt	NEVER_SETR(RR3R4((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRC�s

c	CsM|r|j|jkrdS|r2|dkr2dS|}	t|	�}
|jrktj|j||��}n|j||�}|js�|j}n|j	|j�}tj}
|j
|
�}|
|
�j|�}|j|�}x9|
D]1}||kr�|j|||dd|�q�q�Wx*|D]"}|j
|||dd|�q#WdS(NRK(tparent_tokenRBtlistthas_identityRtIdentitySetR6RCR2tuniontintersectiont
differenceRMRQ(RR3R4RIRJR5t	check_oldtpopt_adapttiterablet
new_valuestold_collectionRKtidsett	constantst	additionstremovalstmember((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytset�s@			

cOs
t��dS(N(tNotImplementedError(Rtargstkwargs((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytdelete�scCstd��dS(Ns7Dynamic attributes don't support collection population.(Rh(RR3R4RI((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytset_committed_value�scCs|j||�}|j�S(N(R0t
as_history(RR3R4R5tc((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytget_history�scCs;|j||�}g|jD]}tj|�|f^qS(N(R0t	all_itemsRRH(RR3R4R5Rntx((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytget_all_pending�scCse|j|jkr%|j|j}nt||�}|jr]|tj@r]t||d|�S|SdS(Ntapply_to(R+RRRSRWRtINIT_OK(RR3R5Rn((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR0�scCs)||k	r%|j||||�ndS(N(RM(RR3R4RIRJR5((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRE�scCs)||k	r%|j||||�ndS(N(RQ(RR3R4RIRJR5((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRP�scCs |j||||d|�dS(NR5(RP(RR3R4RIRJR5((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR]s(N(!R!R"Rtuses_objectsROtdefault_accepts_scalar_loadertsupports_populationt
collectionRRRBR$RtPASSIVE_OFFR6R1R<Rtmemoized_propertyR?RARMRQRCRgRkRlRoRrR0RERPR](((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR?s8
	
	-		R8cBsAeZdZd�Zd�Zd�Zd�Zd�ZeZRS(s9simplified CollectionAdapter for internal API consistencycCs
||_dS(N(R:(RR:((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR$
scCs
t|j�S(N(titerR:(R((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyt__iter__scCsdS(N((R((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyt_reset_emptyscCs
t|j�S(N(tlenR:(R((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyt__len__scCstS(N(R(R((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyt__bool__s(	R!R"t__doc__R$R|R}RR�t__nonzero__(((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR8
s					R'cBsteZd
Zd�Zd�Zeed��Zd�Zd�Zd�Z	d
d�Z
d�Zd�Zd	�Z
RS(cCs�tt|�j|jd�|j�|_}||_t|�}|j	|jj
}|jdk	r�|jj
�|jf|_n|j|dt�f|_|jjr�|jj|_ndS(Ntalias_secondary(R#R'R$RRBtobjtinstancetattrRt_propsR+t	secondaryRt__clause_element__t	_from_objt_with_parentROt_where_criteriaRt_order_by_clauses(RR�R3R�Rtprop((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR$"s	
cCsgt|j�}|dk	rI|jrI|jrI|j|krI|j�ntj|j�s_dS|SdS(N(RR�RBt	autoflushtflushtorm_utilRW(Rtsess((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytsession=s		
cCsdS(N(RB(tsRq((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyt<lambda>KtcCs�|j}|dkr�tj|j�}|jrMtjdtj	|��nt
jt
j|j
jjg�|j
jtj|j�tj�jdt�j�S|j|�j�SdS(Ns�Instance %s is detached, dynamic relationship cannot return a correct result.   This warning will become a DetachedInstanceError in a future release.t_source_supports_scalars(R�RBRRHR�tdetachedRRR�t	state_strR
tIteratorResulttSimpleResultMetaDataR�R*R!R0R1R2Rtscalarst	_generatet_iter(RR�R3((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR�Ms			
cCsZ|j}|dkr@|jjtj|j�tj�j|�S|j	|�j
|�SdS(N(R�RBR�R0RRHR�R1tindexedR�t__getitem__(RtindexR�((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR�ds		cCsW|j}|dkr@t|jjtj|j�tj�j	�S|j
|�j�SdS(N(R�RBR~R�R0RRHR�R1R2R�tcount(RR�((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR�ns		cCs�|j}|dkr[t|�}|dkr[tjdtj|�|jjf��q[n|j	r�|j	|jj
d|�}n|j|jj
�}|j|_|j
|_
|j|_|S(Ns�Parent instance %s is not bound to a Session, and no contextual session is established; lazy load operation of attribute '%s' cannot proceedR�(R�RBRtorm_exctDetachedInstanceErrorR�tinstance_strR�R+RRtqueryR�R�R�(RR�R�R�((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR�zs	%	cCsFx?|D]7}|jjtj|j�tj|j�|d�qWdS(N(R�RERRHR�t
instance_dictRB(Rtiteratortitem((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pytextend�s
	cCs5|jjtj|j�tj|j�|d�dS(N(R�RERRHR�R�RB(RR�((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRE�s
	cCs5|jjtj|j�tj|j�|d�dS(N(R�RPRRHR�R�RB(RR�((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRP�s
	N(R!R"RBRR$R�tpropertyR�R�R�R�R�RERP(((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR's				
				R&cBseZdZRS(sBA dynamic query that supports basic collection storage operations.(R!R"R�(((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR&�scCs*d|j}t|t|fi|d6�S(sAReturn a new class with AppenderQuery functionality layered over.tAppenderR(R!ttypeR'(tclstname((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR)�s
RScBs\eZdZdd�Zed��Zed��Zd�Zd�Z	d�Z
d�ZRS(	sDOverrides AttributeHistory to receive append/remove events directly.cCs�|rTt||�jt�}tj|�|_|j|_|j|_t|_	n6tj�|_tj�|_tj�|_t|_	dS(N(
R&R�RORtOrderedIdentitySettunchanged_itemsR2t
deleted_itemsRt_reconcile_collection(RR�R3Rstcoll((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR$�scCst|jj|j��S(N(RVR2RYR�(R((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR7�scCs%t|jj|j�j|j��S(N(RVR2RYR�R�(R((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRp�scCs�|jrH|jj|j�}|jj|j�}|jj|�}n|j|j|j}}}tjt|�t|�t|��S(N(	R�R2R[R�R�RZRtHistoryRV(Rtaddedtdeletedt	unchanged((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRm�s	cCst|j�|S(N(RVR2(RR�((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyR��scCs|jj|�dS(N(R2tadd(RRI((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRD�scCs6||jkr"|jj|�n|jj|�dS(N(R2RPR�R�(RRI((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRN�sN(R!R"R�RBR$R�R7RpRmR�RDRN(((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyRS�s
	
		N(R�R�RRR�RRRRRRR�R�RR	tengineR
tclass_loggertRelationshipPropertytstrategy_fortAbstractRelationshipLoaderR
t
AttributeImplRtobjectR8R'R&R)RS(((sG/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/dynamic.pyt<module>
s,��