`V\ƿ-G6dZddlmZddlmZddlmZddlmZddlmZdd lmZ dd lm Z dd l m Z iZ Gd d eZGddeZGddeZeGddeZeGddeZedS)aqStrategies 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. ) attrgetter)base) threadlocal)url)event)pool)util)schemaceZdZdZdZdZdS)EngineStrategyzAn 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. c$|t|j<dSN) strategiesname)selfs /srv/buildsys-work-dir/castor/build_node/builder-2/WGSG1/unpkd_srcs/cloudlinux-venv-1.0.6/venv/lib/python3.11/site-packages/sqlalchemy/engine/strategies.py__init__zEngineStrategy.__init__(s $ 49ct)z/Given arguments, returns a new Engine instance.NotImplementedError)rargskwargss rcreatezEngineStrategy.create+s"###rN)__name__ __module__ __qualname____doc__rrrrrr s<%%%$$$$$rrceZdZdZdZdS)DefaultEngineStrategyz#Base class for built-in strategies.c tj|}|}|jdddd|}||ddrd%fd }nj}i}tjD]}|vr||||<dd} | =i} tj j D]}|vr||| |<j d&i| } | |d<|D]} | |d&i| |\ |dit|d d} | d%fd } |d | }|d d}||}d i}dddddddddd }tj|D]*}|||}|vr||||<+|D]} | ||||fi|} n6t%| t&jjr| ji} n| } | _|j}i}tj|D]}|vr||||<dd}rRt3dddDdjjd| jjd|jd || |fi||rer1fd }t=j| d!|t=j| d"|fd#}t=j| d!|d$ |ur| |D]} | S)'Npluginplugins_coerce_configFcr||}|jvrj||}|Sr)popengine_config_types)keydefaultvalue dialect_clsrs r pop_kwargz/DefaultEngineStrategy.create..pop_kwargBs@ 300+999@K;C@GGE rmoduledbapi connect_argsr crjr#jjD]}||}||cSjiSr) _has_eventsdispatch do_connectconnect)connection_recordfn connectioncargscparamsdialects rr7z-DefaultEngineStrategy.create..connectjsn&.%.9..%'R#%6w&& &1#----2&w9999rcreator poolclassr=pool_logging_name echo_pool pool_timeout pool_recycle pool_eventspool_threadlocalpool_reset_on_return pool_pre_ping pool_use_lifo) logging_nameechotimeoutrecycleeventsuse_threadlocalreset_on_returnpre_pinguse_lifo _initializeTzInvalid argument(s) ,c3 K|] }d|zV dS)z'%s'Nr!).0ks r z/DefaultEngineStrategy.create..s&88AVaZ888888rz. sent to create_engine(), using configuration /z^. Please check that the keyword arguments are appropriate for this combination of components.cHt|d|}|dS|dS)N _sqla_unwrap)getattr)dbapi_connectionr8conn do_on_connects r on_connectz0DefaultEngineStrategy.create..on_connects<"(.:JD|!M$'''''r first_connectr7ctj|d}tj|_||jdS)NF)r:r4)r Connectionr immutabledict_execution_options initialize do_rollbackr:)r\r8cr=engines rr`z3DefaultEngineStrategy.create..first_connectsdO'7U(,'9';';$""1%%%##AL11111r)_once_unless_exceptionrr!)!rmake_url_instantiate_pluginsqueryr)_get_entrypointget_dialect_clsr get_cls_kwargsget_func_kwargsr1handle_dialect_kwargscreate_connect_argsupdatelistget_pool_classgethandle_pool_kwargs isinstancepoollib dbapi_proxy_DBProxyget_pool_dialect engine_cls TypeErrorjoin __class__rr_r listenengine_created)r name_or_urlrur& entrypointr/ dialect_argsrVr1 dbapi_argsr%r r7r>r? pool_args translatetk engineclass engine_argsrRr_r`r;r<r=r.r^rhs ` @@@@@@rrzDefaultEngineStrategy.create4s] L % %((00  Hd### 9d###&&((  0033 ::& . . #         I $[11 / /AF{{"+)A,, Q 8T** =J)+*;<< 1 1;;$-IaLLJqM%K%33 33E % W D DF  ( (l C C C C+-- --#66q99yy44555U y&& < : : : : : : : : i 733G! +t44I '66q99 "G,I !4#))'#5#9++  I(33 1 1]]1a((<<#,9R==IaL! @ @)))Y????9W22 22DD$ 3 <== $t}e7w77#DMo  $[11 . .AF{{!*1 Ajj55   ) HH888888888%...N+++(((    T7A====  #..00M :((((( T?J??? T9j999 2 2 2 2 2 2 L'+      ""6*** [ ( (  % %f - - - * *F  ! !& ) ) ) ) rN)rrrr rr!rrr#r#1s.--dddddrr#c$eZdZdZdZejZdS)PlainEngineStrategyz*Strategy for configuring a regular Engine.plainN)rrrr rrEnginer~r!rrrrs 44 DJJJrrc$eZdZdZdZejZdS)ThreadLocalEngineStrategyz=Strategy for configuring an Engine with threadlocal behavior.rN)rrrr rrTLEnginer~r!rrrrs!GG D%JJJrrcBeZdZdZdZdZGddejZdS)MockEngineStrategyzStrategy for configuring an Engine-like object with mocked execution. Produces a single mock Connectable object which dispatches statement execution to a passed-in function. mockc tj|}|}i}tj|D]}||vr||||<|di|}t ||S)Nr!)rrj get_dialectr ror)rMockConnection) rrexecutorrrr.rrVr=s rrzMockEngineStrategy.creates L % %mmoo  $[11 0 0AF{{"(**Q-- Q+-- --!00(CCCrceZdZdZedZeedZedZe j dZ dZ dZ dZd Zd Zd Z dd Zd ZdS)!MockEngineStrategy.MockConnectionc"||_||_dSr)r}execute)rr=rs rrz*MockEngineStrategy.MockConnection.__init__ s#DM"DLLLrc|Srr!ss rz*MockEngineStrategy.MockConnection.sArr}c|jjSr)r}rrs rrz*MockEngineStrategy.MockConnection.s !*/rNc |Srr!rrs rcontextual_connectz4MockEngineStrategy.MockConnection.contextual_connectKrc |Srr!rs rr7z)MockEngineStrategy.MockConnection.connectrrc |Srr!)rkws rexecution_optionsz3MockEngineStrategy.MockConnection.execution_optionsrrc .|jj||fd|i|S)Nrh)r}compiler)r statement parametersrs rrz*MockEngineStrategy.MockConnection.compilers5)4=):.26< rc jd|d<ddlm}|j|j|fi||dSNF checkfirstr)ddl)sqlalchemy.enginerSchemaGeneratorr=traverse_singlerentityrrs rrz(MockEngineStrategy.MockConnection.create#s\#(F< - - - - - - C  d = =f = = M M     rc jd|d<ddlm}|j|j|fi||dSr)rr SchemaDropperr=rrs rdropz&MockEngineStrategy.MockConnection.drop+s\#(F< - - - - - - C dlD ; ;F ; ; K K     rc Td|d<||j|fi||dS)NFr)r=r)rvisitorcallableelementr:rs r _run_visitorz.MockEngineStrategy.MockConnection._run_visitor3sI$)F< ODL$ 9 9& 9 9 I I     rctrr)robject_ multiparamsparamss rrz)MockEngineStrategy.MockConnection.execute;s%'' 'rr)rrrrpropertyrhrr=rr _schema_getterschema_for_objectrr7rrrrrrr!rrrr s # # #++&&(::j1122x11221F1$77                   8<     ( ( ( ( (rrN) rrrr rrr Connectablerr!rrrrsd DDDD"2(2(2(2(2()2(2(2(2(2(rrN)r operatorrrrrr r ryr sqlr robjectrr#rrrr!rrrs  $$$$$V$$$"gggggNgggT/&&&&& 5&&&M(M(M(M(M(M(M(M(`r