%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/
Upload File :
Create Path :
Current File : //opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyo

�
��4]c@smdZddlZddlmZddlmZddlmZddlmZddlmZdd	l	m
Z
dd
l	mZddl	mZddl
mZe�Zd
�Zdefd��YZdefd��YZdefd��YZdefd��YZeje�d��defd��YZd�Zdefd��YZd�Zd�ZdS(s�Routines to handle the string class registry used by declarative.

This system allows specification of classes and expressions used in
:func:`.relationship` using strings.

i����Ni(texc(t
inspection(tutil(tclass_mapper(t
interfaces(tColumnProperty(tRelationshipProperty(tSynonymProperty(t_get_table_keycCs||jkrN|j|}t|t�s[t||g�}|j|<q[n
||j|<y|jd}Wn+tk
r�tdd�|jd<}nX|jjd�}xX|r|jd�}|j	|�}x|D]}|j	|�}q�W|j
||�q�WdS(s^Add a class to the _decl_class_registry associated with the
    given declarative class.

    t_sa_module_registryt.iN(t_decl_class_registryt
isinstancet_MultipleClassMarkertKeyErrort
_ModuleMarkertNonet
__module__tsplittpopt
get_modulet	add_class(t	classnametclstexistingtroot_modulettokensttokentmodule((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR!s 
#


	
R
cBsDeZdZd	Zd
d�Zd�Zd�Zd�Zd�Z	RS(sRrefers to multiple classes of the same name
    within _decl_class_registry.

    t	on_removetcontentst__weakref__cCsK||_tg|D]}tj||j�^q�|_tj|�dS(N(Rtsettweakreftreft_remove_itemRt_registriestadd(tselftclassesRtitem((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt__init__Qs	.cCsd�|jD�S(Ncss|]}|�VqdS(N((t.0R"((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pys	<genexpr>Ys(R(R&((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt__iter__XscCszt|j�dkr;tjddj||g���n;t|j�d}|�}|dkrrt|��n|SdS(NisxMultiple classes found for path "%s" in the registry of this declarative base. Please use a fully module-qualified path.R
i(tlenRRtInvalidRequestErrortjointlistRt	NameError(R&tpathtkeyR"R((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pytattempt_get[s	cCsC|jj|�|js?tj|�|jr?|j�q?ndS(N(RtremoveR$tdiscardR(R&R"((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR#js
	
	cCs�tgg|jD]}|�^qD]}|dk	r#|j^q#�}|j|krvtjd|j|jf�n|jjtj	||j
��dS(Ns�This declarative base already contains a class with the same class name and module name as %s.%s, and will be replaced in the string-lookup table.(R RRRRtwarnt__name__R%R!R"R#(R&R(R"Rtmodules((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pytadd_itemqs#(RRRN(
R7Rt__doc__t	__slots__RR)R+R3R#R9(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR
Is			RcBsSeZdZdZd�Zd�Zd	�Zd
�Zd�Zd�Z	d
�Z
RS(s?"refers to a module name within
    _decl_class_registry.

    tparenttnameRtmod_nsR1RcCsi||_||_i|_t|�|_|jrO|jj|jg|_n	g|_tj|�dS(N(R<R=Rt_ModNSR>R1R$R%(R&R=R<((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR)�s					cCs
||jkS(N(R(R&R=((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt__contains__�scCs|j|S(N(R(R&R=((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt__getitem__�scCsS|jj|d�|jrO|jdk	rO|jj|j�tj|�ndS(N(RRRR<R#R=R$R5(R&R=((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR#�scCst|j|�S(N(tgetattrR>(R&R2((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pytresolve_attr�scCs?||jkr.t||�}||j|<n
|j|}|S(N(RR(R&R=tmarker((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR�s

cs\��jkr,�j�}|j|�n,t|gd��fd��}�j�<dS(NRcs
�j��S(N(R#((R=R&(sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt<lambda>�t(RR9R
(R&R=RR((R=R&sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR�s

(R<R=RR>R1R(R7RR:R;R)R@RAR#RCRR(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR�s						R?cBs eZdZd�Zd�ZRS(t__parentcCs
||_dS(N(t_ModNS__parent(R&R<((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR)�scCs�y|jj|}Wntk
r'n<X|dk	rct|t�rJ|jS|j|jj|�Snt	d|jj
|f��dS(Ns<Module %r has no mapped classes registered under the name %r(RHRRRRRR>R3R1tAttributeErrorR=(R&R2tvalue((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt__getattr__�s
(RG(R7RR;R)RK(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR?�s	t_GetColumnscBs eZdZd�Zd�ZRS(RcCs
||_dS(N(R(R&R((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR)�scCs�t|jdt�}|r�||jkrItjd|j|f��n|j|}|jtjkr�|j	}t
|t�r�|j}q�t
|t
�s�tjd|��q�q�nt|j|�S(Nt	configures/Class %r does not have a mapped column named %rsaProperty %r is not an instance of ColumnProperty (i.e. does not correspond directly to a Column).(RRtFalsetall_orm_descriptorsRR-textension_typeRt
NOT_EXTENSIONtpropertyRRR=RRB(R&R2tmptdesctprop((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRK�s 
	(R(R7RR;R)RK(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRL�s	cCstj|j�S(N(RtinspectR(ttarget((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRE�RFt	_GetTablecBs eZdZd�Zd�ZRS(R2tmetadatacCs||_||_dS(N(R2RY(R&R2RY((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR)�s	cCs|jjt||j�S(N(RYttablesRR2(R&R2((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRK�s(R2RY(R7RR;R)RK(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRX�s	cCs.t|t�r$|jg|�}nt|�S(N(RR
R3RL(R2RJ((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt_determine_container�st_class_resolvercBs#eZd�Zd�Zd�ZRS(cCsM||_||_||_|_||_tj|j�|_d|_	dS(N((
RRUtargt_declarative_argtfallbackRtPopulateDictt_access_clst_dictt
_resolvers(R&RRUR_R]((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR)s			cCs�|j}||jkr,t||j|�S||jjkrL|jj|S||jjkrnt||j�Sd|jkr�||jdkr�|jd}|j|�S|jr�x0|jD]"}||�}|dk	r�|Sq�Wn|j
|S(NR	(RRR[RYRZt_schemasRXRCRcRR_(R&R2RtregistrytresolvRJ((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRas"	

	cCs�y9t|jt�|j�}t|t�r4|jS|SWnEtk
r�}tj	d|j
j|j|jd|jf��nXdS(Ns�When initializing mapper %s, expression %r failed to locate a name (%r). If this is a class name, consider adding this relationship() to the %r class after both dependent classes have been defined.i(
tevalR]tglobalsRbRRLRR0RR-RUR<targs(R&txtn((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt__call__$s(R7RR)RaRl(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR\s		cseddl}ddlm}m}|jj���ji|d6|d6����fd�}|S(Ni����(tforeigntremoteRmRncst���|�S(N(R\(R](RR_RU(sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pytresolve_arg=s(t
sqlalchemytsqlalchemy.ormRmRnt__dict__tcopytupdate(RRURpRmRnRo((RR_RUsY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt	_resolver6scCs�t|t�r�t||�}xHd	D]@}t||�}t|tj�r%t||||��q%q%W|jr�t|jt�r�|j\}}xJd
D]?}||kr�t||tj�r�|||�||<q�q�Wq�n|S(Ntargumenttorder_bytprimaryjoint
secondaryjoint	secondaryt_user_defined_foreign_keystremote_sidetforeign_keys(RvRwRxRyRzR{R|(RxRyRzR}R|Rw(	RRRuRBRtstring_typestsetattrtbackrefttuple(RRURotattrtvR2tkwargs((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt_deferred_relationshipCs4

!(R:R!RFRRRtormRRtorm.propertiesRRRtschemaRR R$RtobjectR
RR?RLt	_inspectsRXR[R\RuR�(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt<module>s.		(=4
	1	

Zerion Mini Shell 1.0