U aze@sddlZddlZddlZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl m Z dd l mZdd l mZd d lmZd d lm Z d dlmZd dlmZd dlmZd dlmZeGdddeZdaejddZGdddeZGdddeZGdddeZe Z!ddZ"ddZ#d d!Z$d"d#Z%Gd$d%d%eZ&Gd&d'd'eej'Z(Gd(d)d)e(Z)Gd*d+d+eZ*dS),N) assertions)configschema) BasicEntity)ComparableEntity)ComparableMixin)adict)drop_all_tables_from_metadata)event)util)declarative_base)registry)DeclarativeMeta)sort_tables_and_constraintsc@seZdZdZdZdZdZdZdddZe ddZ e dd Z e d d Z e d d Ze ddZe ddZe ddZe ddZe j dddDdddZdS)TestBaseNFcCs|s t|dSN)AssertionError)selfvalmsgrr\C:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\testing\fixtures.pyassert_2szTestBase.assert_c cs0t|ddptj}| }|VW5QRXdSNbind)getattrrdbconnect)rengconnrrrconnection_no_trans5s zTestBase.connection_no_transccsJt|ddptj}|}|}|a|Vda|jr>||dSr) rrrr begin_connection_fixture_connectionZ is_activerollbackclose)rr!r"transrrr connection<szTestBase.connectionccst|d}|V|dS)N)metadata)rdispose)rr*regrrrrQs zTestBase.registryccs |VdSrr)r future_enginer)rrrfuture_connectionWszTestBase.future_connectionc cs0t|ddptj}t| dVW5QRXdSrrrr_push_future_enginerr!rrrr-^s zTestBase.future_enginec#s0ddlmdfdd }|VjddS)NrenginesFcs(|dkr i}d|d<j|||||dS)NfixturescopeurloptionsfutureasyncioZtransfer_staticpooltesting_enginer6r2rrgen_testing_enginehsz3TestBase.testing_engine..gen_testing_enginer4)NNNFF)r3Ztesting_reaperZ_drop_testing_engines)rr=rr2rr<ds zTestBase.testing_enginecsfdd}|S)Ncsd|d<f|S)NTr:r)kwr;rrgosz)TestBase.async_testing_engine..gor)rr<r@rr;rasync_testing_engine~s zTestBase.async_testing_enginec cstddlm}|}||j_|V|j`trdtrdt}|t t |tW5QRXn t |t j dS)z>Provide bound MetaData for a single test, dropping afterwards.r rN) ZsqlrMetaDatainstancer*r%Zin_transactionZget_transactionr&r$r rr)rrequestrr*r(rrrr*s"  zTestBase.metadatacCs*g|]"}dD]}dD]}|||fqq qS))noneexecuter$TFr).0r&second_operation begin_nestedrrr s zTestBase.rG)paramscs~|j\ddlm}m}m}mmddlm|d||d|t |ddpVt j } |fdd }|S) Nr)TableColumnIntegerfuncselectr)eq_testdatarc s|P}r@tjjjs&td|r4|}n|}||r\|ddin|ddir~| n| dkrt t jjd\dkr|r|ddiq|ddindkr|r|n|W5QRXW5QRX|r(|dd in|dd in|r\|ddin|ddi|rr| n| nr| n| dkrVt t jjddkr|r|ddin|ddinLdkr*t|dr |n|n"d krL|rD|n|W5QRXW5QRXd }rr|d 7}s|d 7}|r||n2|$}||W5QRXdS) Nzsavepoints not enabledrT rEzCan't operate on closed transaction inside context manager. Please complete the context manager before emitting further commands.rF r$rJrr)r$r requirementsZ savepointsenabledZ skip_testrJrFinsertr&commitrZexpect_raises_messagesaexcZInvalidRequestErrorhasattrZscalarcount select_fromr )subjectZtrans_on_subjectZexecute_on_subjectr(Z nested_transZexpected_committedr"rJrRrPr&rIrQtrrrun_tests                   z4TestBase.trans_ctx_manager_fixture..run_test) param sqlalchemyrMrNrOrPrQr>rRrrrcreate)rrDr*rMrNrOr!rdrrbrtrans_ctx_manager_fixtures   xz"TestBase.trans_ctx_manager_fixture)N)__name__ __module__ __qualname__ __requires__Z__unsupported_on__Z __only_on__Z __skip_if__Z"__leave_connections_for_teardown__rrr4r#r)rr.r-r<rAr*rhrrrrrs8          rccsFddlm}ddlm}||}tj|||Vtj|dS)Nr )Enginertesting) Z future.enginermrfroZ_future_facader_currentZ push_enginepop)ZenginermroZfacaderrrr02s    r0c@s"eZdZejdddddZdS)FutureEngineMixinTclassZautouser5c cs0t|ddptj}t| dVW5QRXdSrr/r1rrrr0As z%FutureEngineMixin._push_future_engineN)rirjrkrr4r0rrrrrr@s rrc@seZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ ejdddddZejdd dd d Zed d ZeddZeddZeddZddZddZddZeddZeddZeddZed d!Zed"d#Zed$d%Z d&d'Z!d(d)Z"ed*d+Z#dS), TablesTestonceeachNTrsrtccs0|j}|||dV|dSr) __class__ _init_class_setup_once_tables_setup_once_inserts_teardown_once_metadata_bindrclsrrr_setup_tables_test_classbs z#TablesTest._setup_tables_test_classfunctionccs"||dV|dSr)_setup_each_tables_setup_each_inserts_teardown_each_tablesrrrr_setup_tables_test_instanceosz&TablesTest._setup_tables_test_instancecCs|jSr)_tables_metadatarrrrtables_test_metadataxszTablesTest.tables_test_metadatacCsX|jdkr(|jdkrd|_|jdks(tt|_t|_t|_||_ t |_ dS)Nrwrv)rwN) run_define_tablesrun_create_tables run_insertsrr othertables sequences setup_bindrr\rBrr~rrrry|s   zTablesTest._init_classc Cs6|jdkr2||j}||W5QRXdSNrvr_load_fixturesrr$ insert_data)r~r"rrrr{s  zTablesTest._setup_once_insertscCsR|jdkrN||j|jdkr.|j|j|j|jj|j|jj dSr r define_tablesrr create_allrrupdaterZ _sequencesrrrrrzs    zTablesTest._setup_once_tablescCsl|jdkrP||j|jdkr.|j|j|j|jj|j|jj n|jdkrh|j|jdSNrwrrrrrrs    zTablesTest._setup_each_tablesc Cs6|jdkr2||j}||W5QRXdSrr)rr"rrrrs  zTablesTest._setup_each_insertsc Cs|jdkr8|j|jdkr,t|j|j|jn|jdkrPt|j|j|jdkr|jdkr|jdkr|j|}t ddt |jj DD]V}z| | Wqtjjk r}ztjd||ftjdW5d}~XYqXqW5QRXdS)NrwcSsg|]\}}|dk r|qSrr)rHrcfksrrrrKsz4TablesTest._teardown_each_tables..zError emptying table %s: %r)file)rrclearrr rr run_deletesr$reversedrvaluesrFdeleter\r]Z DBAPIErrorrprint_sysstderr)rr"tableexrrrrs8         z TablesTest._teardown_each_tablescCsF|jrt|j|j|jdkr*||jd|j_|jdk rBd|_dSr)rr rrrun_dispose_bind dispose_bindrun_setup_bindrrrrr|s   z'TablesTest._teardown_once_metadata_bindcCstjSr)rrrrrrrszTablesTest.setup_bindcCs*t|dr|nt|dr&|dS)Nr+r')r^r+r')r~rrrrrs   zTablesTest.dispose_bindcCsdSrr)r~r*rrrrszTablesTest.define_tablescCsiSrrrrrrfixturesszTablesTest.fixturescCsdSrr)r~r)rrrrszTablesTest.insert_datacCs||j||dSr)Zassert_sql_countr)rr_fnrrr sql_count_szTablesTest.sql_count_cCs||j||dSr)Z assert_sqlr)rZ callable_Z statementsrrrsql_eq_szTablesTest.sql_eq_c sii}|D]H\}t|dkr,qttjrB|j|d<|dd|<qt|jj D]V\}dkrqpkrqp|j *}|  fdd|DW5QRXqpdS)z4Insert rows as represented by the fixtures() method.r rrNcsg|]}tt|qSr)dictzip)rHZ column_valuesheadersrrrrK sz-TablesTest._load_fixtures..)ritemslen isinstancer string_typesrrrrrr$rFrZ)r~rowsrTrr"rrrrs,        zTablesTest._load_fixtures)$rirjrkrrrrrrrrrrrrr4rrpropertyr classmethodryr{rzrrrr|rrrrrrrrrrrrruHsT        !      ruc@s8eZdZejddZddZejddddd Z d S) RemovesEventscCstSr)setrrrr _event_fnsszRemovesEvents._event_fnscKs(|j|||ftj|||f|dSr)raddr listen)rtargetnamerr?rrr event_listenszRemovesEvents.event_listenTrrtccs dV|jD]}tj|q dSr)rr remove)rkeyrrr_remove_eventss zRemovesEvents._remove_eventsN) rirjrkrZmemoized_propertyrrrr4rrrrrrs   rcKs8|dd|ddtjjtjf|}t||S)NZ autoflushTZexpire_on_commit) setdefaultr\ormSessionrr_fixture_sessionsr)r?sessrrrfixture_session$s    rcCstjjtdSr)r\rsessionclose_all_sessionsrrrrrr_close_all_sessions,s rcCsttjdSr)rr\r clear_mappersrrrrstop_test_class_inside_fixtures2srcCstr tdSr)rrrrrr after_test7src@s eZdZdS)ORMTestNrirjrkrrrrr<src@seZdZdZdZdZejdddddZejdd dd d Z e d d Z e ddZ e ddZ ddZddZe ddZe ddZddZddZe ddZe d d!ZdS)" MappedTestrvrwNTrsrtccsZ|j}||jdkr t|_||||dV|| dSr) rxryclassesr rz_setup_once_classes_setup_once_mappersr{_teardown_once_classr|r}rrrrIs z#MappedTest._setup_tables_test_classrccsN||||dVtjj|| | dSr) r_setup_each_classes_setup_each_mappersrr\rrr_teardown_each_mappers_teardown_each_classesrrrrrr[s z&MappedTest._setup_tables_test_instancecCs|jdSr)rrrrrrriszMappedTest._teardown_once_classcCs|jdkr||jdSrrun_setup_classes_with_register_classes setup_classesrrrrrms zMappedTest._setup_once_classescCs$|jdkr ||_||jdSr)run_setup_mappers_generate_mappermapperr setup_mappersrrrrrrs  zMappedTest._setup_once_mapperscCs&|jdkr"||j_||jdSr)rrrxrrrrrrrrxs  zMappedTest._setup_each_mapperscCs|jdkr||jdSrrrrrrr}s zMappedTest._setup_each_classescCs t}|jSr)rZmap_imperatively)r~declrrrrszMappedTest._generate_mappercsx|jdk stGfdddt}Gdddt|t}Gdddt|}Gdd d t|}||_||_ |dS) zRun a setup method, framing the operation with a Base class that will catch new subclasses to be established within the "classes" registry. NcseZdZfddZdS)z6MappedTest._with_register_classes..FindFixturecs||<t||||dSr)type__init__r~ classnamebasesZdict_Z cls_registryrrrsz?MappedTest._with_register_classes..FindFixture.__init__Nrirjrkrrrrr FindFixturesrc@s eZdZdS)z0MappedTest._with_register_classes.._BaseNrrrrr_Basesrc@s eZdZdS)z0MappedTest._with_register_classes..BasicNrrrrrBasicsrc@s eZdZdS)z5MappedTest._with_register_classes..ComparableNrrrrr Comparablesr) rrrrwith_metaclassobjectrrrr)r~rrrrrrrrrs z!MappedTest._with_register_classescCs|jdkrtjdSr)rr\rrrrrrrs z!MappedTest._teardown_each_mapperscCs|jdkr|jdSr)rrrrrrrrs z!MappedTest._teardown_each_classescCsdSrrrrrrrszMappedTest.setup_classescCsdSrrrrrrrszMappedTest.setup_mappers)rirjrkrrrrr4rrrrrrrrrrrrrrrrrrr@s2          rcs4eZdZdZdZeddZefddZZS)DeclarativeMappedTestrvcCsdSrrrrrrrzsz(DeclarativeMappedTest._setup_once_tablescsp|jGfdddt}Gdddt}t|j||d}||_tt|||jj rl|j rl|j t j dS)NcseZdZfddZdS)zLDeclarativeMappedTest._with_register_classes..FindFixtureDeclarativecs||<t||||dSr)rrrrrrrszUDeclarativeMappedTest._with_register_classes..FindFixtureDeclarative.__init__NrrrrrFindFixtureDeclarativesrc@seZdZejZdS)zFDeclarativeMappedTest._with_register_classes..DeclarativeBasicN)rirjrkrrMZ __table_cls__rrrrDeclarativeBasicsr)r* metaclassr~)rrrrrrsuperrrrrrrr)r~rrrZ _DeclBaserxrrrsz,DeclarativeMappedTest._with_register_classes) rirjrkrrrrzr __classcell__rrrrrs  rc@s:eZdZdZZdZdZedZ ddZ e ddZ dS) ComputedReflectionFixtureTestNT)Zcomputed_columnsZtable_reflectionz[\[\]\(\)\s`'\"]*cCs|jd|S)Nr>)regexpsublower)rtextrrr normalizesz'ComputedReflectionFixtureTest.normalizec Csxddlm}ddlm}ddlm}ddlm}ddlm}|d||d|d d |d ||d ||d |d|dd|d||d|d d |d ||d||d }|jjj r|d||d|d d |d ||d||dt j d}|jj j r(| |d||ddd|jjj r(| |d||ddd|jjj rt| |d||dd d|jjj rt| |d||dd ddS)Nr )rOrn)rN)Computed)rMZcomputed_default_tableidT)Z primary_keynormalZ computed_colz normal + 42Z with_defaultZ42)Zserver_defaultZcomputed_column_tableZcomputed_no_flagz normal / 42rZcomputed_virtualz normal + 2F)Z persistedz normal / 2Zcomputed_storedz normal - 42z normal * 42)r>rOrorrNrrMrequiresZschemasrYrZ test_schemaZcomputed_columns_virtualZ append_columnZcomputed_columns_stored) r~r*rOrorNrrMrct2rrrrsz                   z+ComputedReflectionFixtureTest.define_tables) rirjrkrrZ __backend__rlrecompilerrrrrrrrrs r)+ contextlibrrrfr\r>rrrentitiesrrr rr r r rrrZ orm.decl_apirrZmark_base_test_classrrr%contextmanagerr0rrrurrrrrrrrZAssertsExecutionResultsrrrrrrrsJ               Jw$