
    g                    f    S SK Jr  S SKrS SKJr  S SKJr  SSKJr  S r	S r
SS	 jrSS
 jrSS jrg)    )annotationsN)Union)inspect_getfullargspec   )sqla_2c            
     ^  ^ SSK Jn  [        5       nU  H  mUR                  T5        M     [	        U5      nUR
                  " U  V^s/ s H5  mSR                  U4S jU 5       5      4[        U4S jU 5       5      -   PM7     snSS[        U5      -  -   SR                  U5      S	.6$ s  snf )
a  A facade around @testing.combinations() oriented towards boolean
keyword-based arguments.

Basically generates a nice looking identifier based on the keywords
and also sets up the argument names.

E.g.::

    @testing.flag_combinations(
        dict(lazy=False, passive=False),
        dict(lazy=True, passive=False),
        dict(lazy=False, passive=True),
        dict(lazy=False, passive=True, raiseload=True),
    )


would result in::

    @testing.combinations(
        ('', False, False, False),
        ('lazy', True, False, False),
        ('lazy_passive', True, True, False),
        ('lazy_passive', True, True, True),
        id_='iaaa',
        argnames='lazy,passive,raiseload'
    )

r   config_c              3  Z   >#    U  H   nTR                  US 5      (       d  M  Uv   M"     g7fFNget.0kds     \/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/alembic/testing/util.py	<genexpr>$flag_combinations.<locals>.<genexpr>9   s     9Aq%aas   +	+c              3  H   >#    U  H  nTR                  US 5      v   M     g7fr   r   r   s     r   r   r   :   s     2TAEE!UOOTs   "ia,)id_argnames)	sqlalchemy.testingr
   setupdatesortedcombinationsjointuplelen)r!   r
   keysr   s      `r   flag_combinationsr&      s    : *5DA  $<D "

 " XX999;2T223!


 3T?#$ 

s   <B*c                   [        U 5      S   nU Vs0 s H  o3UR                  U5      _M     nn[        U R                  5      nUR	                  U5        [
        R                  " U R                  U5      nU" S0 UD6$ s  snf )zGiven a no-arg lambda and a namespace, return a new lambda that
has all the values filled in.

This is used so that we can have module-level fixtures that
refer to instance-level variables using lambdas.

r    )r   popdict__globals__r   typesFunctionType__code__)__fnkwpos_argsargpass_pos_argsglbnew_fns          r   resolve_lambdar6   B   sv     &d+A.H19:#"&&+%M:
t
 CJJrNs3F"M""	 ;s   A?c                4   ^ ^^ SSK Jm  SSKJm  UU U4S jnU$ )z&Provide MetaData for a pytest fixture.r   r	      )fixture_functionsc                >   >^  UU 4S jnTR                  TS9" U5      $ )Nc              3    >#    SSK Jn  UR                  5       =o l         T" X5      nUR	                  TR
                  5        Uv   UR                  TR
                  5        g ! UR                  TR
                  5        f = f7f)Nr   )schema)
sqlalchemyr<   MetaDatametadata
create_alldbdrop_all)selfr<   r?   resultr
   fns       r   run_ddl3metadata_fixture.<locals>.decorate.<locals>.run_ddlZ   sf     )'-'88H}-D+##FII. !!&)),!!&)),s   B'A$ B$BB)scope)fixture)rE   rF   r
   ddlr9   s   ` r   decorate"metadata_fixture.<locals>.decorateY   s#    	- !((s(3G<<    )r   r
    r9   )rJ   rK   r
   r9   s   ` @@r   metadata_fixturerO   S   s     *#=  OrM   c                ,     [        U 5      $ !   U s $ = f)N)int)values    r   	_safe_intrS   l   s    5zs   
 c                    SSK Jn  SSKJn  U(       d!  [	        UR
                  R                  SS5      n[        (       d  U(       a  SU0O0 nO0 nU" X40 UD6$ )Nr   r	   )testing_enginefuture_engineFfuture)r   r
   sqlalchemy.testing.enginesrU   getattr_currentoptionsr   )urlr[   rW   r
   rU   r0   s         r   rU   rU   s   sK    )900/5I6#)hr#-"--rM   )function)rR   strreturnzUnion[int, str])NNF)
__future__r   r,   typingr   sqlalchemy.utilr   utilr   r&   r6   rO   rS   rU   r(   rM   r   <module>rd      s0    #   2 .b#"2.rM   