ÿØÿà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@sdZddlmZddlmZddlmZddlmZddlmZdd lmZ dd lm Z dd l m Z iZ d efd YZdefdYZdefdYZedefdYZedefdYZedS(sqStrategies for creating new instances of Engine types. These are semi-private implementation classes which provide the underlying behavior for the "strategy" keyword argument available on :func:`~sqlalchemy.engine.create_engine`. Current available options are ``plain``, ``threadlocal``, and ``mock``. New strategies can be added via new ``EngineStrategy`` classes. i(t attrgetteri(tbase(t threadlocal(turli(tevent(tpool(tutil(tschematEngineStrategycBs eZdZdZdZRS(sAn adaptor that processes input arguments and produces an Engine. Provides a ``create`` method that receives input arguments and produces an instance of base.Engine or a subclass. cCs|t|jscs0t|d|}|dkr"dS|dS(Nt _sqla_unwrap(tgetattrR%(tdbapi_connectionR'tconn(t do_on_connect(sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pyt on_connects  t first_connectR&csKtjd|dt}tj|_j|j|jdS(NR)R"( Rt ConnectiontFalseRt immutabledictt_execution_optionst initializet do_rollbackR)(RGR'tc(R,tengine(sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pyRKs  tonce($Rtmake_urlt_instantiate_pluginstqueryRR%t_get_entrypointtget_dialect_clsRMRtget_cls_kwargstget_func_kwargsR thandle_dialect_kwargstcreate_connect_argstupdatetlisttget_pool_classtgetthandle_pool_kwargst isinstancetpoollibt dbapi_proxyt_DBProxytget_poolt_dialectt engine_clstTruet TypeErrortjoint __class__RRJRtlistentengine_created(R t name_or_urlRtuRt entrypointRt dialect_argsRDR t dbapi_argsRRR&R-R.t pool_argst translatettkt engineclasst engine_argsRARJRK((R*R+R,RRIRSRsO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pyR4s                         (RRRR(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pyR1stPlainEngineStrategycBseZdZdZejZRS(s*Strategy for configuring a regular Engine.tplain(RRRR RtEngineRi(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pyRzstThreadLocalEngineStrategycBseZdZdZejZRS(s=Strategy for configuring an Engine with threadlocal behavior.R(RRRR RtTLEngineRi(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pyR}stMockEngineStrategycBs6eZdZdZdZdejfdYZRS(sStrategy for configuring an Engine-like object with mocked execution. Produces a single mock Connectable object which dispatches statement execution to a passed-in function. tmockc Ksytj|}|j}i}x9tj|D](}||kr1|j||| tRhcCs |jjS(N(RhR (R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pyR RcKs|S(N((R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pytcontextual_connectscKs|S(N((R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pyR&scKs|S(N((R tkw((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pytexecution_optionsscKs|jj||d||S(NRS(Rhtcompiler(R t statementt parametersR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/engine/strategies.pyRs cKs=t|ds"P