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/path_registry.pyc
�
���ec@srdZddlmZddlZddlmZddlmZddlmZdd	lm	Z	dd
l
mZddlm
Z
eje�Zd�Zd
ZdZde
fd��YZdefd��YZe�e_deje
efd��YZdefd��YZdefd��YZdefd��YZdefd��YZdeefd��YZdS(s@Path tracking utilities, representing mapper graph traversals.

i����(tchainNi(tbasei(texc(t
inspection(tutil(tvisitors(tHasCacheKeycCs
tj|�S(N(tPathRegistrytdeserialize(tpath((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt_unreduce_pathst*t_sa_defaultRcBsFeZdZdZeZeZdejj	fgZ
d�Zd�Ze
d��Zd�Zd�Zdd�Zd�Zd	�Ze
d
��Zd�Zd�Zd
�Zd�Zed��Zed��Zed��Zed��Zd�Zed��Z ed��Z!ed��Z"d�Z#d�Z$d�Z%RS(s�Represent query load paths and registry functions.

    Basically represents structures like:

    (<User mapper>, "orders", <Order mapper>, "items", <Item mapper>)

    These structures are generated by things like
    query options (joinedload(), subqueryload(), etc.) and are
    used to compose keys stored in the query._attributes dictionary
    for various options.

    They are then re-composed at query compile/result row time as
    the query is formed and as rows are fetched, where they again
    serve to compose keys to look up options in the context.attributes
    dictionary, which is copied from query._attributes.

    The path structure has a limited amount of caching, where each
    "root" ultimately pulls from a fixed registry associated with
    the first mapper, that also contains elements for each of its
    property keys.  However paths longer than two elements, which
    are the exception rather than the rule, are generated on an
    as-needed basis.

    R	cCsPy |dk	o|j|jkSWn)tk
rKtjdt|��tSXdS(Ns1Comparison of PathRegistry to %r is not supported(tNoneR	t_path_for_comparetAttributeErrorRtwarnttypetFalse(tselftother((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__eq__Cs 
cCsPy |dkp|j|jkSWn)tk
rKtjdt|��tSXdS(Ns1Comparison of PathRegistry to %r is not supported(R
R	RRRRRtTrue(RR((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__ne__Ms 
cCs|jS(N(R	(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRWscCs-tjd|||�||||jf<dS(Nsset '%s' on path '%s' to '%s'(tlogtdebugtnatural_path(Rt
attributestkeytvalue((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytset[scCs3tjd|||�|j||jf|�dS(Ns$setdefault '%s' on path '%s' to '%s'(RRt
setdefaultR(RRRR((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR_scCs+||jf}||kr#||S|SdS(N(R(RRRR((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytgetcscCs
t|j�S(N(tlenR	(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__len__jscCs
t|�S(N(tid(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__hash__mscCs
t|j�S(N(R!R	(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytlengthpsccsG|j}x7tdt|�d�D]}||||dfVq"WdS(Niii(R	trangeR!(RR	ti((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytpairsts	cCs^xWgtdt|j�d�D]}|j|^qD]}|jj|�r6tSq6WtSdS(Nii(R&R!R	tmappertisaRR(RR)R'tpath_mapper((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytcontains_mapperys<cCs||jf|kS(N(R	(RRR((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytcontains�scCst|j�ffS(N(R
t	serialize(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt
__reduce__�scCs�ttggtdt|�d�D]}||^q"D]-}|jsN|jrW|jn	t|�^q6gtdt|�d�D]0}||jr�||j	n
t||�^qdg��S(Niii(tlisttzipR&R!t	is_mappertis_aliased_classtclass_tstrtis_propertyRR
(tclsR	R'tm((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt_serialize_path�s]IcCs|d�}d�}ttg|D]'\}}||�|||�f^q��}|rx|ddkrx|dd!}n|S(NcSs-|tjkr"tj|dt�Stj|S(Nt	configure(t	PathTokent_interntorm_baset_inspect_mapped_classR(tmcls((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt_deserialize_mapper_token�s"cSsH|dkrdS|tjkr*tj|Stj|dt�j|SdS(NR:(R
R;R<R=R>Rtattrs(R?R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt_deserialize_key_token�si����i(ttupleRR
(R7R	R@RBR?Rtp((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt_deserialize_path�s			
7cCs|gg|j�D]7\}}t|t�r|d|kr||f^qD]-\\}}}||j|�f|f^qKS(Ni(titemst
isinstanceRCR9(R7tdict_ttokenstktvRR	R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytserialize_context_dict�scstj�fd�|D��S(Nc3s<|]2\\}}}|t�j|��f|fVqdS(N(RCRE(t.0RR	R(R7(sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pys	<genexpr>�s(RtOrderedDict(R7t
serialized((R7sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytdeserialize_context_dict�scCs|j}|j|�S(N(R	R9(RR	((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR.�s	cCs,|dkrdS|j|�}|j|�S(N(R
REtcoerce(R7R	RD((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR�scCs-|jrt|j|�St|j|�SdS(N(R2tCachingEntityRegistrytroottSlotsEntityRegistry(R7R)((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt
per_mapper�s	cCstjd�||j�S(NcSs||S(N((tprevtnext((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt<lambda>�t(RtreduceRS(R7traw((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRQ�scCsZ|jdt�r t||�S|jdt�rCt|j|�Stjd|��dS(Nt:sinvalid token: %s(tendswitht_WILDCARD_TOKENt
TokenRegistryt_DEFAULT_TOKENRSRt
ArgumentError(Rttoken((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRb�s

cCstjd�|j|�S(NcSs||S(N((RVRW((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRX�RY(RRZR	(RR((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__add__�scCsd|jj|jfS(Ns%s(%r)(t	__class__t__name__R	(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__repr__�s(N(&Ret
__module__t__doc__t	__slots__Rtis_tokentis_rootRtExtendedInternalTraversaltdp_has_cache_key_listt_cache_key_traversalRRtpropertyRRRR
R R"R$R%R(R,R-R/tclassmethodR9RERLRPR.RRURQRbRcRf(((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR s:	
	
								$			tRootRegistrycBs9eZdZeZdZZeZeZ	eZ
d�ZRS(sXRoot registry, defers to mappers so that
    paths are maintained per-root-mapper.

    cCs%|tjkrtj|S|jSdS(N(R;R<t_path_registry(Rtentity((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__getitem__�s((ReRgRhRt
inherit_cacheR	RRt
has_entityR3RkRt(((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRq�s
R;cBs;eZdZiZd�Zed��Zed��ZRS(scacheable string tokencCs
t|�fS(N(R5(Rtanon_mapt
bindparams((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt_gen_cache_key
scCsdS(N(R
(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRscCs9||jkr|j|St|�|j|<}|SdS(N(R<R;(R7tstrvaluetresult((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytinterns(	ReRgRhR<RyRoRRpR|(((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR;s
	R_cBs;eZdZeZd�ZeZeZd�Z	d�Z
RS(RbtparentR	RcCsKtj|�}||_||_|j|f|_|j|f|_dS(N(R;R|RbR}R	R(RR}Rb((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__init__"s
		ccs�|jjrU|jjrUx�|jjj�D]!}t|jj||j�Vq-Wn]|jjr�|jjjr�|Vx:|jjj	D]!}t|jj||j�Vq�Wn|VdS(N(
R}R3RkR)titerate_to_rootR_RbRst_is_with_polymorphict_with_polymorphic_entities(Rtent((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytgenerate_for_superclasses.s""cCs
t��dS(N(tNotImplementedError(RRs((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRt<s(RbR}R	R(ReRgRiRRuR~RRvRjR�Rt(((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR_s		tPropRegistrycBsqeZeZeZd�Zd�Zej	d��Z
ej	d��Zed��Z
ed��Zd�ZRS(cCs}tj|d�}|}|js,|jrC|j|j}}n�|jr�|jr�|j|jkr�|dj|j�}|j|}|jr�|j|j}t|_	q|}nL|jr|jr|j|jk	r|jj
|j�r|j|j}n||_||_|j|f|_|j
|f|_
d|j|jjf|_|jj|_d|j
f|_dS(Ni����tloader(RtinspectR3t_use_mapper_pathR}twith_polymorphic_mapperst_entity_for_mapperR)Rtis_unnaturalR*tpropR	Rt_wildcard_tokent_wildcard_path_loader_keyt_default_path_loader_keyt_loader_key(RR}R�tinsptnatural_parenttsubclass_entity((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR~Ds6		
 						cCsdjd�|jD��S(Ns -> css|]}t|�VqdS(N(R5(RMtelem((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pys	<genexpr>�s(tjoinR	(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__str__�scCs
|jjS(N(R�t_links_to_entity(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRv�scCs
|jjS(N(R�Rs(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRs�scCs
|jjS(N(R�R)(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR)�scCs||jS(N(Rs(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pytentity_path�scCs1t|ttf�r |j|St||�SdS(N(RGtinttsliceR	RT(RRs((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRt�s(ReRgRR�RRuR~R�Rtmemoized_propertyRvRsRoR)R�Rt(((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR�@s	H	tAbstractEntityRegistrycBsSeZdZeZd�Zed��Zed��Zd�Z	e	Z
d�ZRS(cCs�||_||_|j|_||_|j|f|_|jr�|jsU|jr�|jj|jdj�r�|j|jf|_q�|j|jdjf|_n|j|_dS(Ni����(	RR}R3RsR	R�R)R*R(RR}Rs((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR~�s			cCs|S(N((R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR��scCstj|j�jS(N(RR�RsR)(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR)�scCstS(N(R(R((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__bool__�scCsTt|ttf�r |j|S|tjkrCt|tj|�St||�SdS(N(RGR�R�R	R;R<R_R�(RRs((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRt�s
((ReRgRiRRvR~RoR�R)R�t__nonzero__Rt(((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyR��s	(	RTcBseZeZdZRS(RR}R3RsR	R(RR}R3RsR	R(ReRgRRuRi(((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRT�sRRcBs eZeZd�Zd�ZRS(cCs4t|ttf�r |j|Stj||�SdS(N(RGR�R�R	tdictRt(RRs((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRt�scCst||�||<}|S(N(R�(RRtitem((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt__missing__s(ReRgRRuRtR�(((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyRR�s	( Rht	itertoolsRtloggingRYRR=RRRtsqlRtsql.traversalsRt	getLoggerReRR
R^R`RRqRStInspectionAttrR5R;R_R�R�RTR�RR(((sM/opt/alt/python27/lib/python2.7/site-packages/sqlalchemy/orm/path_registry.pyt<module>	s*	�#fC