ó
    øÞ j©Z  ã                  óª  • % S SK Jr  S SKrS SKJr  S SKrS SKqS SKrS SKJ	r	  S SK
r
S SKrS SKJr  S SKJr   Sr[        R"                  " S5      rSqSqSqSqSqSqSqSrSqSqSqSqSq\" 5       r \" 5       r!Sq"S	\#S
'   S r$S r%S r&S r'S r(S r)S r*S r+S r,S r-S r.S r/S r0S r1S r2/ r3/ r4S r5S r6\5S 5       r7\5S 5       r8\6S 5       r9\6S 5       r:\5S  5       r;\6S! 5       r<\6S" 5       r=S# r>\6S$ 5       r?\6S% 5       r@\6S& 5       rAS' rBS( rCS) rDS* rES+ rFS, rGS- rHS. rIS/ rJS0 rKS1 rLS2 rM S9S3 jrNS4 rOS5 rP " S6 S7\R¢                  5      rRSqSS8 rTg):é    )ÚannotationsN)Ú	Namespace)ÚPath)ÚAny)ÚasyncioFzsqlalchemy.testing.plugin_baser   Úoptionsc           	     óÂ  • U " SS[         [        SS9  U " SS[         [        SS9  U " SS[         S	S
S9  U " SS[        SS9  U " SS[         SSS9  U " SS[         SSS9  U " SSSSS9  U " SSSS9  U " SS[        S5      SS9  U " S S[	        S!5      S"S9  U " S#S[	        S$5      S%S9  U " S&S[	        S'5      S(S9  U " S)[         S*S+S,S-9  U " S.[         S/S0S19  U " S2SS3S4S9  U " S5[         S6S7S19  U " S8S[         [
        S9S9  U " S:S[        [         S;S<9  U " S=S[        [         S>S<9  U " S?SS@SASBSC9  U " SDSSESASFSC9  U " SG[         SHSIS19  U " SJ[         S/ SKSLSM9  U " SN[         SOSP9  U " SQSSRS9  g )SNz
--log-infoÚcallbackz,turn on info logging for <LOG> (multiple OK))ÚactionÚtyper
   Úhelpz--log-debugz-turn on debug logging for <LOG> (multiple OK)z--dbÚappendÚdbzBUse prefab database uri. Multiple OK, first one is run by default.)r   r   Údestr   z--dbszList available prefab dbs)r   Úzeroarg_callbackr   z--dburiÚdburiz8Database uri.  Multiple OK, first one is run by default.z
--dbdriverÚdbdriverz|Additional database drivers to include in tests.  These are linked to the existing database URLs by the provisioning system.z--dropfirstÚ
store_trueÚ	dropfirstz,Drop all tables in the target database first)r   r   r   z--disable-asyncioz9disable test / fixtures / provisioning running in asyncio)r   r   z--backend-onlyÚbackendz}Run only tests marked with __backend__ or __sparse_backend__; this is now equivalent to the pytest -m backend mark expressionz
--nomemoryÚmemory_intensivezpDon't run memory profiling tests; this is now equivalent to the pytest -m 'not memory_intensive' mark expressionz--notimingintensiveÚtiming_intensivezpDon't run timing intensive tests; this is now equivalent to the pytest -m 'not timing_intensive' mark expressionz--nomypyÚmypyz_Don't run mypy typing tests; this is now equivalent to the pytest -m 'not mypy' mark expressionz--profile-sortÚ
cumulativeÚprofilesortz*Type of sort for profiling standard output)r   Údefaultr   r   z--profile-dumpÚprofiledumpz2Filename where a single profile run will be dumped)r   r   r   z--low-connectionsÚlow_connectionsz>Use a low number of distinct connections - i.e. for Oracle TNSz--write-identsÚwrite_identszCwrite out generated follower idents to <file>, when -n<num> is usedz--requirementsz3requirements class for testing, overrides setup.cfgz--include-tagzAInclude tests with tag <tag>; legacy, use pytest -m 'tag' instead)r   r
   r   r   z--exclude-tagzEExclude tests with tag <tag>; legacy, use pytest -m 'not tag' insteadz--write-profilesÚwrite_profilesFz$Write/update failing profiling data.)r   r   r   r   z--force-write-profilesÚforce_write_profilesz,Unconditionally write/update profiling data.z--dump-pyannotateÚdump_pyannotatez/Run pyannotate and dump json info to given filez--mypy-extra-test-pathÚmypy_extra_test_pathszlAdditional test directories to add to the mypy tests. This is used only when running mypy tests. Multiple OK)r   r   r   r   r   z--postgresql-templatedbz^name of template database to use for PostgreSQL CREATE DATABASE (defaults to current database))r   r   z--oracledb-thick-modez:enables the 'thick mode' when testing with oracle+oracledb)ÚstrÚ_logÚ	_list_dbsÚ_set_tag_includeÚ_set_tag_excludeÚ_requirements_optÚ_include_tagÚ_exclude_tag)Úmake_options    Ú_/var/www/html/gaurav/venv/lib/python3.13/site-packages/sqlalchemy/testing/plugin/plugin_base.pyÚsetup_optionsr.   ;   su  € ÙØØÜÜØ;òñ ØØÜÜØ<òñ ØØÜØð'òñ ØØÜ"Ø(ò	ñ ØØÜØØGòñ ØØÜØðòñ ØØØØ;ò	ñ ØØØHòñ
 ØØÜ)¨)Ó4ðNòñ ØØÜ)Ð*<Ó=ðò	ñ ØØÜ)Ð*<Ó=ðò	ñ ØØÜ)¨&Ó1ðMò	ñ ØÜØØØ9òñ ØÜØØAò	ñ ØØØðò	ñ ØÜØðò	ñ ØØÜÜ"ØBòñ ØØÜÜð.òñ ØØÜÜð2òñ ØØØØØ3òñ Ø ØØ#ØØ;òñ ØÜØØ>ò	ñ Ø ÜØØØ$ðAòñ Ø!Üð9òñ ØØØIóó    c                ó   • SSK Jn  Xl        g)zxConfigure required state for a follower.

This invokes in the parent process and typically includes
database creation.

r   ©Ú	provisionN)Úsqlalchemy.testingr2   ÚFOLLOWER_IDENT)Úfollower_identr2   s     r-   Úconfigure_followerr6   ð   s   € õ -à-Õr/   c                ó   • g)z£Store important configuration we will need to send to a follower.

This invokes in the parent process after normal config is set up.

Hook is currently not used.

N© ©Údict_s    r-   Ú!memoize_important_follower_configr;   ü   ó   � r/   c                ó   • g)z{Restore important configuration needed by a follower.

This invokes in the follower process.

Hook is currently not used.

Nr8   r9   s    r-   Ú!restore_important_follower_configr>     r<   r/   c                óŒ   • [         R                  " 5       q[        R                  [	        U S-  5      [	        U S-  5      /5        g )Nz	setup.cfgztest.cfg)ÚconfigparserÚConfigParserÚfile_configÚreadr$   )Ú	root_paths    r-   Úread_configrE     s:   € ä×+Ò+Ó-€KÜ×ÑÜ	ˆY˜Ñ$Ó	%¤s¨9°zÑ+AÓ'BÐCõr/   c                óD   • U q [         H  nU" [         [        5        M     g)z7things to set up early, before coverage might be setup.N)r   Úpre_configurerB   )ÚoptÚfns     r-   Ú	pre_beginrJ     s   € ð €GßˆÙ
Œ7”KÖ ò r/   c                ó   • U [         l        g ©N)r   Úhas_coverage)Úvalues    r-   Úset_coverage_flagrO      s
   € Ø „GÕr/   c                 ó¸   • [          H  n U " [        [        5        M     SSKJq  SSKJqJqJq  SSKJ	q	J
q
Jq  SSKJqJq  SSKJq  [        R                  5         g)z9things to set up later, once we know coverage is running.r   ©Útesting)ÚfixturesÚenginesÚ
exclusions)Ú
assertionsÚwarningsÚ	profiling)Úconfigr2   )ÚutilN)Úpost_configurer   rB   Ú
sqlalchemyrR   r3   rS   rT   rU   rV   rW   rX   rY   r2   rZ   Úsetup_filters©rI   s    r-   Ú
post_beginr_   $  s;   € ÷ ˆÙ
Œ7”KÖ ñ õ #ß@Ñ@ßBÑBß4Ýä×ÑÕr/   c                ót  • [         (       d  SS K q [         R                  " 5         U R                  S5      (       a4  [         R                  " U5      R	                  [         R
                  5        g U R                  S5      (       a4  [         R                  " U5      R	                  [         R                  5        g g )Nr   z-infoz-debug)ÚloggingÚbasicConfigÚendswithÚ	getLoggerÚsetLevelÚINFOÚDEBUG©Úopt_strrN   Úparsers      r-   r%   r%   6  sw   € çŠ7Ûä×ÒÔà×Ñ˜× Ñ Ü×Ò˜%Ó ×)Ñ)¬'¯,©,Õ7Ø	×	Ñ	˜(×	#Ñ	#Ü×Ò˜%Ó ×)Ñ)¬'¯-©-Õ8ð 
$r/   c            	     ó(  • [         c  [        [        R                  " 5       5        [	        S5        [        [         R                  S5      5       H*  n[	        U<S S[         R                  SU5      < 35        M,     [        R                  " S5        g )Nz0Available --db options (use --dburi to override)r   z>20Ú	r   )
rB   rE   r   ÚcwdÚprintÚsortedr   ÚgetÚsysÚexit)ÚargsÚmacros     r-   r&   r&   C  s^   € ÜÑô 	”D—H’H“JÔÜ	Ð
<Ô=Üœ×+Ñ+¨DÓ1Ö2ˆÜœE¤;§?¡?°4¸Õ#?Ð@ÖAñ 3ä‡H‚HˆQ…Kr/   c                ó   • [        U5        g rL   )Ú_setup_requirementsrh   s      r-   r)   r)   N  s
   € Ü˜Õr/   c                ó   ^ • U 4S jnU$ )Nc                ó    >• [        U TU5        g rL   )r*   ©ri   rN   rj   Útags      €r-   Ú_do_include_tagÚ)_set_tag_include.<locals>._do_include_tagS  ó   ø€ Ü�W˜c 6Õ*r/   r8   )rz   r{   s   ` r-   r'   r'   R  ó   ø€ õ+ð Ðr/   c                ó   ^ • U 4S jnU$ )Nc                ó    >• [        U TU5        g rL   )r+   ry   s      €r-   Ú_do_exclude_tagÚ)_set_tag_exclude.<locals>._do_exclude_tagZ  r}   r/   r8   )rz   r�   s   ` r-   r(   r(   Y  r~   r/   c                óN   • [         R                  UR                  SS5      5        g ©NÚ-Ú_)Úexclude_tagsÚaddÚreplacerh   s      r-   r+   r+   `  ó   € Ü×Ñ�U—]‘] 3¨Ó,Õ-r/   c                óN   • [         R                  UR                  SS5      5        g r„   )Úinclude_tagsrˆ   r‰   rh   s      r-   r*   r*   d  rŠ   r/   c                ó0   • [         R                  U 5        U $ rL   )rG   r   r^   s    r-   ÚprerŽ   l  s   € Ü×Ñ˜ÔØ€Ir/   c                ó0   • [         R                  U 5        U $ rL   )r[   r   r^   s    r-   Úpostr�   q  s   € Ü×Ñ˜"ÔØ€Ir/   c                ó   • U q g rL   ©r   ©rH   rB   s     r-   Ú_setup_optionsr”   v  s	   € ð �Gr/   c                ó\   • SSK Jn  UR                  SSS5        UR                  SSS5        g )Nr   )Úregistryzsqlite.pysqlite_numericz#sqlalchemy.dialects.sqlite.pysqliteÚ_SQLiteDialect_pysqlite_numericzsqlite.pysqlite_dollarÚ_SQLiteDialect_pysqlite_dollar)Úsqlalchemy.dialectsr–   Úregister)rH   rB   r–   s      r-   Ú _register_sqlite_numeric_dialectr›   |  s5   € å,à×ÑØ!Ø-Ø)ôð
 ×ÑØ Ø-Ø(õr/   c                ó¤   • [         R                  R                  SS5      S:X  a  SSKJn   U" SS9  g g ! [
         a  n[        S5      UeS nAff = f)	NÚREQUIRE_SQLALCHEMY_CEXTÚ0Ú1r   )Úhas_compiled_extT)Úraise_zEREQUIRE_SQLALCHEMY_CEXT is set but can't import the cython extensions)ÚosÚenvironrp   Úsqlalchemy.utilr    ÚImportErrorÚAssertionError)rH   rB   r    Úerrs       r-   Ú__ensure_cextr¨   Œ  sX   € ä	‡z�z‡~�~Ð/°Ó5¸Ó<Ý4ð	Ù DÓ)ð	 =øô
 ó 	Ü ð$óð ðûð	ús   ¬4 ´
A¾A
Á
Ac                ó.   • SSK Jn  [        5       Ul        g ©Nr   ©rY   )r3   rY   Ú_fixture_fn_classÚ_fixture_functions)r   rB   rY   s      r-   Ú_init_symbolsr®   š  s   € å)ä 1Ó 3€FÕr/   c                ó>   • U R                   (       a  S[        l        g g )NF)Údisable_asyncior   ÚENABLE_ASYNCIOr“   s     r-   Ú_set_disable_asyncior²   ¡  s   € à
××Ø!&ŒÕð r/   c           
     ód  • SSK Jn  SSKJn  SSKJn  SSKJn  U R                  (       a  [        U R                  5      nO/ nU R                  =(       d    / nU R                  (       at  U R                   Hd  n[        R                  " SU5       HF  n	X‘R                  S5      ;  a  [        SU	-  5      eUR                  UR!                  SU	5      5        MH     Mf     U(       d!  UR                  UR!                  SS	5      5        S Ul        U R$                  (       a…  UR&                  (       at  U V
s/ sH  o¥R)                  U
5      PM     sn
 HP  n
[+        U R$                  S
5       nUR-                  UR&                   SU
R/                  SS9 S35        S S S 5        MR     [        UR1                  Xg5      5      nU HY  n
[2        R5                  SU
5        UR7                  X XR&                  5      nUR"                  (       a  MH  UR9                  XÒ5        M[     g s  sn
f ! , (       d  f       Mâ  = f)Nr   rQ   r«   r1   )Úurlz[,\s]+r   z:Unknown URI specifier '%s'.  Specify --dbs for known uris.r   ÚaÚ F)Úhide_passwordÚ
zAdding database URL: %s)r\   rR   r3   rY   r2   Úsqlalchemy.enginer´   r   Úlistr   r   ÚreÚsplitr   ÚRuntimeErrorr   rp   Ú_currentr   r4   Úmake_urlÚopenÚwriteÚrender_as_stringÚgenerate_db_urlsÚlogÚinfoÚsetup_configÚset_as_current)r   rB   rR   rY   r2   Úsa_urlÚdb_urlsÚextra_driversÚdb_tokenr   Údb_urlÚfile_Úexpanded_urlsÚcfgs                 r-   Ú_engine_urirÐ   §  s¼  € å"Ý)Ý,Ý/à‡}‡}Ü�w—}‘}Ó%‰àˆà×$Ñ$×*¨€Mà‡z‡zØŸ
œ
ˆHÜ—h’h˜y¨(Ö3�Ø×0Ñ0°Ó6Ó6Ü&ð8Ø:<ñ=óð ð
 —N‘N ;§?¡?°4¸Ó#<Ö=ó 4ñ #ö Ø�‰�{—‘ t¨YÓ7Ô8à€F„Oà×× 	× 8× 8Ù=DÓE¹W°6—‘ vÖ.¹WÔEˆFÜ�g×*Ñ*¨CÔ0°EØ—‘Ø ×/Ñ/Ð0°Ø×.Ñ.¸UÐ.ÐCÐDÀBðHô÷ 1Ñ0ñ Fô ˜×3Ñ3°GÓKÓL€MãˆÜ�‰Ð*¨FÔ3à×$Ñ$Ø˜[×*BÑ*Bó
ˆð ��‰Ø×Ñ˜sÖ,ò  ùò Fß0Ö0ús   Ä1HÅ&/H È 
H/	c                ó>   • UR                  SS5      n[        U5        g )NÚsqla_testingÚrequirement_cls)rp   rv   )r   rB   rÓ   s      r-   Ú_requirementsrÔ   Ù  s   € à!—o‘o nÐ6GÓH€OÜ˜Õ(r/   c                óö   • SSK Jn  SSKJn  U R	                  S5      u  p4[        U5      nUR	                  S5      SS   H  n[        XV5      nM     [        XT5      nU" 5       =Ul        Ul        [        Ul	        g )Nr   r«   rQ   Ú:Ú.é   )
r3   rY   r\   rR   r¼   Ú
__import__ÚgetattrÚrequirementsÚrequiresÚbootstrapped_as_sqlalchemy)ÚargumentrY   rR   ÚmodnameÚclsnameÚmodÚ	componentÚreq_clss           r-   rv   rv   ß  sm   € Ý)Ý"à—~‘~ cÓ*Ñ€Gô �WÓ
€CØ—]‘] 3Ó'¨¨Ó+ˆ	Ü�cÓ%Šñ ,ä�cÓ#€Gá-4«YÐ6€FÔ˜'Ô*ä(B€FÕ%r/   c                ó¸   • SSK Jn  U R                  (       aC  SSK Jn  UR                  R                  5        H  nUR                  XDR                  5        M      g g )Nr   r«   r1   )r3   rY   r   r2   ÚConfigÚall_configsÚdrop_all_schema_objectsr   )r   rB   rY   r2   rÏ   s        r-   Ú_prep_testing_databaserè   ñ  s?   € å)à××Ý0à—=‘=×,Ñ,Ö.ˆCØ×-Ñ-¨c·6±6Ö:ò /ð r/   c                ó2   • SSK Jn  [        Ul        Xl        g rª   )r3   rY   r   rB   )rH   rB   rY   s      r-   Ú_post_setup_optionsrê   ü  s   € å)ä€F„NØ$Õr/   c                ó„   • SSK Jn  UR                  UR                  SS5      U R                  U R
                  S9Ul        g )Nr   )rX   rÒ   Úprofile_file)ÚsortÚdump)r3   rX   ÚProfileStatsFilerp   r   r   Ú_profile_stats)r   rB   rX   s      r-   Ú_setup_profilingrñ     s=   € å,à(×9Ñ9Ø�‰˜¨Ó7Ø× Ñ Ø× Ñ ð  :ð  €IÕr/   c                ór   • [        U[        R                  5      (       d  gU R                  S5      (       a  gg)NFr†   T)Ú
issubclassrS   ÚTestBaseÚ
startswith)ÚnameÚclss     r-   Ú
want_classrø     s-   € Ü�cœ8×,Ñ,×-Ñ-ØØ	�‰˜×	Ñ	Øàr/   c                ób   • UR                   R                  S5      (       d  gUR                  c  gg)NÚtest_FT)Ú__name__rõ   Ú
__module__)r÷   rI   s     r-   Úwant_methodrý     s*   € Ø�;‰;×!Ñ! '×*Ñ*ØØ	�‰Ñ	Øàr/   c              #  ób  #   • SU;   d  SU;   d  SU;   a•  SU;   nSU;   n[        XUS9 H|  nU R                  n[        R                  " SSUR                  5      n[        R                  " SSU5      nU R                  < SU< 3n[        UU 4XeS	.5      n	[        XU	5        U	v •  M~     g U v •  g 7f)
Nr   Úsparse_backendÚsparse_driver_backend)ÚsparseÚsparse_driverz
[_\[\]\.]+r†   z_+$Ú )Ú_sa_orig_cls_nameÚ__only_on_config__)Ú_possible_configs_for_clsrû   r»   Úsubrö   r   Úsetattr)
r÷   ÚmoduleÚmarkersr  r  rÏ   Ú	orig_nameÚ
alpha_namerö   Úsubclss
             r-   Úgenerate_sub_testsr  !  s¸   é € à�WÓØ˜wÓ&Ø" gÓ-à! WÑ,ˆØ/°7Ñ:ˆÜ,Ø¨mô
ˆCð Ÿ™ˆIô Ÿš ¨s°C·H±HÓ=ˆJÜŸš ¨¨JÓ7ˆJØ!ŸlœlªJÐ7ˆDÜØØ�Ø&/ÑKóˆFô
 �F &Ô)ØŒLò%
ð( ‹	ùs   ‚B-B/c                ó0   • [        U 5        [        U 5        g rL   )Ú	_do_skipsÚ_setup_engine©r÷   s    r-   Ú!start_test_class_outside_fixturesr  @  s   € Üˆc„NÜ�#Õr/   c                ój   • [         R                  U 5        [        R                  R                  5         g rL   )rS   Ústop_test_class_inside_fixturesrT   Útesting_reaperr  s    r-   Ústop_test_classr  E  s$   € ä×,Ñ,¨SÔ1ô ×Ñ×:Ñ:Õ<r/   c                ó  • [         R                  [        [        R                  U 5        [        R
                  R                  5          [        R                  (       d  [        R                  5         [        5         g ! [        5         f = frL   )r2   Ú stop_test_class_outside_fixturesrY   r   rT   r  r   r   rV   Úglobal_cleanup_assertionsÚ_restore_enginer  s    r-   r  r  N  sQ   € Ü×.Ñ.¬v´v·y±yÀ#ÔFÜ×Ñ×;Ñ;Ô=ðÜ×&×&Ü×0Ñ0Ô2äÕøŒÕús   Á	)A= Á=B	c                 óv   • [         R                  (       a$  [         R                  R                  [        5        g g rL   )rY   r¾   ÚresetrR   r8   r/   r-   r  r  X  s    € Ü‡‡Ü�‰×ÑœgÕ&ð r/   c                 ó|   • [         R                  R                  5         [        R	                  5         [        5         g rL   )rT   r  Úfinal_cleanuprV   r  r  r8   r/   r-   Úfinal_process_cleanupr   ]  s&   € Ü×Ñ×(Ñ(Ô*Ü×(Ñ(Ô*ÜÕr/   c                óÌ   • [        U SS 5      (       aR  [        U R                  5      nSUS'   [        R	                  US9n[
        R                  R                  U[        5        g g )NÚ__engine_options__ÚclassÚscoper’   )	rÚ   Údictr"  rT   Útesting_enginerY   r¾   Úpush_enginerR   )r÷   ÚoptsÚengs      r-   r  r  c  sW   € ÜˆsÐ(¨$×/Ñ/Ü�C×*Ñ*Ó+ˆØˆˆW‰Ü×$Ñ$¨TÐ$Ð2ˆÜ�‰×#Ñ# C¬Õ1ð	 0r/   c                óv   • [        USUR                  5      nU< SU< SU< 3n[        R                  U5        g )Nr  r×   )rÚ   rû   rX   Ú_start_current_test)ÚtestÚtest_module_nameÚ
test_classÚ	test_namerö   Úid_s         r-   Úbefore_testr1  k  s3   € ô �:Ð2°J×4GÑ4GÓH€Dã(«$²	Ð
:€Cä×!Ñ! #Õ&r/   c                óh   • [         R                  5         [        R                  R                  5         g rL   )rS   Ú
after_testrT   r  ©r,  s    r-   r3  r3  v  s    € Ü×ÑÔÜ×Ñ×%Ñ%Õ'r/   c                óB   • [         R                  R                  U 5        g rL   )rT   r  Úafter_test_outside_fixturesr4  s    r-   Úafter_test_fixturesr7  {  s   € Ü×Ñ×6Ñ6°tÕ<r/   c           	     ój  • [        [        R                  R                  5       5      nU R                  (       aO  [
        R                  " U R                  6 n[        U5       H#  nU" U5      (       d  M  UR                  U5        M%     [        U SS 5      (       ab  [
        R                  " [        R                  U R                  5      6 n[        U5       H#  nU" U5      (       a  M  UR                  U5        M%     [        U SS 5      (       a  UR                  U R                  /5        [        U S5      (       a¸  [        R                   n[        U5       H™  nU R"                   H†  n[        Xx5      n	U	R%                  U5      n
U
(       a(  UR                  U5        Ub  UR'                  U
5          M]  U	R)                  U5      nU(       d  Mh  [        U SS5      [+        U5      -   U l        Mˆ     M›     [        U S5      (       aš  [        5       n[        R                   n[        U5       HJ  nU R.                   H7  n[        Xx5      n	U	R1                  U5      (       a  M&  UR3                  U5        M9     ML     UR5                  U5      (       a  UR7                  U5        U(       aQ  0 n[9        [;        US S95      nU H%  nUR<                  R>                  nUU;  d  M!  XýU'   M'     URA                  5       $ U(       a±  0 n[        [9        [;        US	 S95      5      nU HZ  nUR<                  R>                  UR<                  RB                  RD                  4nUU;   a  UU   RF                  (       a  MU  UUU'   M\     [        URA                  5       5      nU Vs/ sH  oÿU;   d  M
  UPM     sn$ U$ s  snf )
NÚ__only_on__r  Ú__requires__Ú__warnings__r8   Ú__prefer_requires__c                óþ   • U R                   (       a  SOSU R                  R                  U R                  R                  U R                  R                  R
                  U R                  R                  R                  4$ )NÚzrµ   )Úis_default_dialectr   rö   ÚdriverÚdialectÚserver_version_infoÚis_async©rÏ   s    r-   Ú<lambda>Ú+_possible_configs_for_cls.<locals>.<lambda>»  sL   € Ø×1×1‘C°sØ—F‘F—K‘KØ—F‘F—M‘MØ—F‘F—N‘N×6Ñ6Ø—F‘F—N‘N×+Ñ+ñ!r/   )Úkeyc                óÖ   • U R                   R                  U R                   R                  U R                   R                  R                  U R                   R                  R
                  4$ rL   )r   rö   r@  rA  rB  rC  rD  s    r-   rE  rF  Ô  s?   € ØŸ™Ÿ™ØŸ™Ÿ™ØŸ™Ÿ™×:Ñ:ØŸ™Ÿ™×/Ñ/ñ	%r/   )$ÚsetrY   rå   ræ   Ú__unsupported_on__rU   Údb_specrº   ÚremoverÚ   rZ   Úto_listr9  Úintersection_updater  ÚhasattrrÛ   r:  Úmatching_config_reasonsÚextendÚmatching_warningsÚtupler;  r<  Úenabled_for_configrˆ   Ú
differenceÚdifference_updateÚreversedro   r   rö   ÚvaluesrA  rB  r?  )r÷   Úreasonsr  r  ræ   ÚspecÚ
config_objrÛ   ÚrequirementÚcheckÚskip_reasonsrW   Únon_preferredÚper_dialectÚsorted_all_configsrÏ   r   ÚdbsrG  Úchosen_cfgss                       r-   r  r    s(  € ô ”f—m‘m×/Ñ/Ó1Ó2€Kà
××Ü×!Ò! 3×#9Ñ#9Ð:ˆÜ˜{Ö+ˆJÙ�J×ÓØ×"Ñ" :Ö.ñ ,ô ˆs�M 4×(Ñ(Ü×!Ò!¤4§<¡<°·±Ó#@ÐAˆÜ˜{Ö+ˆJÙ˜
×#Ó#Ø×"Ñ" :Ö.ñ ,ô ˆsÐ(¨$×/Ñ/Ø×'Ñ'¨×)?Ñ)?Ð(@ÔAäˆs�N×#Ñ#Ü×*Ñ*ˆÜ˜{Ö+ˆJØ"×/Ô/�Ü Ó:�à$×<Ñ<¸ZÓH�ÞØ×&Ñ& zÔ2ØÑ*ØŸ™ |Ô4Úà ×2Ñ2°:Ó>�ß�8Ü'.Ø˜^¨Ró(ä˜h›ñ((�CÖ$ó  0ñ ,ô" ˆsÐ)×*Ñ*Ü›ˆÜ×*Ñ*ˆÜ˜{Ö+ˆJØ"×6Ô6�Ü Ó:�à×/Ñ/°
×;Ó;Ø!×%Ñ% jÖ1ó	  7ñ ,ð ×!Ñ! -×0Ñ0Ø×)Ñ)¨-Ô8æð ˆä%ÜØññ	ó
Ðó &ˆCØ—‘—‘ˆBØ˜Õ$Ø"%˜B“ñ &ð ×!Ñ!Ó#Ð#Þ	ð ˆä!ÜÜØññó
ó
Ðó &ˆCØ—6‘6—;‘; §¡§¡× BÑ BÐCˆCØ�c‹z˜c #™h×9×9Ùà��C“ñ &ô ˜#Ÿ*™*›,Ó'ˆÙ1ÓHÑ1˜¸KÑ5G—Ñ1ÑHÐHàÐùò Is   ÎN0Î%N0c           
     ó€  • / n[        X5      n[        U SS5      (       aR  [        U S5       HB  nU" 5       (       d  M  [        R                  SU R                  < SUR                  < 35        MD     U(       d|  SU R
                  < SU R                  < SSR                  S [        R                  R                  5        5       5      < SR                  U5      < 3n[        R                  U5        O›[        U S	5      (       aŠ  [        5       n[        R                  " [        R                  U R                  5      6 nU H#  nU" U5      (       a  M  UR!                  U5        M%     UR#                  U5      (       a  UR%                  U5        [        R&                  U;  a  [)        UR+                  5       U 5        g g )
NÚ__skip_if__FÚ'z' skipped by r×   z'' unsupported on any DB implementation z, c           
   3  óô   #   • U Ho  nS UR                   R                  < SSR                  S [        R	                  UR                   5       5       5      < SUR                   R
                  < S 3v •  Mq     g7f)rf  Ú(r×   c              3  ó6   #   • U H  n[        U5      v •  M     g 7frL   )r$   )Ú.0Údigs     r-   Ú	<genexpr>Ú&_do_skips.<locals>.<genexpr>.<genexpr>þ  s   é € ð á#L˜Cô ˜CŸ˜Ú#Lùs   ‚z)+N)r   rö   ÚjoinrU   Ú_server_versionr@  )rj  r[  s     r-   rl  Ú_do_skips.<locals>.<genexpr>ú  sa   é € ð ñ #>‘Jð —M‘M×&Ô&Ø—H‘Hñ ä#-×#=Ñ#=¸j¿m¹mÔ#Lóö ð —M‘M×(Ô(õò #>ùs   ‚A6A8Ú__prefer_backends__)r  rÚ   rY   Ú	skip_testrû   rü   rn  rå   ræ   rO  rI  rU   rK  rZ   rM  rq  rˆ   rU  rV  r¾   Ú_setup_configÚpop)r÷   rY  ræ   ÚcÚmsgr_  rZ  r[  s           r-   r  r  ë  sP  € Ø€GÜ+¨CÓ9€Käˆs�M 5×)Ñ)Ü˜˜mÖ,ˆAÙ�s‹sÜ× Ò Ø,/¯L¬L¸!¿*»*ÐEöñ -÷ à�NŒNØ�LŒLØ�I‰Iñ ô #)§-¡-×";Ñ";Ô"=óõ ð �I‰I�gÕð
ˆô" 	×Ñ˜ÕÜ	�Ð+×	,Ñ	,Ü›ˆÜ×!Ò!¤4§<¡<°×0GÑ0GÓ#HÐIˆÛ%ˆJÙ˜
×#Ó#Ø×!Ñ! *Ö-ñ &ð ×!Ñ! -×0Ñ0Ø×)Ñ)¨-Ô8ä‡�˜kÓ)Ü�k—o‘oÓ'¨Õ-ð *r/   c                óL   • [         R                  R                  U [        5        g rL   )rY   r¾   ÚpushrR   )r[  Úctxs     r-   rs  rs    s   € Ü
‡O�O×Ñ˜¤WÕ-r/   c                  ó  • \ rS rSr\R
                  S 5       r\R
                  S 5       r\R
                  S 5       r\R
                  S 5       r	S r
\R
                  SS j5       r\R                  S 5       r\R
                  SS	 j5       rS
rg)ÚFixtureFunctionsi  c                ó   • [        5       erL   ©ÚNotImplementedError©ÚselfÚargÚkws      r-   Úskip_test_exceptionÚ$FixtureFunctions.skip_test_exception  ó   € ä!Ó#Ð#r/   c                ó   • [        5       erL   r}  ©r€  rs   r‚  s      r-   ÚcombinationsÚFixtureFunctions.combinations  r…  r/   c                ó   • [        5       erL   r}  r‡  s      r-   Úparam_identÚFixtureFunctions.param_ident#  r…  r/   c                ó   • [        5       erL   r}  r  s      r-   ÚfixtureÚFixtureFunctions.fixture'  r…  r/   c                ó   • [        5       erL   r}  ©r€  s    r-   Úget_current_test_nameÚ&FixtureFunctions.get_current_test_name+  s   € Ü!Ó#Ð#r/   c                ó   • [        5       erL   r}  r‘  s    r-   Úmark_base_test_classÚ%FixtureFunctions.mark_base_test_class.  r…  r/   c                ó   • [        5       erL   r}  r‘  s    r-   Úadd_to_markerÚFixtureFunctions.add_to_marker2  r…  r/   c                ó   • [        5       erL   r}  )r€  rI   s     r-   Úfixture_classmethodÚ$FixtureFunctions.fixture_classmethod6  r…  r/   r8   N)Úreturnr   )rû   rü   Ú__qualname__Ú__firstlineno__ÚabcÚabstractmethodrƒ  rˆ  r‹  rŽ  r’  r•  Úabstractpropertyr˜  r›  Ú__static_attributes__r8   r/   r-   r{  r{    s»   † Ø×Ññ$ó ð$ð 	×Ññ$ó ð$ð 	×Ññ$ó ð$ð 	×Ññ$ó ð$ò$ð 	×Ñó$ó ð$ð 	×Ññ$ó ð$ð 	×Ñó$ó ó$r/   r{  c                ó   • U q g rL   )r¬   )Úfixture_fn_classs    r-   Úset_fixture_functionsr¦  >  s   € à(Ñr/   )NFF)UÚ
__future__r   r   Úargparser   r@   ra   r¢   Úpathlibr   r»   rq   Útypingr   r3   r   rÝ   rd   rÄ   rS   rT   rU   rW   rX   r2   rV   rÛ   rY   rR   rZ   rB   rI  rŒ   r‡   r   Ú__annotations__r.   r6   r;   r>   rE   rJ   rO   r_   r%   r&   r)   r'   r(   r+   r*   rG   r[   rŽ   r�   r”   r›   r¨   r®   r²   rÐ   rÔ   rv   rè   rê   rñ   rø   rý   r  r  r  r  r  r   r  r1  r3  r7  r  r  rs  ÚABCr{  r¬   r¦  r8   r/   r-   Ú<module>r­     sD  ðö #ã 
Ý Û Û Û 	Ý Û 	Û 
Ý å &ðð #Ð ä×ÒÐ8Ó9€ð €Ø
€Ø€
Ø€Ø€	Ø€	Ø€
Ø€Ø	€Ø
€Ø€Ø€à
€Ù‹u€Ù‹u€Ø€ˆÓ òròj	.òòòò!ò!òò$
9òòòòò.ò.ð €Ø€òò
ð
 ñó ðð
 ñó ðð ñ
ó ð
ð ñ4ó ð4ð ñ'ó ð'ð
 ñ.-ó ð.-ðb ñ)ó ð)ò
Cð$ ñ;ó ð;ð ñ%ó ð%ð ñó ðòòòò>ò
=òò'ò
ò2ò'ò(ò
=ð
 49ôiòX(.òV.ô$�s—w‘wô $ðB Ð ó)r/   