ó ÃÌ4]c@smdZddlZddlmZddlmZddlmZddlmZddlmZdd l m Z dd l m Z dd l 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|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.pyt attempt_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|¶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'nQX|dk rxt|tƒrJ|jSt|tƒs_t‚|j |jj |ƒSnt d|jj |fƒ‚dS(Ns<Module %r has no mapped classes registered under the name %r( RHRRRR RR>R tAssertionErrorR3R1tAttributeErrorR=(R&R2tvalue((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt __getattr__Às  (RG(R7RR;R)RL(((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.pyRLØs    (R(R7RR;R)RL(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRMÒ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(R2RZ(R&R2RZ((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR)÷s cCs|jjt||jƒS(N(RZttablesRR2(R&R2((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRLûs(R2RZ(R7RR;R)RL(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRYôs cCs.t|tƒr$|jg|ƒ}nt|ƒS(N(R R R3RM(R2RK((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(( RRVtargt_declarative_argtfallbackRt PopulateDictt _access_clst_dictt _resolvers(R&RRVR`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 ( RR R\RZR[t_schemasRYRCRdRR`(R&R2RtregistrytresolvRK((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRbs"       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^tglobalsRcR RMRR0RR-RVR<targs(R&txtn((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt__call__$s(R7RR)RbRm(((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ÿÿÿÿ(tforeigntremoteRnRocstˆˆˆ|ƒS(N(R](R^(RR`RV(sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt resolve_arg=s(t sqlalchemytsqlalchemy.ormRnRot__dict__tcopytupdate(RRVRqRnRoRp((RR`RVsY/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š|||ƒ|| s.   (=4   1