|oi> ddlZn#e$r ddlmZYnwxYwddlZddlZddlmZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZ ddlZejrddlmZn #e$rYnwxYw ddlZdZn #e$rdZYnwxYwdZd Zd Zd Zer ddlZd Zd ZdZdZdadZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&Gddej'Z(dS)N) plugin_base)update_wrapper)SequenceTFc|dfd}tj|tjdS)N sqlalchemyc|ddrGfddtj|d<|ddr Gfddtj|d<j|fi|dS)NcallbackceZdZ dfd ZdS)=pytest_addoption..make_option..CallableActionNc"|||dSN)selfparser namespacevalues option_string callback_s z/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib64/python3.11/site-packages/sqlalchemy/testing/plugin/pytestplugin.py__call__zFpytest_addoption..make_option..CallableAction.__call__,sImVV<<<<<r)__name__ __module__ __qualname__r)rsrCallableActionr +s6CG========rractionzeroarg_callbackc8eZdZ dfd Z dfd ZxZS)r FNc \t|||dd|||dS)NrT)option_stringsdestnargsconstdefaultrequiredhelp)super__init__)rr!r"r%r&r'r __class__s rr)zFpytest_addoption..make_option..CallableAction.__init__7sK.$//88'5!" '!)!9rc"|||dSrr)rrrrrrs rrzFpytest_addoption..make_option..CallableAction.__call__Is %$]FFCCCCCr)FFNr)rrrr)r __classcell__)r*rrs@rrz=pytest_addoption..make_option..CallableAction6s} "" &DHDDDDDDDDDDr)popargparseAction addoption)namekwrrrgroups @@@r make_optionz%pytest_addoption..make_option'sFF:t,,  * = = = = = = = = = = *BxL66"4d;;  * D D D D D D D D D D D0*BxL#######r)getgroupr setup_options read_config)rr4r3s @rpytest_addoptionr8$sV OOL ) )E)$)$)$)$)$Vk***rc 4tjdt|dr9tj|jtj|jdnS|jjrGtj |jjrtj |jjtj |jtjtt!|jddtjt$dS)Nzsqlalchemy.testing.assertions workerinputfollower_ident cov_sourceF)pytestregister_assert_rewritehasattrr!restore_important_follower_configr:configure_followeroption write_identsospathexistsremove pre_beginset_coverage_flagboolgetattrset_fixture_functionsPytestFixtureFunctions)configs rpytest_configurerOVs "#BCCCv}%%25f6HIII&v'9:J'KLLLL = % 2"'.. M &+ +  2 Ifm0 1 1 1&-(((! WV]L% 8 899%&<=====rc,tjdSr)r post_beginsessions rpytest_sessionstartrTksrc,tjdSr)rfinal_process_cleanuprRs rpytest_sessionfinishrWos%'''''rctj|jdtjjddz|jd<ddlm}||jddS)Nztest_%sr r; provision) r!memoize_important_follower_configr:uuiduuid4hexsqlalchemy.testingr[create_follower_db)noder[s rpytest_configure_nodercvsr 5d6FGGG-69I!B$9O-O)*000000$$T%56F%GHHHHHrcRddlm}||jddS)NrrZr;)r`r[drop_follower_dbr:)rberrorr[s rpytest_testnodedownrgs7000000""4#34D#EFFFFFrctjd}d|D|dd<td|D}|D]}tj|j|jjD]}||jur||j}ttj dtj }||j |jj D]9} | D]"} || j | #:g} |D]V} | jj|vr1| || jj| j A| | Wt!| d|dd<dS)Nc4tjtSr) collections defaultdictlistrrrz/pytest_collection_modifyitems..s '--rcg|]G}t|jtj!|jjjdE|HS)_) isinstanceparentr=Instancer1 startswith.0items r z1pytest_collection_modifyitems..s\  dk6? 3 3 "'22377  rc3$K|] }|jV dSr)rqrts r z0pytest_collection_modifyitems..s$55tt{555555r from_parentr1rqc\|jjjj|jjj|jfSr)rqr1rvs rrmz/pytest_collection_modifyitems..s' K  % * K  # I r)key)rjrksetrgenerate_sub_testsclsrqmodulerKr=Classrcollectr1appendextendsorted) rSrNitems rebuilt_items test_classes test_classsub_cls per_cls_dictctorinsttnewitemsrvs rpytest_collection_modifyitemsrs +--ME!!!H55u55555L" 7 7 "5 NJ-4  7 7Gjn,,,Z^< v|]FLII D )*2C2J'))77D"\\^^77$QV,33A66667 7H"" ;?m + + OOM$+/:49E F F F F OOD ! ! ! !  E!!!HHHrc~tj|r\tj||rGt t jdt jfdtj|DStj |r6tt j rtj j |rdSgS)Nrzc4g|]}|jS)r{)r)ruparametrize_cls collectorrs rrwz-pytest_pycollect_makeitem..s;    Do.y A A A   r)inspectisclassr want_classrKr=r_parametrize_clsr isfunctionrprr want_methodr)rr1objrs` @rpytest_pycollect_makeitemrss 6tS A Av|]FLAA     #3I4Dc#J#J    3  y&/ 2 2   #IM3 7 7 t rcd|jvr|gS|j}g}tjd|DD]}i}t d|D|D]K\}}|st dt jd|}t ||jD] \} } | || < Ld d|D} |j d| } t t| |f|} t|| | || |S)z6implement a class-based version of pytest parametrize._sa_parametrizecg|]\}}|Srr)ruargnameparamss rrwz$_parametrize_cls..s 8 8 8_Wf& 8 8 8rcg|] }|d S)rr)ru _sa_params rrwz$_parametrize_cls..s ; ; ;iYq\ ; ; ;rz*need argnames for class-based combinationsz,\s*roc 3K|]D}|jdD]'}ttjdd|V(EdS)-z\WN)idsplitstrresub)ruparamtokens rryz#_parametrize_cls..ss% % ,, % %  ub%(( ) )% % % % % % % r)__dict__r itertoolsproductzip TypeErrorrrrjoinrtype__new__setattrr)rrrclassesfull_param_set cls_variablesrr argname_splitargvalparametrized_namer1newclss rrrsm ,,u )OG#+ 8 8 8 8 8 ! ; ;? ; ; ;^   ) )NGU N LMMMHWg66M u|<< ) )S%( c"" )HH% % ( % % %   ,,,(9(9:dD3&-@@f%%%v NrcttjsdStIt jjjjafd}jj|tdS)Nc>tjjdadSr)class_teardownrq_current_classr}srfinalizez&pytest_runtest_setup..finalizes 4;- . . .!NNNr)rpr=Functionr class_setuprq addfinalizer test_setup)rvrs` rpytest_runtest_setuprs dFO , ,DK&'''+  " " " " " ''111trc$t|dSr) test_teardownr}s rpytest_runtest_teardownrs $rcptj||jjj|jj|jdSr)r before_testrqrrrr1r}s rrr!s8 dk )4;?DIrc.tj|dSr)r after_testr}s rrr's4     rc8tj|jdSr)rstart_test_classrr}s rrr+s *****rc8tj|jdSr)rstop_test_classrr}s rrr/s)))))rc|tjjdkrtj|Stj|S)N)sys version_infomajorrgetfullargspec getargspec)fns rrr3s5 ""%b)))!"%%%rc>ddlmddlmddfd }|S)z:Port of langhelpers.decorator with pytest-specific tricks.r)format_argspec_plus)inspect_getfullargspecc2t||||Sr)exec)codeenvfn_names r_exec_code_in_envz/_pytest_fn_decorator.._exec_code_in_env@s T37|rrc|}|r|j|tdd|j}||dd|z}| |d|j}|s2t |d|j|_||_t||S|j |_ |j|_|S) Ntargetr)rrr1F)groupedzDdef %(name)s(%(args)s): return %(target)s(%(fn)s, %(apply_kw)s) )rrim_func) argsrdictrupdaterK __defaults__ __wrapped__rr) radd_positional_parametersspecmetadatar decoratedrrrrs rdecoratez&_pytest_fn_decorator..decorateDs%%b)) $ 8 I  6 7 7 7xDr{CCC++D%@@@AAA    &% V2..   ) %,RB%?%?%LI "$&I !!)R00 0 $&=I !#I  r)r)sqlalchemy.util.langhelpersrsqlalchemy.util.compatr)rrrrrs` @@@r_pytest_fn_decoratorr:sp@?????======< Orc>eZdZdZdeeddZdZdZdZ dZ d S) rMc.tjj|i|Sr)r=skip Exceptionrrr2s rskip_test_exceptionz*PytestFixtureFunctions.skip_test_exceptionfs{$c0R000rc|Srrrs rrmzPytestFixtureFunctions.jsrcXt|dr|jnt|jS)Nr)r?rrrs rrmzPytestFixtureFunctions.ms+ 3 # #  #YY r)irsnc J ddlmtjjdkr?t |dkr+t |ddrt|d}n>t |dkr+t |ddrt|d}|ddfd }|d d}g}d |r|j tj dgd t|DR} fd t|D}|D]vttsf|\}} ||dd} | rd|| | dfd|DfwnG|D]Dttsf|\}} | rd||| dfEg|D]4\} } }r| | fz } t#j| d|i} | 5fd} | S)aFacade for pytest.mark.parametrize. Automatically derives argument names from the callable which in our case is always a method on a class with positional arguments. ids for parameter sets are derived using an optional template. r) exclusionsrr__next__nextargnamesNcg}g}|D]B}t|jr||-||C||fSr)rpcompoundr)rresultgathered_exclusionsars r_filter_exclusionsz?PytestFixtureFunctions.combinations.._filter_exclusionssjF"$  % %a!455%'..q1111MM!$$$$.. .rid_Fc g|] \}}|dv | S))rrrrr)ruidxchars rrwz7PytestFixtureFunctions.combinations..s2!T333333rcVg|]%\}}|v tj||f&Sr)operator itemgetter)rurr_combination_id_fnss rrwz7PytestFixtureFunctions.combinations..sIC...$S))+>t+DE...rTrc3FK|]\}}||VdSrr)rugettercomb_fnrs rryz6PytestFixtureFunctions.combinations..sJ!!5DVWGGFF3KK00!!!!!!rrctj|r?rtdd|jvrg|_|jf|St |jdd}ntj d}r(|dgz }tfd}d}||d }tj ||S) Nz5exclusions not supported for class level combinationsrrz, * _exclusionsc|d}|r'j|}||}||ddi|S)Nr)r add)rrr2rexlurs rcheck_exclusionszOPytestFixtureFunctions.combinations..decorate..check_exclusionssY&*2h &*#<:#6#6#8#8#.decorate..process_metadatas ((77777r)r)r)rrNotImplementedErrorrrrrrrrrr=mark parametrize)r _argnamesr!r#r rhas_exclusions pytest_paramss rrz5PytestFixtureFunctions.combinations..decorates*r""# M!-O%BK77)+B&"))8]*CDDD # *2 3ABB 7II "!!I"-0I)5555*)5888*)6FB{..y-HHLLLr)r`rrrrlenr?rlr-rrr enumeraterptuplerrr=r)rarg_setsr2rrtobuild_pytest_params _arg_getterfns fn_paramsparam_exclusions parametersrrrrr rr(r)s @@@@@@r combinationsz#PytestFixtureFunctions.combinationsrs; 211111   !Q & &8}}!!ghqk:&F&F! ,,8}}!!ghqk6&B&B! ,,66*d++ / / / / /ffUD!! " 6 "&":  #-%.s^^K!*3C    !#u--!&C.@.@.E.E+ +([33ABB7 #*%)N%,,"(!!!!HK!!! .  !#u--!&C.@.@.E.E+ +#*%)N%,, 0$7 1F ( ( -J(# 2/11 L*555E   ' ' ' '$ M$ M$ M$ M$ M$ M$ M$ MLrcD|d}tj|ddd|iS)Nrrr)r=r)rr3idents r param_identz"PytestFixtureFunctions.param_idents(1 |Z^6666rc$tj|i|Sr)r=fixturers rr9zPytestFixtureFunctions.fixtures~s)b)))rc@tjdS)NPYTEST_CURRENT_TEST)rDenvironget)rs rget_current_test_namez,PytestFixtureFunctions.get_current_test_namesz~~3444rN) rrrrreprrrr4r7r9r>rrrrMrMes111_    IIIV777***55555rrM))sqla_plugin_baser ImportErrorrr.rj functoolsrrrrrDrrr=typing TYPE_CHECKINGrxdist has_xdistr8rOrTrWr]rcrgrrrrrrrrrrrrFixtureFunctionsrMrrrrHs*****$$$$$$ $MMM$######    D LLLIIIII///d>>>*((( GKKK I I IGGG 666r0   F6 !!!+++***&&&(((V`5`5`5`5`5[9`5`5`5`5`5s0 AAA!A((A21A2