
    gb                    v   S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  SSKJr  SSKJr  \(       a  S SKJr  \\\\   \\S4   4   r\\\\\      \\   4   r \\\\S4   S4   r!\S\4   r"\S   r#\
\S4   r$\
\S\\S   4   \S   4   r%\" S5      r&\" S\\"   S 9r'\RP                  " S!5      r)/ S"Qr* " S# S$\5      r+ " S% S&\,5      r- " S' S(\-5      r. " S) S*\-5      r/ " S+ S,\-5      r0 " S- S.\-5      r1 " S/ S0\15      r2 " S1 S2\15      r3 " S3 S4\2\35      r4 " S5 S65      r5 " S7 S5      r6\S<S8 j5       r7\    S=S9 j5       r7    S>S: jr7S?S; jr8g)@    )annotationsN)Any)Callable)cast)
Collection)Deque)Dict)	FrozenSet)Iterable)Iterator)List)Optional)overload)Protocol)Sequence)Set)Tuple)TYPE_CHECKING)TypeVar)Union)util   )not_none)Literal.Revision)r   zLiteral['base'] _T_TR)boundz(?:(.+?)@)?(\w+)?((?:\+|-)\d+))@-+c                  6    \ rS rSr            SS jrSrg)_CollectRevisionsProtocol3   c                    g Nr   )selfupperlower	inclusiveimplicit_baseassert_relative_lengths         _/Users/Alptekin/Desktop/izin_takip/venv/lib/python3.13/site-packages/alembic/script/revision.py__call__"_CollectRevisionsProtocol.__call__4   s	     GJ    r   Nr)   _RevisionIdentifierTyper*   r3   r+   boolr,   r4   r-   r4   returnz;Tuple[Set[Revision], Tuple[Optional[_RevisionOrBase], ...]])__name__
__module____qualname____firstlineno__r/   __static_attributes__r   r1   r.   r$   r$   3   sI    J&J 'J 	J
 J !%J 
EJr1   r$   c                      \ rS rSrSrg)RevisionError>   r   N)r6   r7   r8   r9   r:   r   r1   r.   r<   r<   >   s    r1   r<   c                  8   ^  \ rS rSr      SU 4S jjrSrU =r$ )RangeNotAncestorErrorB   c                p   > Xl         X l        [        TU ]  SU=(       d    S< SU=(       d    S< 35        g )N	Revision basez  is not an ancestor of revision )r*   r)   super__init__)r(   r*   r)   	__class__s      r.   rE   RangeNotAncestorError.__init__C   s2     

1	
r1   )r*   r)   )r*   r3   r)   r3   r5   Noner6   r7   r8   r9   rE   r:   __classcell__rF   s   @r.   r?   r?   B   s%    
,
5L
	
 
r1   r?   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )MultipleHeadsN   c                j   > Xl         X l        [        TU ]  SU< SSR	                  U5      < 35        g )Nz/Multiple heads are present for given argument 'z'; , )headsargumentrD   rE   join)r(   rQ   rR   rF   s      r.   rE   MultipleHeads.__init__O   s-    
 dii.0	
r1   )rR   rQ   )rQ   Sequence[str]rR   Optional[str]r5   rH   rI   rK   s   @r.   rM   rM   N   s    
 
r1   rM   c                  ,   ^  \ rS rSrSU 4S jjrSrU =r$ )ResolutionErrorX   c                0   > [         TU ]  U5        X l        g r'   )rD   rE   rR   )r(   messagerR   rF   s      r.   rE   ResolutionError.__init__Y   s    ! r1   )rR   )r[   strrR   r]   r5   rH   rI   rK   s   @r.   rX   rX   X   s    ! !r1   rX   c                  0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )CycleDetected^   Cyclec                r   > Xl         [        TU ]	  U R                  < SSR	                  U5      < S35        g )Nz is detected in revisions (rP   ))	revisionsrD   rE   kindrS   r(   rd   rF   s     r.   rE   CycleDetected.__init__a   s,    "yy$))I.0	
r1   )rd   rd   rU   r5   rH   r6   r7   r8   r9   re   rE   r:   rJ   rK   s   @r.   r_   r_   ^   s    D
 
r1   r_   c                  0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )DependencyCycleDetectedi   zDependency cyclec                $   > [         TU ]  U5        g r'   rD   rE   rf   s     r.   rE    DependencyCycleDetected.__init__l   s    #r1   r   rh   ri   rK   s   @r.   rk   rk   i   s    D$ $r1   rk   c                  0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )LoopDetectedp   z	Self-loopc                &   > [         TU ]  U/5        g r'   rn   r(   revisionrF   s     r.   rE   LoopDetected.__init__s   s    ($r1   r   ru   r]   r5   rH   ri   rK   s   @r.   rq   rq   p   s    D% %r1   rq   c                  0   ^  \ rS rSrSrSU 4S jjrSrU =r$ )DependencyLoopDetectedw   zDependency self-loopc                $   > [         TU ]  U5        g r'   rn   rt   s     r.   rE   DependencyLoopDetected.__init__z   s    "r1   r   )ru   rU   r5   rH   ri   rK   s   @r.   ry   ry   w   s    !D# #r1   ry   c                     \ rS rSrSrS&S jr\R                  S'S j5       r\R                  S'S j5       r	\R                  S'S j5       r
\R                  S'S j5       r\R                  S(S j5       r            S)S	 jr      S*S
 jr      S*S jr      S*S jr      S*S jrS+S,S jjr S-   S.S jjrS/S jr    S0S jrS1S jrS2S jr S-     S3S jjr    S4S jr S+       S5S jjr S+       S6S jjr    S7S jr    S8             S9S jjr    S:           S;S jjr   S<         S=S jjr S+         S>S jjr       S?S jr!  S@         SAS jjr"        SBS  jr#        SCS! jr$            SDS" jr%            SES# jr&    SFS$ jr'S%r(g)GRevisionMap~   zMaintains a map of :class:`.Revision` objects.

:class:`.RevisionMap` is used by :class:`.ScriptDirectory` to maintain
and traverse the collection of :class:`.Script` objects, which are
themselves instances of :class:`.Revision`.

c                    Xl         g)zConstruct a new :class:`.RevisionMap`.

:param generator: a zero-arg callable that will generate an iterable
 of :class:`.Revision` instances to be used.   These are typically
 :class:`.Script` subclasses within regular Alembic use.

N)
_generator)r(   	generators     r.   rE   RevisionMap.__init__   s	     $r1   c                2    U R                     U R                  $ )zAll "head" revisions as strings.

This is normally a tuple of length one,
unless unmerged branches are present.

:return: a tuple of string revision numbers.

)_revision_maprQ   r(   s    r.   rQ   RevisionMap.heads        	zzr1   c                2    U R                     U R                  $ )zAll "base" revisions as strings.

These are revisions that have a ``down_revision`` of None,
or empty tuple.

:return: a tuple of string revision numbers.

)r   basesr   s    r.   r   RevisionMap.bases   r   r1   c                2    U R                     U R                  $ )zUAll "real" head revisions as strings.

:return: a tuple of string revision numbers.

)r   _real_headsr   s    r.   r   RevisionMap._real_heads        	r1   c                2    U R                     U R                  $ )zUAll "real" base revisions as strings.

:return: a tuple of string revision numbers.

)r   _real_basesr   s    r.   r   RevisionMap._real_bases   r   r1   c           	        [         R                  " 5       n[         R                  " 5       n[         R                  " 5       nSnSn[        5       n[        5       nU R	                  5        H  nUR                  U5        UR                  U;   a#  [        R                  " SUR                  -  5        XUR                  '   UR                  (       a  UR                  U5        UR                  U5        UR                  U5        UR                  (       a  XH4-  nUR                  (       d  M  XX4-  nM     UR                  5       n	U R                  U[        [        U5      5        U R!                  U[        [        U5      5        UR#                  5        H  n
U
R$                   Hm  nX;  a  [        R                  " SU< SU
< S35        X   nUR'                  U
5        XR(                  ;   a  UR+                  U5        UR+                  U5        Mo     M     U R-                  U[        [        U5      5        U R/                  XXCU5        [1        UR3                  5       5      nS=US'   US'   [5        S U 5       5      U l        [5        S U 5       5      U l        [5        S	 U 5       5      U l        [5        S
 U 5       5      U l        U R?                  Xm5        U$ )zOmemoized attribute, initializes the revision map from the
initial collection.

r   %Revision %s is present more than oncerB    referenced from  is not presentNc              3  8   #    U  H  oR                   v   M     g 7fr'   ru   .0revs     r.   	<genexpr>,RevisionMap._revision_map.<locals>.<genexpr>       95C<<5   c              3  8   #    U  H  oR                   v   M     g 7fr'   r   r   s     r.   r   r           E#r   c              3  8   #    U  H  oR                   v   M     g 7fr'   r   r   s     r.   r   r     r   r   c              3  8   #    U  H  oR                   v   M     g 7fr'   r   r   s     r.   r   r     r   r   ) sqlautilOrderedDict
OrderedSetsetr   addru   r   warnbranch_labelsis_base_is_real_basecopy_map_branch_labelsr   _RevisionMapType_add_depends_onvalues_all_down_revisionsadd_nextrev_versioned_down_revisionsdiscard_normalize_depends_on_detect_cyclesdictitemstuplerQ   r   r   r   _add_branches)r(   map_rQ   r   r   r   has_branch_labelsall_revisionsru   rev_mapr   downrevdown_revisionrevision_maps                 r.   r   RevisionMap._revision_map   s`    )1(<(<(>'224%-%8%8%:&(,.E)Hh'  D(		;h>O>OO '/""#%%!%%h/IIhOOH%$%%%{*! *( ))+t$4d;	
 	]D1A4,HI;;=C22&II"C) !%))#.;;;MM-0##M2 3 !  	""=$7G2NOGEL)-djjl);044T\"-9599
  E EE9599
  E EE,;r1   c                H   U(       d  g U(       a  U(       d  [        [        U5      5      eU R                  S U[        [        U5      S9 Vs1 s H  nUR
                  iM     snR                  S U R                  S U[        [        U5      S9 5       5      n[        UR                  5       5      U-
  nU(       a  [        [        U5      5      eU(       a  U(       d  [        [        U5      5      eU R                  S U[        [        U5      S9 Vs1 s H  nUR
                  iM     snR                  S U R                  S U[        [        U5      S9 5       5      n[        UR                  5       5      U-
  nU(       a  [        [        U5      5      eg s  snf s  snf )Nc                    U R                   $ r'   r   rs    r.   <lambda>,RevisionMap._detect_cycles.<locals>.<lambda>  s
    !55r1   )r   c              3  :   #    U  H  nUR                   v   M     g 7fr'   r   r   s     r.   r   -RevisionMap._detect_cycles.<locals>.<genexpr>        
 LL   c                    U R                   $ r'   nextrevr   s    r.   r   r   !  s    !))r1   c                    U R                   $ r'   )r   r   s    r.   r   r   /  s
    !//r1   c              3  :   #    U  H  nUR                   v   M     g 7fr'   r   r   s     r.   r   r   3  r   r   c                    U R                   $ r'   _all_nextrevr   s    r.   r   r   6  s    !..r1   )r_   list_iterate_related_revisionsr   r   ru   intersectionr   keyssortedrk   )	r(   r   rQ   r   r   r   r   total_spacedeleted_revss	            r.   r   RevisionMap._detect_cycles  s    EW.. 665*G4 7 
 LL
 , 
66#*G4 7 
 
 	 7<<>*[8| 455+)$w-88 66/*G4 7 
 LL
 , 
66(*G4 7 
 
 	 7<<>*[8)&*>?? K
*
s   FFc           
         U Hu  nUR                   (       d  M  UR                  c   eUR                   H@  nXB;   a4  X$   nUc   e[        SU< SUR                  < SUR                  < 35      eX2U'   MB     Mw     g )NzBranch name 'z' in revision z already used by revision )r   _orig_branch_labelsr<   ru   )r(   rd   r   ru   branch_labelmap_revs         r.   r   RevisionMap._map_branch_labels?  s     "H%%%33???$,$@$@L#+"&"4&222+ !- ( 1 1 ' 0 0  *2& %A "r1   c                V   U GH"  nUR                   (       d  M  UR                   R                  UR                   5        U R                  U/USS9 H(  nUR                   R                  UR                   5        M*     WnU(       d  M  UR                  (       a  M  UR                  (       a  M  UR                   R                  UR                   5        UR
                  (       a  X%R
                     nOM  U(       d  M  UR                  (       a  GM  UR                  (       d  Mw  GM%     g NFinclude_dependencies)r   update_get_descendant_nodes_is_real_branch_pointis_merge_pointr   )r(   rd   r   ru   nodeparents         r.   r   RevisionMap._add_branchesT  s     "H%%%&&--h.D.DE 66J5 7 D &&--h.D.DE
 F"888"111((//0F0FG++!%&:&:!; F"888"111 "r1   c                    U H~  nUR                   (       ac  [        R                  " UR                   5       Vs/ s H  oBU   PM	     nn[        U Vs/ s H  ofc  M  UR                  PM     sn5      Ul        Mw  SUl        M     gs  snf s  snf )zResolve the 'dependencies' for each revision in a collection
in terms of actual revision ids, as opposed to branch labels or other
symbolic names.

The collection is then assigned to the _resolved_dependencies
attribute on each revision object.

Nr   )dependenciesr   to_tupler   ru   _resolved_dependencies)r(   rd   r   ru   depdepsds          r.   r   RevisionMap._add_depends_onk  s     "H$$)-x7L7L)M)M#I)M   38)-?AZQZZ?3/ 35/ " @s   BB
B
c                .   U H  nUR                   (       at  [        UR                   5      nU R                  U/SUS9 H7  nXSL a  M	  UR                   (       d  M  UR                  UR                   5        M9     [	        U5      Ul        M  SUl        M     g)a[  Create a collection of "dependencies" that omits dependencies
that are already ancestor nodes for each revision in a given
collection.

This builds upon the _resolved_dependencies collection created in the
_add_depends_on() method, looking in the fully populated revision map
for ancestors, and omitting them as the _resolved_dependencies
collection as it is copied to a new collection. The new collection is
then assigned to the _normalized_resolved_dependencies attribute on
each revision object.

The collection is then used to determine the immediate "down revision"
identifiers for this revision.

F)r   r   r   N)r   r   _get_ancestor_nodesdifference_updater   !_normalized_resolved_dependencies)r(   rd   r   ru   normalized_resolvedr   s         r.   r   !RevisionMap._normalize_depends_on  s    & "H..&)(*I*I&J#33J). 4 C
  333+==66 >C'>: >@:' "r1   c                  ^ U R                   nU(       d4  TR                  U;   a$  [        R                  " STR                  -  5        O/U(       a(  TR                  U;  a  [	        STR                  -  5      eTUTR                  '   T/nU R                  XC5        U R                  XC5        U R                  XC5        TR                  (       a   U =R                  TR                  4-  sl	        TR                  (       a   U =R                  TR                  4-  sl        TR                   HC  nXS;  a  [        R                  " SU< ST< S35        [        X5   5      R                  T5        ME     U R                  XC5        TR                   (       a2  [#        U4S jU R$                   5       5      TR                  4-   U l        TR&                  (       a3  [#        U4S jU R(                   5       5      TR                  4-   U l        gg)	zadd a single revision to an existing map.

This method is for single-revision use cases, it's not
appropriate for fully populating an entire revision map.

r   zrevision %s not in maprB   r   r   c              3     >#    U  H<  nU[        TR                  5      R                  TR                  /5      ;  d  M8  Uv   M>     g 7fr'   )r   r   unionru   r   headru   s     r.   r   +RevisionMap.add_revision.<locals>.<genexpr>  sG      %,D8778>>&&' ,
   7A	Ac              3     >#    U  H<  nU[        TR                  5      R                  TR                  /5      ;  d  M8  Uv   M>     g 7fr'   )r   r   r   ru   r   s     r.   r   r    sG      &D8==>DD&&' &r  N)r   ru   r   r   	Exceptionr   r   r   r   r   r   r   r   r   r   r   _is_real_headr   r   is_headrQ   )r(   ru   _replacer   rd   r   s    `    r.   add_revisionRevisionMap.add_revision  s    !!H--5II7(:K:KK (++474x7H7HHII"*XJ	9+	0Y-JJ8,,..J!!!2!2 4433G"		* T]#//9 4 	""93!!$ % ,,%   ""$ %D   JJ  ""$%DJ r1   Nc                    U R                   nU(       a  U R                  X!5      n[        U5      S:  a  [        UU(       a	  SU-  5      eS5      eU(       a  US   $ g)a  Return the current head revision.

If the script directory has multiple heads
due to branching, an error is raised;
:meth:`.ScriptDirectory.get_heads` should be
preferred.

:param branch_label: optional branch name which will limit the
 heads considered to those which include that branch_label.

:return: a string revision number.

.. seealso::

    :meth:`.ScriptDirectory.get_heads`

   z%s@headr  r   N)rQ   filter_for_lineagelenrM   )r(   r   current_headss      r.   get_current_headRevisionMap.get_current_head  sl    ( (,zz 33M }!,8	L( >D 
  ##r1   c                :    U R                  U R                  U5      $ r'   )r  r   )r(   
identifiers     r.   _get_base_revisionsRevisionMap._get_base_revisions  s    &&tzz:>>r1   c                  ^ ^^ [        U[        [        [        [        45      (       a,  [        U Vs/ s H  nT R                  U5      PM     snS5      $ T R                  U5      u  nm[        U5      S:X  aU   [        US   5      mTS:  a?  T R                  S5      nTb  [        U4S jU 5       5      n[        UU 4S jU 5       5      $  [        UU 4S jU 5       5      $ s  snf ! [         a     N'f = f)a?  Return the :class:`.Revision` instances with the given rev id
or identifiers.

May be given a single identifier, a sequence of identifiers, or the
special symbols "head" or "base".  The result is a tuple of one
or more identifiers, or an empty tuple in the case of "base".

In the cases where 'head', 'heads' is requested and the
revision map is empty, returns an empty tuple.

Supports partial identifiers, where the given identifier
is matched against all identifiers that start with the given
characters; if there is exactly one match, that determines the
full revision.

r   r  r   rQ   c              3  ^   >#    U  H"  nT[        U5      R                  ;   d  M  Uv   M$     g 7fr'   )is_revisionr   )r   r  r   s     r.   r   ,RevisionMap.get_revisions.<locals>.<genexpr>(  s1      1,8D#/#.t#4#B#B$C !%,8s   -	-c              3  D   >#    U  H  nTR                  UTS 9v   M     g7f))stepsN)_walk)r   r  rintr(   s     r.   r   r  .  s%      %(4 !JJt4J8(4s    c              3  H   >#    U  H  nTR                  UT5      v   M     g 7fr'   )_revision_for_ident)r   rev_idr   r(   s     r.   r   r  5  s(      )F ((>>)s   ")
isinstancer   r   r   	frozensetsumget_revisions_resolve_revision_numberr  int
ValueError)r(   id_id_elemresolved_idselect_headsr   r  s   `    @@r.   r$  RevisionMap.get_revisions	  s   ( cD%i8993G3**733GLL(,(E(Ec(J%K;1${1~.Dax'+'9'9''B'3+0 1,81 ,L  % %(4%     "  )  / H( " s   C#9AC( (
C54C5c                    U R                  U5      u  p#[        U5      S:  a  [        X!5      eU(       a  US   OSnU R                  XC5      $ )a  Return the :class:`.Revision` instance with the given rev id.

If a symbolic name such as "head" or "base" is given, resolves
the identifier into the current head or base revision.  If the symbolic
name refers to multiples, :class:`.MultipleHeads` is raised.

Supports partial identifiers, where the given identifier
is matched against all identifiers that start with the given
characters; if there is exactly one match, that determines the
full revision.

r  r   r   )r%  r  rM   r  )r(   r(  r*  r   resolveds        r.   get_revisionRevisionMap.get_revision:  sM     %)$A$A#$F!{a11<G+a.R''??r1   c                     U R                   U   nU$ ! [         a9     U R                  U5      nUs $ ! [         a  n[        SU-  U5      UeS nAff = ff = f)NzNo such branch: '%s')r   KeyErrorr  rX   )r(   r   
branch_revnonbranch_revres        r.   _resolve_branchRevisionMap._resolve_branchO  sy    	++L9J   		%% $ 8 8 F %$ # %*\9<		%s(    
A3A
AAAAc                .   U(       a  U R                  U5      nOS n U R                  U   nUSL a  U(       d   eU R                   Vs/ s H7  nU(       d  M  [        U5      S:  d  M  UR	                  U5      (       d  M5  UPM9     nnU(       a  U R                  Xb5      nU(       d%  [        SU< S[        U5      S:  a  SOS< 3U5      e[        U5      S:  a.  [        S	U< S
SR                  S USS  5       5      < S3U5      eU R                  US      nU(       a[  UbX  Uc   eU(       d   eU R                  UR                  UR                  5      (       d  [        SUR                  < SU< S3U5      eU$ ! [         a    Sn GNbf = fs  snf )NF   zNo such revision or branch ''   z\; please ensure at least four characters are present for partial revision identifier matches r  zMultiple revisions start with 'z': rP   c              3  ,   #    U  H
  nS U-  v   M     g7f)z'%s'Nr   r   r   s     r.   r   2RevisionMap._revision_for_ident.<locals>.<genexpr>  s     -L)Qfqj)s   r   z...rB   z is not a member of branch ')
r6  r   r2  r  
startswithr  rX   rS   _shares_lineageru   )r(   r*  check_branchr3  ru   xrevss          r.   r  RevisionMap._revision_for_ident_  s    --l;JJ	))+6H
 u; +++A Q! ()[(A +   ..tB% $  #;/!3N "$$		    TQ% #DII-L$q)-L$LN  	   --d1g6H0)));''!!:#6#6  &((,8 
 e  	H	s)   E? FF(F F?FFc                    [        U5      n[        U5       HT  nU(       d   eUR                  U R                  U/SS95      R	                  U/5      (       d  MC  UR                  U5        MV     U$ r   )r   r   r   r   
differencer   )r(   targetsr   s      r.   _filter_into_branch_heads%RevisionMap._filter_into_branch_heads  sk     g,=CJ3##**C5u*Mj#  $ ! r1   c                   ^ ^^ T R                  U5      u  pE/ mU(       a  TR                  U5        U(       a  TR                  U5        [        UU U4S jU 5       5      $ )Nc              3  X   >#    U  H  nTR                  UTTS 9(       d  M  Uv   M!     g7f)r   N)rA  )r   tgr   r(   sharess     r.   r   1RevisionMap.filter_for_lineage.<locals>.<genexpr>  s5      
##F1E $  Bs   *	*)r%  appendextendr   )r(   rH  check_againstr   r(  r   rN  s   `  `  @r.   r  RevisionMap.filter_for_lineage  sU     !99-HMM,'MM# 

 
 	
r1   c           	        U(       d  g[        U[        5      (       d  [        U R                  U5      5      nOUn[        R
                  " USS9 Vs/ s H+  n[        U[        5      (       d  U R                  U5      OUPM-     nn[        [        U R                  U/US95      R                  U R                  U/US95      R                  U5      5      $ s  snf )NTr   defaultr   )r!  r   r   r  r   r   r4   r   r   r   r   r   )r(   targettest_against_revsr   resolved_targettest_against_revresolved_test_against_revss          r.   rA  RevisionMap._shares_lineage  s     !&(++&t'?'?'GHO$O %)MM!2%	&
%  ""2H== (()9:%&% 	# 	&
 **$%)= +  U(($%)= )  \45
 	
	&
s   2Cc                J   [        U[        5      (       a  SU;   a  UR                  SS5      u  p!OdUb_  [        U[        5      (       a  U(       a  [        US   [        5      (       a  [        U[        [        45      (       d  [	        SU< S35      eS nU R
                    US:X  a3  U(       a  U R                  U R                  U5      U4$ U R                  U4$ US:X  a!  U R                  U5      nU(       a  U4U4$ SU4$ US	:X  d  Uc  SU4$ [        R                  " US S
9U4$ )Nr    r  r   zrevision identifier z= is not a string; ensure database driver settings are correctrQ   r  r   rC   rU  )r!  r]   splitr   r<   r   r  rQ   r   r  r   r   )r(   r(  r   current_heads       r.   r%  $RevisionMap._resolve_revision_number  s$    c3C3J #		#q 1L#_U##Js1vs4K4KcC<00147   L 	'>++DJJE  
 ''55F]00>L$44<''F]ck|##==d3\AAr1   c              #     #    U(       a  U R                   nOU R                  nU" UUUUUS9u  pU R                  X5       H  n
[        U R	                  U
5      5      v   M!     g7f)a=  Iterate through script revisions, starting at the given
upper revision identifier and ending at the lower.

The traversal uses strictly the `down_revision`
marker inside each migration script, so
it is a requirement that upper >= lower,
else you'll get nothing back.

The iterator yields :class:`.Revision` objects.

)r+   r,   r-   N)_collect_downgrade_revisions_collect_upgrade_revisions_topological_sortr   r/  )r(   r)   r*   r,   r+   r-   select_for_downgradefnrd   rQ   r   s              r.   iterate_revisionsRevisionMap.iterate_revisions  si     *  22B00B'#9
	 **9<D4,,T233 =s   A"A$c                j   ^ U(       a	  SU4S jjnOU(       a  SS jnOSS jnU R                  UTX#S9$ )Nc                @   > U T;  a  U R                   $ U R                  $ r'   )r   r   )r   rH  s    r.   rf  -RevisionMap._get_descendant_nodes.<locals>.fnC  s!    g%+++;;&r1   c                    U R                   $ r'   r   r   s    r.   rf  rk  K  s    '''r1   c                    U R                   $ r'   r   rm  s    r.   rf  rk  P  s    {{"r1   r   checkr   r   r5   zIterable[str]r   )r(   rH  r   rp  omit_immediate_dependenciesr   rf  s    `     r.   r   !RevisionMap._get_descendant_nodes9  sB     '' ' "(
# ..d / 
 	
r1   c                F    U(       a  SS jnOSS jnU R                  XQX#S9$ )Nc                    U R                   $ r'   )_normalized_down_revisionsrm  s    r.   rf  +RevisionMap._get_ancestor_nodes.<locals>.fn`  s    555r1   c                    U R                   $ r'   r   rm  s    r.   rf  rx  e  s    444r1   ro  rq  rr  )r(   rH  r   rp  r   rf  s         r.   r   RevisionMap._get_ancestor_nodesW  s0      6
5 ..d / 
 	
r1   c           
   #    #    Uc  U R                   n[        5       n[        R                  " 5       nU GH,  n[	        U5      nUR                  U5        U(       a
  [        5       n	U(       a  UR                  5       n
U(       a  W	R                  U
5        X;   a  M6  UR                  U
5        U" U
5       H8  nX;   nUc   eUR                  U:w  a  [        S5      eUR                  U5        M:     U
v   U(       a  M  U(       d  M  W	R                  U5      R                  U/5      nU(       d  M  [        SUR                  < SSR                  S U 5       5      < 35      e   g 7f)Nz(Dependency resolution failed; broken mapzRequested revision z) overlaps with other requested revisions rP   c              3  8   #    U  H  oR                   v   M     g 7fr'   r   r>  s     r.   r   9RevisionMap._iterate_related_revisions.<locals>.<genexpr>  s     %C(Qjj(r   )r   r   collectionsdequer  rP  popr   ru   r<   r   rG  rS   )r(   rf  rH  r   rp  seentodo
target_forrW  
per_targetr   r   next_revoverlapss                 r.   r   &RevisionMap._iterate_related_revisionsl  s<     <%%Du + 1 1 3!J ,FKK U
hhjNN3'; gF#|H#///((F2+F  KK) & 	# $$ u%227;FFH 8' #OO II%C(%CC	 ; "s   C8E%<E%&E%/6E%c           	       ^ ^^ T R                   mSUU 4S jjmU Vs1 s H  o3R                  iM     nn[        T R                   5      n[        [        U Vs1 s H   o3R                  U;   d  M  UR                  iM"     snUR                  S95      nU Vs/ s H  nT" U5      PM     nn/ n	Sn
U(       Ga4  Xj   n[        U5       H  u  pX:w  d  M  X;   d  M  Un
  GO   X;   a"  U	R                  U5        UR                  U5        TU   nUc   eUR                   Vs/ s H  nX;   d  M
  X;  d  M  UPM     nnU(       d  Xj	 X	 [        U
S-
  S5      n
OUR                  (       d4  [        UR                  5      S:X  a  US   Xj'   X   R                  U5        OFUS   Xj'   UR                  USS 5        T" US   5      X'   UR                  U4S jUSS  5       5        U(       a  GM4  U(       a   eU	$ s  snf s  snf s  snf s  snf )zYield revision ids of a collection of Revision objects in
topological sorted order (i.e. revisions always come after their
down_revisions and dependencies). Uses the order of keys in
_revision_map to sort.

c                n   > TR                  TU    /5       Vs1 s H  nUR                  iM     sn$ s  snf r'   )r   ru   )r   r   	id_to_revr(   s     r.   get_ancestors4RevisionMap._topological_sort.<locals>.get_ancestors  sA     119V3D2EFFA 

F  s   2)keyr   Nr  c              3  4   >#    U  H  nT" U5      v   M     g 7fr'   r   )r   r  r  s     r.   r   0RevisionMap._topological_sort.<locals>.<genexpr>  s      0<LDM$//<Ls   )r   r]   r5   Set[str])r   ru   r   r   index	enumeraterP  removerw  maxr   r  r   r   rQ  )r(   rd   rQ   r   r  inserted_orderr  r   ancestors_by_idxoutputcurrent_candidate_idx	candidatecheck_head_index	ancestorscandidate_revr   heads_to_addr  r  s   `                @@r.   rd  RevisionMap._topological_sort  sA    &&		 	 %..Iq

I. d001%*AUjjD.@UA"((
 ANNfM&1N !%<I/89I/J+  %=!.,<)  0K $MM),KK	* !*) 4$000 +EE Ey %&%; E    $%<(?,/0E0I1,M) *KK G GHAM?KA< )?GG% @LA<%,,\!"-=>),q/: )? )// 0<H<L0 { mB xe / B O< s)   G5G:.G:G?	H+H2Hc                T   [        U[        5      (       a  U R                  U5      nOUn[        [	        U5      5       H  nUS:  ag  US:w  d   eU R                  Uc  U R                  OUR                  5       Vs/ s H  n[        U5      PM     nnU(       a  U R                  X5      n	O?Un	O<US:X  a  Sn	O3U R                  Uc  U R                  OUR                  5      n	U	(       d  Sn	U	(       d  U(       a  SOUn
U
s  $ [        U	5      S:  a  [        S5      eU	S   nM     U$ s  snf )ai  
Walk the requested number of :steps up (steps > 0) or down (steps < 0)
the revision tree.

:branch_label is used to select branches only when walking up.

If the walk goes past the boundaries of the tree and :no_overwalk is
True, None is returned, otherwise the walk terminates early.

A RevisionError is raised if there is no unambiguous revision to
walk to.
r   rC   Nr   )rC   r  zAmbiguous walk)r!  r]   r/  rangeabsr$  r   r   r  r  rQ   r   r  r<   )r(   startr  r   no_overwalkinitial_r   walk_upchildrenrets              r.   r  RevisionMap._walk  s3   ( eS!!''.GG s5z"Aqy&(((  $11&-o

7??    $     #66wMH&H f$!H#11"? 

$22 H
 $#, *dw
X"#$455qkGC #F ?s   ;D%c                   Uc  g[        U[        5      (       d   S5       e[        R                  U5      nU(       Ga  UR	                  5       u  pVn[        U5      nUS:  a?  Uc  [        SU[        U5      4-  5      eU R                  UUUUS9n	U	c  [        S5      eXY4$ USL n
U
(       Ga  U(       a  [        R                  " U5      nU R                  X5      nU(       d\  [        [        [           U R                  U5      5      nU R                  X5      nU Vs/ s H  nU(       a  UR                   OUPM     nn[#        U5      S:X  d   eUS   nOk[        R                  " U5      nU(       d  [        SU[        U5      4-  5      e[#        [%        U5      5      S:  a  [        R&                  " S	5        US   nUnU R                  Uc  U R)                  U5      OU R)                  U< S
U< 35      UUS9n	U	c+  U
(       a  [        SU[        U5      4-  5      e[        S5      eXY4$ UR+                  S
5      u  nnnU(       d  SnXPR)                  U5      4$ s  snf )a  
Parse downgrade command syntax :target to retrieve the target revision
and branch label (if any) given the :current_revisions stamp of the
database.

Returns a tuple (branch_label, target_revision) where branch_label
is a string from the command specifying the branch to consider (or
None if no branch given), and target_revision is a Revision object
which the command refers to. target_revisions is None if the command
refers to 'base'. The target may be specified in absolute form, or
relative to :current_revisions.
NNNz(Expected downgrade target in string formr   1Relative revision %s didn't produce %d migrations)r  zWalked too farr  zadowngrade -1 from multiple heads is ambiguous; this usage will be disallowed in a future release.r    r  r  r  )r!  r]   _relative_destinationmatchgroupsr&  r<   r  r  r   r   r  r   r   r   _get_all_currentru   r  r   r   r/  
rpartition)r(   current_revisionsrW  r-   r  r   symbolrelativerel_intr   relative_revisioncr_tuplesymbol_listall_currentsl_all_currentr   r  s                    r.   _parse_downgrade_target#RevisionMap._parse_downgrade_targetE  s   $ >C
 
 	65	6 
 &++F3-2\\^*L((mG!|>'03;S\2JK 
 jj  6	 !  ;'(899#(($*dN!$##'==1B#C&*&=&=$'  +
 +/ #Ht/D/DX/N+K .2-D-D +.N
 *8+)7A /0

Q 6)7 ( +
  #;/1444!,Q,0MM:K,L)0"/!8#+S\":!;#  s#456: II!+ "31!5 (.jj (/ ))&1!..'3V< " 6 ! 
 ;(+47?W6NO 
 ,,<==#(( #)"3"3C"8aL..v666k+s   Ic           	     4   [        U[        5      (       a  [        R                  U5      nOSnU(       d  U R	                  U5      $ [
        R                  " U5      nUR                  5       u  pgn[        U5      n	U	S:  Ga6  UGc  U(       d  SnUn
U(       a  U R                  U R	                  U5      U5      n
U
(       d  U R                  U R                  U R	                  U5      5      U5      n[        U Vs1 s H  oR                  iM     snU VVs1 s H  nUR                    H  nUiM     M     snn-
  5      n
U
(       d  Sn
[        U
5      S:  a  [        S5      eU R!                  U
S   U	UUS9nUc  [        SU[#        U	5      4-  5      eU4$ U R!                  U R%                  U5      U	UUS94$ Uc  [        SU	[#        U	5      4-  5      eU R!                  Uc  U R%                  U5      OU R%                  U< SU< 35      U	US	94$ s  snf s  snnf )
a  
Parse upgrade command syntax :target to retrieve the target revision
and given the :current_revisions stamp of the database.

Returns a tuple of Revision objects which should be iterated/upgraded
to. The target may be specified in absolute form, or relative to
:current_revisions.
Nr   r'   r  z1Ambiguous upgrade from multiple current revisions)r  r  r   r  r  r    r  )r!  r]   r  r  r$  r   r   r  r&  r  r   r   ru   rw  r  r<   r  r  r/  )r(   r  rW  r-   r  current_revisions_tupr   r  relative_strr  
start_revsactive_on_branchr   downs                 r.   _parse_upgrade_target!RevisionMap._parse_upgrade_target  su    fc"")//7EE%%f-- !%.? @-2\\^*l|$a<~,,3)2
!%!8!8**+@A$"J & ,0+B+B 44 $ 2 23H I )	,( &+5EF5Ec\\5EF ,<+;C,/,J,JD !%,J !%+;&
  * *1Jz?Q&'K  jj$Q-"!- 6	 !  ;'03?X2OP  v JJ"//7&%1$:	    ~#,/7X.GH 
 

 (/ ))&1!..'3V< # 6  
 [ Gs   8H Hc                l   U R                  UUUS9u  pgUS:X  a  SnUb  [        U[        5      (       d   eUc?  U R                  R	                  5        Vs/ s H  nUc  M  UR
                  b  M  UPM     n	nO?U(       a  U/n	O4U R                  UR                  5       Vs/ s H  n[        U5      PM     n	nU(       a  [        U	5      S:  a  U R                  U R                  U5      /SS9 Vs1 s H  nUR                  iM     n
nU R                  U	 Vs1 s H  oR                  iM     snR                  U
5      5       Vs/ s H  n[        U5      PM     n	n[        U	5      S:X  a  [        S5      eU R                  U5      n[        U R!                  U	S	SS
95      n[        U R                  US	S95      nUR#                  U5        U(       a/  UR%                  UR'                  U R                  U	5      5      5        Ub  U(       d  X{;  a  [)        SU5      eX4$ s  snf s  snf s  snf s  snf s  snf )z
Compute the set of current revisions specified by :upper, and the
downgrade target specified by :target. Return all dependents of target
which are currently active.

:inclusive=True includes the target revision in the set
r  rW  r-   rC   Nr  Fr   r   z/Not a valid downgrade target from current headsT)r   rs  zNothing to drop)r  r!  r   r   r   r   r$  r   r  r  r   r6  ru   r   r<   r   r   intersection_updater   rG  r?   )r(   r)   r*   r+   r,   r-   r   target_revisionr   rootsr  rQ   downgrade_revisionsactive_revisionss                 r.   rb  (RevisionMap._collect_downgrade_revisions+  s     )-(D(D##9 )E )
%
 f$"O&*_h*O*OOO "  --4466C '*'8'8 6  E
 $%E
  --o.E.EFFC C F  
 CJN  33)),78). 4 C     ---23Uc\\U3@@KC C    5zQ#E  ""5) "&&%),1 ' 
 $$U$F

 	//0@A&& ++D,D,DU,KL
 '', ((95AA"))Q 4s*   H H/H H"/H'H,H1c                  ^ U R                  UUUS9 Vs/ s H  n[        U5      PM     nn[        U[        5      (       a  SU;   a  UR	                  S5      u  n  n	U R                  U5      n
U
bI  U
R                  U:X  a9  [        U
R                  5      S:X  d   e[        [        U
R                  5      5      nU Vs1 s H  oUR                  ;   d  M  UiM     nn[        U R                  USSS95      R                  U5      mU R                  U5      nU(       d%  [        U4S jU 5       5      (       a  [!        X!5      e[#        U5      [$        L d   S5       eU(       aD  US	   c>  U R'                  UUUS9u  pU(       d   eUS
:X  a  [%        5       nSnOU4nUR                  n[        U R                  USSS95      R                  U5      nTR)                  U5      nU(       a'  UR+                  S U R                  U5       5       5        U(       aC  U(       d<  U R-                  U Vs/ s H  n[        U5      PM     snSSS9nUR/                  U5        U[%        U5      4$ s  snf s  snf s  snf )a  
Compute the set of required revisions specified by :upper, and the
current set of active revisions specified by :lower. Find the
difference between the two to compute the required upgrades.

:inclusive=True includes the current/lower revisions in the set

:implicit_base=False only returns revisions which are downstream
of the current/lower revisions. Dependencies from branches with
different bases will not be included.
r  r    Nr  T)rp  r   c              3  8   >#    U  H  nUc  M  UT;  v   M     g 7fr'   r   )r   r   required_node_sets     r.   r   9RevisionMap._collect_upgrade_revisions.<locals>.<genexpr>  s#      %
( )C(((s   z#current_revisions should be a tupler   rC   c              3  8   #    U  H  n[        U5      v   M     g 7fr'   )r  r   s     r.   r   r    s     O5NcS))5Nr   F)r  r  r!  r]   	partitionr/  ru   r  r   nextiterr   r   r   r$  anyr?   typer   r  rG  r   r   r  )r(   r)   r*   r+   r,   r-   r   rH  branchr  r3  needr  current_node_setneedslower_descendentsr  s                   @r.   rc  &RevisionMap._collect_upgrade_revisions  s   * 11"''= 2 )
  	 )
 eS!!cUl ??3/LFAq**62J%**=*=*G:334999d:#;#;<=!(!(d6H6H,H    $$t$ % 
 %.	 	 !..u5 %
(%
 "
 "

 (55"#u,	10	1,
 !21!5!=11"''= 2 FA
 J3f}$)G!%(F!$$!D % 
 %!
"	 	 ",,-=> LLOT5G5G5NOO
 ] $ : :->?->cS!->?%* !; !
 %%&78eGn$$a)
(l @s   I%=I*I*+I/c                    [        U R                  U5      5      nUR                  U R                  [	        U5      SS95        U R                  U5      $ )NTr   )r   r$  r   r   r   rI  )r(   r(  top_revss      r.   r  RevisionMap._get_all_current  sO     t))#./$$T(^$$O	
 --h77r1   )r   r   r   r   rQ   )r   z Callable[[], Iterable[Revision]]r5   rH   r5   Tuple[str, ...])r5   r   )r   _InterimRevisionMapTyperQ   Set[Revision]r   Tuple[Revision, ...]r   r  r   r  r5   rH   )rd   Collection[Revision]r   r   r5   rH   )F)ru   r   r  r4   r5   rH   r'   )r   rV   r5   rV   )r  r]   r5   r  )r(  Optional[_GetRevArg]r5   %Tuple[Optional[_RevisionOrBase], ...])r(  rV   r5   Optional[Revision])r   r]   r5   r  )r*  zUnion[str, Tuple[()], None]rB  rV   r5   r  )rH  z#Iterable[Optional[_RevisionOrBase]]r5   Set[Optional[_RevisionOrBase]])rH  zIterable[_TR]rR  rV   r   r4   r5   zTuple[_TR, ...])rW  zOptional[_RevisionOrStr]rX  zSequence[_RevisionOrStr]r   r4   r5   r4   )r(  r  r5   z%Tuple[Tuple[str, ...], Optional[str]])FFTF)r)   r3   r*   r3   r,   r4   r+   r4   r-   r4   re  r4   r5   Iterator[Revision])NFFT)rH  %Collection[Optional[_RevisionOrBase]]r   Optional[_RevisionMapType]rp  r4   rs  r4   r   r4   r5   zIterator[Any])NFT)
rH  r  r   r  rp  r4   r   r4   r5   r  )
rf  z#Callable[[Revision], Iterable[str]]rH  r  r   r  rp  r4   r5   r  )rd   r  rQ   r   r5   z	List[str])NT)
r  zOptional[Union[str, Revision]]r  r&  r   rV   r  r4   r5   zOptional[_RevisionOrBase])r  r3   rW  r3   r-   r4   r5   z/Tuple[Optional[str], Optional[_RevisionOrBase]])r  r3   rW  r3   r-   r4   r5   r  r2   )r)   r3   r*   r3   r+   r4   r,   r4   r-   r4   r5   z*Tuple[Set[Revision], Tuple[Revision, ...]])r(  r  r5   r  ))r6   r7   r8   r9   __doc__rE   r   memoized_propertyrQ   r   r   r   r   r   r   r   r   r   r	  r  r  r$  r/  r6  r  rI  r  rA  r%  rg  r   r   r   rd  r  r  r  rb  rc  r  r:   r   r1   r.   r~   r~   ~   s   $ 

 
 

 
 
    
    
I IV2@(2@ 2@ $	2@
 #2@ *2@ 
2@h2-25E2	2*-5E	.5-55E5	5.&@-&@5E&@	&@P6%r -1")"	"H?/'/	./b@*& '+@0@ $@ 
	@D:	'" &+	

 %
 #	

 

4 &+	&
(&
 4&
 #	&

 
&
P&B'&B	.&BX $'+%*#4&#4 '#4 	#4
 #4 !%#4 ##4 
#4P ,0,1%)
6
 )
 	

 &*
 #
 

B ,0%)
6
 )
 	

 #
 

4 0/0 70 )	0
 0 
0df'f f 
	fX '+ =-= = $	=
 = 
#=~v72v7 (v7 !%	v7
 
9v7pl2l (l !%	l
 
/l\e*&e* 'e* 	e*
 e* !%e* 
Ee*Nc%&c% 'c% 	c%
 c% !%c% 
4c%J8"8	'8r1   r~   c                     \ rS rSr% Sr\" 5       rS\S'    \" 5       rS\S'   Sr	S\S'    Sr
S	\S
'    SrS	\S'    SrS\S'    S\S'   S\S'   \S S j5       r  S!         S"S jjrS#S jrS$S jr\S%S j5       r\S%S j5       r\S%S j5       r\S&S j5       r\S&S j5       r\S&S j5       r\S&S j5       r\S&S j5       r\S&S j5       r\S&S j5       rSrg)'r   i  aW  Base class for revisioned objects.

The :class:`.Revision` class is the base of the more public-facing
:class:`.Script` object, which represents a migration script.
The mechanics of revision management and traversal are encapsulated
within :class:`.Revision`, while :class:`.Script` applies this logic
to Python files in a version directory.

zFrozenSet[str]r   r   Nr]   ru   zOptional[_RevIdType]r   r   r  r   r  r   r   c                    [        U5      R                  [        5      nU(       a,  [        SSR	                  [        U5      5      < SU< S35      eg )NzCharacter(s) 'rP   z&' not allowed in revision identifier 'r:  )r   r   _revision_illegal_charsr<   rS   r   )clsru   illegal_charss      r.   verify_rev_idRevision.verify_rev_id.  sD    H223JK99VM23X?  r1   c                   U(       a%  U[         R                  " U5      ;   a  [        U5      eUb%  U[         R                  " U5      ;   a  [        U5      eU R	                  U5        Xl        [        [         R                  " U5      5      U l        [        [         R                  " U5      5      U l        [         R                  " USS9U l	        [        U R                  5      U l        g Nr   rU  )r   r   rq   ry   r  ru   tuple_rev_as_scalarr   r   r   r   r   )r(   ru   r   r   r   s        r.   rE   Revision.__init__7  s     X})EEx((%(dmm7
 +
 )228$ 0}1MN/l0KL#'==#K  !9!9:r1   c                p   [        U R                  5      [        U R                  5      /nU R                  (       a  UR	                  SU R                  < 35        U R
                  (       a  UR	                  SU R
                  < 35        U R                  R                  < SSR                  U5      < S3$ )Nzdependencies=zbranch_labels=(rP   rc   )	reprru   r   r   rP  r   rF   r6   rS   )r(   argss     r.   __repr__Revision.__repr__L  sy    T]]#T$*<*<%=>KKT->->@AKKd.@.@BC>>22DIIdODDr1   c                    U R                   R                  UR                  /5      U l         U R                  UR                  ;   a,  U R                  R                  UR                  /5      U l        g g r'   )r   r   ru   r   r   )r(   ru   s     r.   r   Revision.add_nextrevT  sZ     --33X5F5F4GH==H>>><<--x/@/@.ABDL ?r1   c                    [         R                  " [         R                  " U R                  SS9U R                  -   5      $ r  )r   dedupe_tupler   r   r   r   s    r.   r   Revision._all_down_revisionsY  s7      MM$,,b9))*
 	
r1   c                    [         R                  " [         R                  " U R                  SS9U R                  -   5      $ )zlreturn immediate down revisions for a rev, omitting dependencies
that are still dependencies of ancestors.

r   rU  )r   r  r   r   r   r   s    r.   rw  #Revision._normalized_down_revisions`  s9       MM$,,b9445
 	
r1   c                @    [         R                  " U R                  SS9$ r  )r   r   r   r   s    r.   r   "Revision._versioned_down_revisionsk  s    }}T//<<r1   c                6    [        U R                  5      (       + $ )zReturn True if this :class:`.Revision` is a 'head' revision.

This is determined based on whether any other :class:`.Script`
within the :class:`.ScriptDirectory` refers to this
:class:`.Script`.   Multiple heads can be present.

)r4   r   r   s    r.   r  Revision.is_heado  s     %%%r1   c                6    [        U R                  5      (       + $ r'   )r4   r   r   s    r.   r  Revision._is_real_headz  s    ))***r1   c                    U R                   SL $ )z<Return True if this :class:`.Revision` is a 'base' revision.N)r   r   s    r.   r   Revision.is_base~  s     !!T))r1   c                H    U R                   SL =(       a    U R                  SL $ )zjReturn True if this :class:`.Revision` is a "real" base revision,
e.g. that it has no dependencies either.N)r   r   r   s    r.   r   Revision._is_real_base  s%     !!T)Gd.?.?4.GGr1   c                2    [        U R                  5      S:  $ )a  Return True if this :class:`.Script` is a branch point.

A branchpoint is defined as a :class:`.Script` which is referred
to by more than one succeeding :class:`.Script`, that is more
than one :class:`.Script` has a `down_revision` identifier pointing
here.

r  )r  r   r   s    r.   is_branch_pointRevision.is_branch_point  s     4<< 1$$r1   c                2    [        U R                  5      S:  $ )zjReturn True if this :class:`.Script` is a 'real' branch point,
taking into account dependencies as well.

r  )r  r   r   s    r.   r   Revision._is_real_branch_point  s     4$$%))r1   c                2    [        U R                  5      S:  $ )z6Return True if this :class:`.Script` is a merge point.r  )r  r   r   s    r.   r   Revision.is_merge_point  s     4112Q66r1   )r   r   r   r   r   r   ru   rw   r  )
ru   r]   r   %Optional[Union[str, Tuple[str, ...]]]r   r  r   r  r5   rH   )r5   r]   )ru   r   r5   rH   r  )r5   r4   )r6   r7   r8   r9   r  r"  r   __annotations__r   ru   r   r   r   classmethodr  rE   r  r   propertyr   rw  r   r  r  r   r   r  r   r   r:   r   r1   r.   r   r     s    (kG^);#,;L..Hc%*.M'. *.L&- #M8" ,+'66  ?C?C;; =; <	;
 =; 
;*EC
 
 
 
 
 = = & & + + * *
 H H 	% 	% * * 7 7r1   c                    g r'   r   rm  s    r.   r  r    s    ,/r1   c                    g r'   r   rm  s    r.   r  r    s     +.r1   c                >    U (       d  g [        U 5      S:X  a  U S   $ U $ )Nr  r   )r  rm  s    r.   r  r    s#     	SQ1v
r1   c                4    [        U [        5      (       d   eU $ r'   )r!  r   rm  s    r.   r  r    s    c8$$$$Jr1   )r   rH   r5   rH   )r   zUnion[Tuple[_T, ...], List[_T]]r5   z#Union[_T, Tuple[_T, ...], List[_T]])r   zOptional[Sequence[_T]]r5   zUnion[_T, Sequence[_T], None])r   r   r5   r   )9
__future__r   r~  r5  typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   
sqlalchemyr   r   r<  r   r   r]   
_RevIdType
_GetRevArgr3   _RevisionOrStr_RevisionOrBaser  r   r   r   compiler  r  r$   r  r<   r?   rM   rX   r_   rk   rq   ry   r~   r   r  r  r   r1   r.   <module>r)     s
   "  	                     '  3S	5c?23
Xc]SM

  U38_d :; z3'56sJ/ dCr23Xj5IIJ T]e8N34

#DE ) J J	I 		
M 	

M 
!m !
M 
$m $%= %#4l #A8 A8H,d7 d7N 
 / 
 / 
.	(.(. 
.
	"r1   