ÿØÿà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 @ssdZddlZddlZddlZddlZddlZejdAkZejdBkZejdCkZ ejdDkZ ejdEkZ ejdFkZ ejdGkZ ejjdZeed Zejjd Ze oe ZejZejZejZeZejd d d dddddgZyddlZWnek rcddlZnXe rvdZneZdZ e rddl!Z!ddl"Z"ddl#Z#ddl$Z$ddl%Z%ddl&m'Z'ddl(m)Z*ddl(m+Z+ddl$m,Z,ddl-m.Z.m/Z/m0Z0m1Z1m2Z2efZ3e4fZ5e4Z6eZ7e8fZ9e:Z;e$j<Z=e>Z?e@ZAeBe"dZCeBe"dZDeBe"dZEdZFdZGdZHd ZId!ZJddd"ZLd#ZMd$ZNe reOZOqd%ZOnddl!Z!ddlPZ#ddl$Z$ddl+m+Z+ddlQm+Z*dd&l$mRZ,dd'lSm1Z1dd(lSm.Z.dd)lSm2Z2dd*lSm/Z/dd+lTm0Z0yddlUZ%Wnek rddl%Z%nXeVfZ3e4fZ5eZ6eWZ7e8eXfZ9eOZOeJZJe'Z'e!jHZHe!jGZGe$jYZ=e$jZZ?e$j[ZAd,ZFdd-ZCd.Z;d/ZDd0ZEd1ZMd2ZNd3ZId4Z\d5dUe rdd6lm]Z]ddddHiied7d8d9d:e]d; Z^n2e rdd<lm_Z`d=Z^ndd<lm_Z^er<ddlajbZcn ddlZcejd>Zddd?Zed@ZfdS(Is1Handle Python version/platform incompatibilities.iNiiiiitjavatpypy_version_infotwint FullArgSpectargstvarargstvarkwtdefaultst kwonlyargstkwonlydefaultst annotationscCs|S(N((targ((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyt7tc Cs]tj|r|j}ntj|sBtdj|n|j}tj|srtdj|n|j}|j }t r|j nd}t || }t ||||!}||7}d}|jtj@r|j |}|d}nd}|jtj@r |j |}nt||||j|t rD|jndt rV|jniS(s9Fully vendored version of getfullargspec from Python 3.3.s{!r} is not a Python functions{!r} is not a code objectiiN(tinspecttismethodt__func__t isfunctiont TypeErrortformatt__code__tiscodet co_argcountt co_varnamestpy3ktco_kwonlyargcounttlisttNonetco_flagst CO_VARARGStCO_VARKEYWORDSRt __defaults__t__kwdefaults__t__annotations__( tfunctcotnargstnamestnkwargsRRRR((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytinspect_getfullargspec<s8       (treduce(tBytesIO(tStringIO(t zip_longest(t quote_plust unquote_plust parse_qsltquotetunquotetexect __import__tprintcCs |jdS(Nslatin-1(tencode(ts((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytbscCstj|jdS(Ntascii(tbase64t b64decodeR4(tx((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyR9scCstj|jdS(NR7(R8t b64encodetdecode(R:((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyR;scCs|j|ddS(Nterrorstbackslashreplace(R<(ttexttencoding((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytdecode_backslashreplacescCs||k||kS(N((taR6((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytcmpscCs[|dk r0||k s$td||_n|j|k rQ|j|n|dS(NsSame cause emitted(RtAssertionErrort __cause__t __traceback__twith_traceback(ttptvaluettbtcause((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytreraises   cCs|S(N((R5((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytuscCs|S(N((R5((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytuescCs t|dS(Nt__call__(thasattr(tfn((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytcallables(t izip_longest(R/(R,(R0(R-(R.cCs|S(N((R5((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyR6scBs#|dkrddUnddUdS(Nsexec func_text in globals_sexec func_text in globals_, lcl(R(t func_texttglobals_tlcl((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytexec_s  cCsd|DS(Ncss|]}t|VqdS(N(tord(t.0tbyte((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pys s((tbuf((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyt iterbytesscGsPt|dkrF|dd!g|dD]}t|^q'f}nt|S(Niii(tlentstrR2(RR ((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytimport_s4cOsk|jdtj}|dkr%dSx?t|D]1}t|tsVt|}n|j|q2WdS(Ntfile( tpoptsyststdoutRt enumeratet isinstancet basestringR^twrite(RtkwargstfpR ((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytprint_s cCs t|dS(Nsutf-8(tunicode(R5((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyRMscCs t|dS(Ntunicode_escape(Rk(R5((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyRNscCs=y|j|SWn%tk r8t|dd!jSXdS(Nii(R<tUnicodeDecodeErrortrepr(R?R@((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyRAs cCsRt|ts(t|jdddSt|trJ|jdddS|SdS(NR7R=R>(Ret string_typesRkR4(R?((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytsafe_bytestrings sdef reraise(tp, value, tb=None, cause=None): if cause is not None: assert cause is not value, 'Same cause emitted' raise tp, value, tb (tformatannotationcCsd|S(Nt*((tname((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyR R cCsd|S(Ns**((Rs((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyR R cCsdt|S(Nt=(Rn(RI((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyR R cCsd|S(Ns -> ((R?((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyR R c sfd} g}|r:t|t|}nx`t|D]R\}}| |}|r||kr|| |||}n|j|qGW|dk r|j|| |n|r|jdn|r7xS|D]H}| |}|r#||kr#|| ||7}n|j|qWn|dk r_|j| | |nddj|d}dkr|| d7}n|S(saCopy formatargspec from python 3.7 standard library. Python 3 has deprecated formatargspec and requested that Signature be used instead, however this requires a full reimplementation of formatargspec() in terms of creating Parameter objects and such. Instead of introducing all the object-creation overhead and having to reinvent from scratch, just copy their compatibility routine. Utimately we would need to rewrite our "decorator" routine completely which is not really worth it right now, until all Python 2.x support is dropped. cs7|}|kr3|d|7}n|S(Ns: ((R tresult(R Rqt formatarg(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytformatargandannotation-s  Rrt(s, t)treturnN(R]RdtappendRtjoin(RRRRRR R Rvt formatvarargst formatvarkwt formatvaluet formatreturnsRqRwtspecst firstdefaulttiR tspect kwonlyargRu((R RqRvsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytinspect_formatargspecs2      (t formatargspeccOst|dd!|S(Nii(t_inspect_formatargspec(Rtkw((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyRUscgsg}g}d}zcyIx=|D]5}|j}|j}|j||j|qW|VWntj}nXWdxE|r|j}y||rd}nWq{tj}q{Xq{W|dkrt|d|d|dnXdS(sImplement contextlib.nested, mostly for unit tests. As tests still need to run on py2.6 we can't use multiple-with yet. Function is removed in py3k but also emits deprecation warning in 2.7 so just roll it here for everyone. Niii(NNN(NNN(NNN(Rt__exit__t __enter__R{Rbtexc_infoRaRL(tmanagerstexitstvars_texctmgrtexit_tenter((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytnestedfs,          cCse|dkrtj}n|\}}}||k r<|nd}tt||d|d|dS(NRJRK(RRbRRLttype(t exceptionRtexc_typet exc_valuetexc_tbRK((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytraise_from_causes  cs/dffdY}|ddiS(sCreate a base class with a metaclass. Drops the middle class upon creation. Source: http://lucumr.pocoo.org/2013/5/21/porting-to-python-3-redux/ t metaclasscs,eZejZejZfdZRS(cs2|dkr"tj||d|S||S(N((RRt__new__(tclsRst this_basestd(tbasestmeta(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyRs (t__name__t __module__RROt__init__R((RR(sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyRs  ttemporary_classN(R(RRR((RRsI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pytwith_metaclasss  (ii(ii(ii(ii(ii(ii(iii((gt__doc__t collectionst contextlibRtoperatorRbt version_infotpy36tpy33tpy35tpy32Rtpy2ktpy265tplatformt startswithtjythonRPtpypytwin32tcpythontcontextmanagert attrgettert dottedgettert namedtupletnextRt threadingt ImportErrortdummy_threadingt safe_kwargR^R'R8tbuiltinst configparsert itertoolstpicklet functoolsR(tioR)t byte_bufferR*R+t urllib.parseR,R-R.R/R0Rotbytest binary_typest binary_typet text_typetintt int_typestiterR\t filterfalsetitertools_filterfalsetfiltertitertools_filtertmaptitertools_imaptgetattrRWR_RjR6R9R;RARCRRLRMRNRRt ConfigParsert cStringIORSturllibturlparsetcPickleRfRktlongt ifilterfalsetifiltertimapRpRqRRRtcollections.abctabctcollections_abcRRR(((sI/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/compat.pyts             &     (                                5  #