+
    iz]                      a  0 t $ ^ RIHt ^ RIt^ RIHt ^ RIt^ RIs^ RIt^ RI	H
t
 ^ RIt^ RIt^ RIHt ^ RIHt  Rt\        P$                  ! R4      tRsRsRsRsRsRsRsRtRsRsRsRsRs] ! 4       t!] ! 4       t"Rs#R	]$R
&   R t%R t&R t'R t(R t)R t*R t+R t,R t-R t.R t/R t0R t1R t2R t3. t4. t5R t6R t7]6R 4       t8]6R 4       t9]7R 4       t:]7R 4       t;]6R  4       t<]7R! 4       t=]7R" 4       t>R# t?]7R$ 4       t@]7R% 4       tA]7R& 4       tBR' tCR( tDR) tER* tFR+ tGR, tHR- tIR. tJR/ tKR0 tLR1 tMR2 tNR9R3 ltOR4 tPR5 tQ ! R6 R7]P                  4      tSRsTR8 tUR# ):    )annotationsN)	Namespace)Path)Any)asyncioFzsqlalchemy.testing.plugin_baser   optionsc           	     Z   V ! R R\         \        RR7       V ! RR\         \        RR7       V ! RR\         RR	R
7       V ! RR\        RR7       V ! RR\         RRR
7       V ! RR\         RRR
7       V ! RRRRR7       V ! RRRR7       V ! RR\        R4      RR7       V ! RR\	        R 4      R!R7       V ! R"R\	        R#4      R$R7       V ! R%R\	        R&4      R'R7       V ! R(\         R)R*R+R,7       V ! R-\         R.R/R07       V ! R1RR2R3R7       V ! R4\         R5R6R07       V ! R7R\         \
        R8R7       V ! R9R\        \         R:R;7       V ! R<R\        \         R=R;7       V ! R>RR?R@RARB7       V ! RCRRDR@RERB7       V ! RF\         RGRHR07       V ! RI\         R. RJRKRL7       V ! RM\         RNRO7       V ! RPRRQR7       RR# )Sz
--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+oracledbN)str_log	_list_dbs_set_tag_include_set_tag_exclude_requirements_opt_include_tag_exclude_tag)make_options   &C:\Users\petid\OneDrive\Desktop\Maestro\MAESTRO\maestro-backend\venv\Lib\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                    ^ RI Hp Wn        R# )zxConfigure required state for a follower.

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

	provisionN)sqlalchemy.testingr2   FOLLOWER_IDENT)follower_identr2   s   & r-   configure_followerr6      s     --r/   c                    R# )zStore 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                    R# )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                    \         P                  ! 4       s\        P                  \	        V R ,          4      \	        V R,          4      .4       R# )z	setup.cfgztest.cfgN)configparserConfigParserfile_configreadr$   )	root_paths   &r-   read_configrE     s:    ++-K	Y$	%s9z+A'BCr/   c                F    V s \         F  pV! \         \        4       K  	  R# )z7things to set up early, before coverage might be setup.N)r   pre_configurerB   )optfns   & r-   	pre_beginrJ     s     G
7K  r/   c                    V \         n        R # N)r   has_coverage)values   &r-   set_coverage_flagrO      s
     Gr/   c                     \          F  p V ! \        \        4       K  	  ^ RIHs ^ RIHsHsHs ^ RIH	s	H
s
Hs ^ RIHsHs ^ RIHs \        P                  4        R# )z9things to set up later, once we know coverage is running.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;     
7K   #@@BB4r/   c                   \         '       g   ^ RI s \         P                  ! 4        V P                  R4      '       d6   \         P                  ! V4      P	                  \         P
                  4       R# V P                  R4      '       d6   \         P                  ! V4      P	                  \         P                  4       R# R# )r   Nz-infoz-debug)loggingbasicConfigendswith	getLoggersetLevelINFODEBUGopt_strrN   parsers   &&&r-   r%   r%   6  sw    7  % ))',,7			(	#	#% ))'--8 
$r/   c            	     ,   \         f   \        \        P                  ! 4       4       \	        R4       \        \         P                  R4      4       F*  p\	        V:R R\         P                  RV4      : 24       K,  	  \        P                  ! ^ 4       R # )Nz0Available --db options (use --dburi to override)r   z>20	)
rB   rE   r   cwdprintsortedr   getsysexit)argsmacros   * r-   r&   r&   C  s^     	DHHJ	
<=++D12E;??4#?@A 3HHQKr/   c                    \        V4       R # rL   )_setup_requirementsrh   s   &&&r-   r)   r)   N  s
    r/   c                   a  V 3R  lpV# )c                "   < \        V SV4       R # rL   )r*   ri   rN   rj   tags   &&&r-   _do_include_tag)_set_tag_include.<locals>._do_include_tagS      Wc6*r/   r8   )rz   r{   s   f r-   r'   r'   R      + r/   c                   a  V 3R  lpV# )c                "   < \        V SV4       R # rL   )r+   ry   s   &&&r-   _do_exclude_tag)_set_tag_exclude.<locals>._do_exclude_tagZ  r}   r/   r8   )rz   r   s   f r-   r(   r(   Y  r~   r/   c                P    \         P                  VP                  R R4      4       R# -_N)exclude_tagsaddreplacerh   s   &&&r-   r+   r+   `      U]]3,-r/   c                P    \         P                  VP                  R R4      4       R# r   )include_tagsr   r   rh   s   &&&r-   r*   r*   d  r   r/   c                0    \         P                  V 4       V # rL   )rG   r   r^   s   &r-   prer   l  s    Ir/   c                0    \         P                  V 4       V # rL   )r[   r   r^   s   &r-   postr   q  s    "Ir/   c                
    V s R # rL   r   rH   rB   s   &&r-   _setup_optionsr   v  s	     Gr/   c                ^    ^ RI Hp VP                  RRR4       VP                  RRR4       R# )r   )registryzsqlite.pysqlite_numericz#sqlalchemy.dialects.sqlite.pysqlite_SQLiteDialect_pysqlite_numericzsqlite.pysqlite_dollar_SQLiteDialect_pysqlite_dollarN)sqlalchemy.dialectsr   register)rH   rB   r   s   && r-    _register_sqlite_numeric_dialectr   |  s5    ,!-)
  -(r/   c                    \         P                  P                  R R4      R8X  d   ^ RIHp  V! RR7       R# R#   \
         d   p\        R4      ThRp?ii ; i)REQUIRE_SQLALCHEMY_CEXT01)has_compiled_extT)raise_zEREQUIRE_SQLALCHEMY_CEXT is set but can't import the cython extensionsN)osenvironrp   sqlalchemy.utilr   ImportErrorAssertionError)rH   rB   r   errs   &&  r-   __ensure_cextr     sX    	zz~~/5<4	D)	 =
  	 $ 	s   	: AAAc                0    ^ RI Hp \        4       Vn        R# r   rY   N)r3   rY   _fixture_fn_class_fixture_functions)r   rB   rY   s   && r-   _init_symbolsr     s    ) 1 3Fr/   c                D    V P                   '       d   R \        n        R# R# )FN)disable_asyncior   ENABLE_ASYNCIOr   s   &&r-   _set_disable_asyncior     s    
!& r/   c                   ^ RI Hp ^ RIHp ^ RIHp ^ RIHp V P                  '       d   \        V P                  4      pM. pV P                  ;'       g    . pV P                  '       dz   V P                   Fi  p\        P                  ! RV4       FK  p	WP                  R4      9  d   \        RV	,          4      hVP                  VP!                  RV	4      4       KM  	  Kk  	  V'       g"   VP                  VP!                  RR4      4       R	Vn        V P$                  '       d   VP&                  '       d   V U
u. uF  qP)                  V
4      NK  	  up
 F[  p
\+        V P$                  R
4      ;_uu_ 4       pVP-                  VP&                   RV
P/                  RR7       R24       R	R	R	4       K]  	  \        VP1                  Wg4      4      pV FZ  p
\2        P5                  RV
4       VP7                  WWP&                  4      pVP"                  '       d   KI  VP9                  W4       K\  	  R	# u up
i   + '       g   i     K  ; i)r   rQ   r   r1   )urlz[,\s]+r   z:Unknown URI specifier '%s'.  Specify --dbs for known uris.r   N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zzz

Hhhy(30066&8:<= 
 NN;??4#<= 4 # {tY78FO	 8 8 8=DEW6v.WEFg**C00E //0..U.CDBH 10 F 33GKLM*F3$$[*B*B
 s,   F000s   <H392H88I	c                @    VP                  R R4      p\        V4       R# )sqla_testingrequirement_clsN)rp   rv   )r   rB   r   s   && r-   _requirementsr     s    !oon6GHO(r/   c                    ^ RI Hp ^ RIHp V P	                  R4      w  r4\        V4      pVP	                  R4      R,           F  p\        WV4      pK  	  \        WT4      pV! 4       ;Vn        Vn        \        Vn	        R# )r   r   rQ   :.:   NNN)
r3   rY   r\   rR   r   
__import__getattrrequirementsrequiresbootstrapped_as_sqlalchemy)argumentrY   rR   modnameclsnamemod	componentreq_clss   &       r-   rv   rv     sn    )"~~c*G W
C]]3'++	c% ,c#G-4Y6F'*(BF%r/   c                    ^ RI Hp V P                  '       dE   ^ RI Hp VP                  P                  4        F  pVP                  WDP                  4       K   	  R# R# )r   r   r1   N)r3   rY   r   r2   Configall_configsdrop_all_schema_objectsr   )r   rB   rY   r2   r   s   &&   r-   _prep_testing_databaser     sB    )0==,,.C--c66: / r/   c                4    ^ RI Hp \        Vn        Wn        R# r   )r3   rY   r   rB   )rH   rB   rY   s   && r-   _post_setup_optionsr     s    )FN$r/   c                    ^ RI Hp VP                  VP                  RR4      V P                  V P
                  R7      Vn        R# )r   )rX   r   profile_file)sortdumpN)r3   rX   ProfileStatsFilerp   r   r   _profile_stats)r   rB   rX   s   && r-   _setup_profilingr     s=    ,(997      :  Ir/   c                |    \        V\        P                  4      '       g   R # V P                  R4      '       d   R # R# )Fr   T)
issubclassrS   TestBase
startswith)nameclss   &&r-   
want_classr     s-    c8,,--			r/   c                l    VP                   P                  R 4      '       g   R# VP                  f   R# R# )test_FT)__name__r   
__module__)r   rI   s   &&r-   want_methodr     s*    ;;!!'**		r/   c           	   #  v  "   R V9   g   RV9   g   RV9   d   RV9   pRV9   p\        WVR7       F~  pV P                  p\        P                  ! RRVP                  4      p\        P                  ! RRV4      pV P                  : RV: 2p\        VV 3RVR	V/4      p	\        WV	4       V	x  K  	  R
# V x  R
# 5i)r   sparse_backendsparse_driver_backend)sparsesparse_driverz
[_\[\]\.]+r   z_+$ _sa_orig_cls_name__only_on_config__N)_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 sCHH=JJ7J!llJ7D$i1EsKF
 F&)L%
( 	s   B7B9c                2    \        V 4       \        V 4       R # rL   )	_do_skips_setup_enginer   s   &r-   !start_test_class_outside_fixturesr  @  s    cN#r/   c                l    \         P                  V 4       \        P                  P                  4        R # rL   )rS   stop_test_class_inside_fixturesrT   testing_reaperr  s   &r-   stop_test_classr  E  s$    ,,S1 ::<r/   c                   \         P                  \        \        P                  V 4       \        P
                  P                  4         \        P                  '       g   \        P                  4        \        4        R #   \        4        i ; irL   )r2    stop_test_class_outside_fixturesrY   r   rT   r  r   r   rV   global_cleanup_assertions_restore_enginer  s   &r-   r  r  N  sT    ..vvyy#F;;=&&&002s   	A? A? ?Bc                 |    \         P                  '       d&   \         P                  P                  \        4       R # R # rL   )rY   r   resetrR   r8   r/   r-   r  r  X  s"    g& r/   c                 ~    \         P                  P                  4        \        P	                  4        \        4        R # rL   )rT   r  final_cleanuprV   r  r  r8   r/   r-   final_process_cleanupr   ]  s&    ((*((*r/   c                    \        V R R4      '       dW   \        V P                  4      pRVR&   \        P	                  VR7      p\
        P                  P                  V\        4       R# R# )__engine_options__N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                x    \        VR VP                  4      pV: RV: RV: 2p\        P                  V4       R# )r  r   N)r   r   rX   _start_current_test)testtest_module_name
test_class	test_namer   id_s   &&&&  r-   before_testr1  k  s3     :2J4G4GHD($	
:C!!#&r/   c                j    \         P                  4        \        P                  P                  4        R # rL   )rS   
after_testrT   r  r,  s   &r-   r3  r3  v  s     %%'r/   c                D    \         P                  P                  V 4       R # rL   )rT   r  after_test_outside_fixturesr4  s   &r-   after_test_fixturesr7  {  s    66t<r/   c           	        \        \        P                  P                  4       4      pV P                  '       dR   \
        P                  ! V P                  !  p\        V4       F$  pV! V4      '       g   K  VP                  V4       K&  	  \        V R R4      '       de   \
        P                  ! \        P                  V P                  4      !  p\        V4       F$  pV! V4      '       d   K  VP                  V4       K&  	  \        V RR4      '       d   VP                  V P                  .4       \        V R4      '       d   \        P                   p\        V4       F  pV P"                   F  p\        Wx4      p	V	P%                  V4      p
V
'       d*   VP                  V4       Ve   VP'                  V
4        K_  V	P)                  V4      pV'       g   Kk  \        V RR	4      \+        V4      ,           V n        K  	  K  	  \        V R4      '       d   \        4       p\        P                   p\        V4       FK  pV P.                   F8  p\        Wx4      p	V	P1                  V4      '       d   K'  VP3                  V4       K:  	  KM  	  VP5                  V4      '       d   VP7                  V4       V'       dV   / p\9        \;        VR R7      4      pV F&  pVP<                  P>                  pVV9  g   K"  WV&   K(  	  VPA                  4       # V'       d   / p\        \9        \;        VR R7      4      4      pV F`  pVP<                  P>                  VP<                  PB                  PD                  3pVV9   d   VV,          PF                  '       d   K[  VVV&   Kb  	  \        VPA                  4       4      pV Uu. uF  qV9   g   K  VNK  	  up# V# u upi )
__only_on__Nr  __requires____warnings____prefer_requires__c                    V P                   '       d   R MRV P                  P                  V P                  P                  V P                  P                  P
                  V P                  P                  P                  3# )zr   )is_default_dialectr   r   driverdialectserver_version_infois_asyncr   s   &r-   <lambda>+_possible_configs_for_cls.<locals>.<lambda>  sO    111CsFFKKFFMMFFNN66FFNN++!r/   )keyc                    V P                   P                  V P                   P                  V P                   P                  P                  V P                   P                  P
                  3# rL   )r   r   r@  rA  rB  rC  rD  s   &r-   rE  rF    s?    :://	%r/   r8   )$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    s0    fmm//12K
!!3#9#9:{+JJ"":. , sM4((!!4<<#@A{+J
##"":. , s($//'')?)?(@AsN##**{+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66;; B BCCczc#h999C & #**,'1H1K5G1HH Is   :OOc           
        . p\        W4      p\        V R R4      '       dT   \        V R 4       FC  pV! 4       '       g   K  \        P                  RV P                  : RVP                  : 24       KE  	  V'       g}   RV P
                  : RV P                  : RRP                  R \        P                  P                  4        4       4      : RP                  V4      : 2p\        P                  V4       M\        V R4      '       d   \        4       p\        P                  ! \        P                  V P                  4      !  pV F$  pV! V4      '       d   K  VP!                  V4       K&  	  VP#                  V4      '       d   VP%                  V4       \        P&                  V9  d   \)        VP+                  4       V 4       R	# R	# )
__skip_if__F'z' skipped by r   z'' unsupported on any DB implementation z, c           
   3     "   T Fo  pR VP                   P                  : RRP                  R \        P	                  VP                   4       4       4      : RVP                   P
                  : R 2x  Kq  	  R# 5i)rf  (r   c              3  8   "   T F  p\        V4      x  K  	  R # 5irL   )r$   ).0digs   & r-   	<genexpr>&_do_skips.<locals>.<genexpr>.<genexpr>  s      #LC C#Ls   z)+N)r   r   joinrU   _server_versionr@  )rj  r[  s   & r-   rl  _do_skips.<locals>.<genexpr>  sa       #>J MM&&HH #-#=#=jmm#L  MM(( #>s   A7A9__prefer_backends__N)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    sR   G+C9KsM5))m,Ass  ,/LL!**E - ;NNLLII  #)--";";"=  IIg
" 		+	,	,!!4<<0G0G#HI%J
##!!*- & !!-00))-8k)koo'- *r/   c                N    \         P                  P                  V \        4       R # rL   )rY   r   pushrR   )r[  ctxs   &&r-   rs  rs    s    
OOW-r/   c                      ] tR tRt]P
                  R 4       t]P
                  R 4       t]P
                  R 4       t]P
                  R 4       t	R t
]P
                  R R l4       t]P                  R	 4       tR
tR# )FixtureFunctionsi  c                	    \        4       hrL   NotImplementedErrorselfargkws   &*,r-   skip_test_exception$FixtureFunctions.skip_test_exception      !##r/   c                	    \        4       hrL   r}  r  rs   r  s   &*,r-   combinationsFixtureFunctions.combinations  r  r/   c                	    \        4       hrL   r}  r  s   &*,r-   param_identFixtureFunctions.param_ident#  r  r/   c                	    \        4       hrL   r}  r  s   &*,r-   fixtureFixtureFunctions.fixture'  r  r/   c                	    \        4       hrL   r}  r  s   &r-   get_current_test_name&FixtureFunctions.get_current_test_name+  s    !##r/   c                   V ^8  d   QhRR/# )   returnr   r8   )formats   "r-   __annotate__FixtureFunctions.__annotate__/  s     $ $c $r/   c                	    \        4       hrL   r}  r  s   &r-   mark_base_test_class%FixtureFunctions.mark_base_test_class.  r  r/   c                	    \        4       hrL   r}  r  s   &r-   add_to_markerFixtureFunctions.add_to_marker2  r  r/   r8   N)r   r   __qualname____firstlineno__abcabstractmethodr  r  r  r  r  r  abstractpropertyr  __static_attributes__r8   r/   r-   r{  r{    s    $ $ 	$ $ 	$ $ 	$ $$ 	$ $ 	$ $r/   r{  c                
    V s R # rL   )r   )fixture_fn_classs   &r-   set_fixture_functionsr  :  s    (r/   )NFF)V__conditional_annotations__
__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  )r  s   @r-   <module>r     sB   # " 
    	  	 
  & # 89 

		
	

uu rj	.!!$
9.. 

  
   
 
 4 4 ' '
 .- .-b ) )
C$ ; ; % %  >
='
2'(
=iX(.V.$sww $:  )r/   