ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ 4]c@smdZddlZddlmZddlmZddlmZddlmZddlmZdd l m Z dd l m Z dd l m Z dd l mZeZd ZdefdYZdefdYZdefdYZdefdYZejeddefdYZdZdefdYZdZdZdS(sRoutines to handle the string class registry used by declarative. This system allows specification of classes and expressions used in :func:`.relationship` using strings. iNi(texc(t inspection(tutil(t class_mapper(t interfaces(tColumnProperty(tRelationshipProperty(tSynonymProperty(t_get_table_keycCs ||jkrN|j|}t|ts[t||g}|j|Ys(R(R&((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt__iter__XscCszt|jdkr;tjddj||gn;t|jd}|}|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?|jq?ndS(N(RtremoveR$tdiscardR(R&R"((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR#js    cCstgg|jD]}|^qD]}|dk r#|j^q#}|j|krvtjd|j|jfn|jjtj ||j dS(NsThis 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    RcBsSeZdZdZdZdZd 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|jtj|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_attrscCs?||jkr.t||}||j|t(RR9R (R&R=RR((R=R&sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRs  (R<R=RR>R1R( R7RR:R;R)R@RAR#RCRR(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRs     R?cBs eZdZdZdZRS(t__parentcCs ||_dS(N(t_ModNS__parent(R&R<((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR)scCsy|jj|}Wntk r'nQX|dk rxt|trJ|jSt|ts_t|j |jj |Snt d|jj |fdS(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 eZdZdZdZRS(RcCs ||_dS(N(R(R&R((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR)scCst|jdt}|r||jkrItjd|j|fn|j|}|jtjkr|j }t |t r|j }qt |t stjd|qqnt|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.pyRLs    (R(R7RR;R)RL(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRMs cCstj|jS(N(RtinspectR(ttarget((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRERFt _GetTablecBs eZdZdZdZRS(R2tmetadatacCs||_||_dS(N(R2RZ(R&R2RZ((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyR)s cCs|jjt||jS(N(RZttablesRR2(R&R2((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRLs(R2RZ(R7RR;R)RL(((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRYs cCs.t|tr$|jg|}nt|S(N(R R R3RM(R2RK((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyt_determine_containerst_class_resolvercBs#eZdZdZdZRS(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||jSd|jkr||jdkr|jd}|j|S|jrx0|jD]"}||}|dk r|SqWn|j |S(NR ( RR R\RZR[t_schemasRYRCRdRR`(R&R2RtregistrytresolvRK((sY/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/ext/declarative/clsregistry.pyRbs"       cCsy9t|jt|j}t|tr4|jS|SWnEtk r}tj d|j j |j|j d|jfnXdS(NsWhen 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}|jjji|d6|d6fd}|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  cCst|trt||}xHd D]@}t||}t|tjr%t||||q%q%W|jrt|jtr|j\}}xJd D]?}||krt||tjr||||| s.   (=4   1