§
    ZøÁi±“  ã                  óØ  — d dl mZ d dlmZ d dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ er*ddlmZ ddlm Z  ddlm!Z! ddl"m#Z# ddl"m$Z$ ddl%m&Z& ddl%m'Z' 	 ej(        rd dl)m*Z* d d l)m+Z+ nd dl,m*Z* d d l,m+Z+ n# e-$ r dZ*Y nw xY w ej.        d!¦  «        Z/ ej.        d"¦  «        Z0 ej.        d#¦  «        Z1 ej.        d$¦  «        Z2d%Z3 ej.        d&¦  «        Z4 ej.        d'¦  «        Z5 G d(„ d)¦  «        Z6 G d*„ d+ej!        ¦  «        Z7dS ),é    )Úannotations)ÚcontextmanagerN)Ú
ModuleType)ÚAny)Úcast)ÚIterator)ÚList)ÚMapping)ÚOptional)ÚSequence)ÚSet)ÚTuple)ÚTYPE_CHECKING)ÚUnioné   ©Úrevision)Úwrite_hooksé   )Úutil)Ú	migration)Úcompat)Únot_none)Ú
_GetRevArg)Ú
_RevIdType)ÚRevision)ÚConfig)ÚMessagingOptions)ÚRevisionStep)Ú	StampStep)ÚZoneInfo)ÚZoneInfoNotFoundErrorz (?!\.\#|__init__)(.*\.py)(c|o)?$z(?!\.\#|__init__)(.*\.py)$z([a-f0-9]+)\.py$z\w+z%(rev)s_%(slug)sz
, *|(?: +)z, *|(?: +)|\:c                  ó’  — e Zd ZdZeddddddd edej        ¦  «        f	dcd„Ze	ddd„¦   «         Z
ej        ded„¦   «         Zdfd„Zedgd!„¦   «         Ze	 	 	 	 	 dhdid(„¦   «         Z	 djdkd,„Zdld0„Zdmd3„Zdnd5„Zdod7„Zdpd=„Zdqd>„Zdrd@„ZdqdA„ZdrdB„ZdsdF„ZdtdG„ZdudK„ZdvdL„Ze	dddM„¦   «         Z dwdP„Z!dxdQ„Z"dydS„Z#dzdU„Z$	 	 	 	 	 d{d|d_„Z%d}db„Z&dS )~ÚScriptDirectoryaH  Provides operations upon an Alembic script directory.

    This object is useful to get information as to current revisions,
    most notably being able to get at the "head" revision, for schemes
    that want to test if the current revision in the database is the most
    recent::

        from alembic.script import ScriptDirectory
        from alembic.config import Config
        config = Config()
        config.set_main_option("script_location", "myapp:migrations")
        script = ScriptDirectory.from_config(config)

        head_revision = script.get_current_head()



    é(   NFúutf-8r   ÚdirÚstrÚfile_templateÚtruncate_slug_lengthúOptional[int]Úversion_locationsúOptional[List[str]]Ú
sourcelessÚboolÚoutput_encodingÚtimezoneúOptional[str]Úhook_configúOptional[Mapping[str, str]]Úrecursive_version_locationsÚmessaging_optsÚreturnÚNonec                óx  — || _         || _        || _        |pd| _        || _        || _        t          j        | j        ¦  «        | _	        || _
        || _        |	| _        |
| _        t          j        |t          j        ¦  «        s4t#          j        dt          j                             |¦  «        z  ¦  «        ‚d S )Nr%   zVPath doesn't exist: %r.  Please use the 'init' command to create a new scripts folder.)r'   r)   r,   r*   r.   r0   r   ÚRevisionMapÚ_load_revisionsÚrevision_mapr1   r3   r5   r6   ÚosÚaccessÚF_OKr   ÚCommandErrorÚpathÚabspath)Úselfr'   r)   r*   r,   r.   r0   r1   r3   r5   r6   s              ú]/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/alembic/script/base.pyÚ__init__zScriptDirectory.__init__N   s¼   € ð ˆŒØ*ˆÔØ!2ˆÔØ$8Ð$>¸BˆÔ!Ø$ˆŒØ.ˆÔÝ$Ô0°Ô1EÑFÔFˆÔØ ˆŒØ&ˆÔØ+FˆÔ(Ø,ˆÔåŒy˜�bœgÑ&Ô&ð 	ÝÔ#ð"å$&¤G§O¢O°CÑ$8Ô$8ñ9ñô ð ð	ð 	ó    c                ón   — | j         }t          |¦  «        dk    rt          j        d¦  «        ‚|d         S )Nr   z"Multiple version_locations presentr   )Ú_version_locationsÚlenr   r@   )rC   Úlocs     rD   ÚversionszScriptDirectory.versionsp   s4   € àÔ%ˆÝˆs‰8Œ8�aŠ<ˆ<ÝÔ#Ð$HÑIÔIÐIà�q”6ˆMrF   úSequence[str]c                ó¸   — | j         rd„ | j         D ¦   «         S t          j                             t          j                             | j        d¦  «        ¦  «        fS )Nc                óp   — g | ]3}t           j                             t          j        |¦  «        ¦  «        ‘Œ4S © )r=   rA   rB   r   Úcoerce_resource_to_filename)Ú.0Úlocations     rD   ú
<listcomp>z6ScriptDirectory._version_locations.<locals>.<listcomp>{   sA   € ð ð ð àõ ”—’¥Ô @ÀÑ JÔ JÑKÔKðð ð rF   rK   )r,   r=   rA   rB   Újoinr'   ©rC   s    rD   rH   z"ScriptDirectory._version_locationsx   s]   € àÔ!ð 	Jðð à $Ô 6ðñ ô ð õ
 ”G—O’O¥B¤G§L¢L°´¸:Ñ$FÔ$FÑGÔGÐIÐIrF   úIterator[Script]c              #  ó  K  — | j         rd„ | j        D ¦   «         }n| j        g}t          ¦   «         }|D ]Ñ}t                               | |¦  «        D ]³}t          j                             |¦  «        }||v rt          j
        d|z  ¦  «         Œ=|                     |¦  «         t          j                             |¦  «        }t          j                             |¦  «        }t                               | ||¦  «        }|€Œ¯|V — Œ´ŒÒd S )Nc                óP   — g | ]#}t           j                             |¦  «        ¯!|‘Œ$S rO   )r=   rA   Úexists)rQ   Úverss     rD   rS   z3ScriptDirectory._load_revisions.<locals>.<listcomp>„   s<   € ð ð ð àÝ”7—>’> $Ñ'Ô'ðØðð ð rF   zJFile %s loaded twice! ignoring. Please ensure version_locations is unique.)r,   rH   rK   ÚsetÚScriptÚ_list_py_dirr=   rA   Úrealpathr   ÚwarnÚaddÚbasenameÚdirnameÚ_from_filename)	rC   ÚpathsÚdupesrZ   Ú	file_pathÚ	real_pathÚfilenameÚdir_nameÚscripts	            rD   r;   zScriptDirectory._load_revisions‚   s0  è è € ØÔ!ð 	$ðð à Ô3ðñ ô ˆEˆEð ”]�OˆEå‘”ˆØð 	ð 	ˆDÝ#×0Ò0°°tÑ<Ô<ð ð �	ÝœG×,Ò,¨YÑ7Ô7�	Ø Ð%Ð%Ý”Ið7Ø9BñCñô ð ð Ø—	’	˜)Ñ$Ô$Ð$åœ7×+Ò+¨IÑ6Ô6�Ýœ7Ÿ?š?¨9Ñ5Ô5�Ý×.Ò.¨t°X¸xÑHÔH�Ø�>ØØ����ðð	ð 	rF   Úconfigr   c                ó  — |                      d¦  «        }|€t          j        d¦  «        ‚|                      d¦  «        }|�t          |¦  «        }nd}|                      d¦  «        }|r“|                      d¦  «        }dddt          j        d	d
dœ}	 ||         }|€t                               |¦  «        }	nGd„ |                     |¦  «        D ¦   «         }	n'# t          $ r}
t          d|z  ¦  «        |
‚d}
~
ww xY wd}	|                      d¦  «        }|r6t          t                               |¦  «        ¦  «        t          j        dd…<   |                      d¦  «        dk    }t          t          j        |¦  «        |                      dt           ¦  «        ||                      d¦  «        dk    |                      dd¦  «        |	|                      d¦  «        |                     di ¦  «        ||j        ¬¦
  «
        S )z¶Produce a new :class:`.ScriptDirectory` given a :class:`.Config`
        instance.

        The :class:`.Config` need only have the ``script_location`` key
        present.

        Úscript_locationNz0No 'script_location' key found in configuration.r*   r,   Úversion_path_separatorú ú
ú:ú;)NÚspaceÚnewliner=   rq   rr   c                ó:   — g | ]}|¯|                      ¦   «         ‘ŒS rO   )Ústrip)rQ   Úxs     rD   rS   z/ScriptDirectory.from_config.<locals>.<listcomp>Ö   s6   € ð )ð )ð )àØð)ØŸš™	œ	ð)ð )ð )rF   za'%s' is not a valid value for version_path_separator; expected 'space', 'newline', 'os', ':', ';'Úprepend_sys_pathr   r5   Útruer)   r.   r0   r&   r1   Úpost_write_hooks)	r)   r*   r.   r0   r,   r1   r3   r5   r6   )Úget_main_optionr   r@   Úintr=   ÚpathsepÚ_split_on_space_commaÚsplitÚKeyErrorÚ
ValueErrorÚlistÚ_split_on_space_comma_colonÚsysrA   r$   rP   Ú_default_file_templateÚget_sectionr6   )Úclsrk   rm   Útslr*   Úversion_locations_strrn   Úsplit_on_pathÚ
split_charr,   Úkerx   Úrvls                rD   Úfrom_configzScriptDirectory.from_configŸ   su  € ð !×0Ò0Ð1BÑCÔCˆØÐ"ÝÔ#ØEñô ð ð ×$Ò$Ð%;Ñ<Ô<ˆØˆ?Ý#& s¡8¤8Ð Ð à#'Ð à &× 6Ò 6Ð7JÑ KÔ KÐà ð &	%Ø%+×%;Ò%;Ø(ñ&ô &Ð"ð
 ØØÝ”jØØðð ˆMðØ,9Ø*ô-�
ð Ð%å(=×(CÒ(CØ-ñ)ô )Ð%Ð%ð)ð )à!6×!<Ò!<¸ZÑ!HÔ!Hð)ñ )ô )Ð%Ð%øõ ð ð ð Ý ðBð -ñ-ñô ð
 ðøøøøðøøøð( !%Ðà!×1Ò1Ð2DÑEÔEÐØð 	ÝÝ+×1Ò1Ð2BÑCÔCñô �CŒH�R�a�R‰Lð ×$Ò$Ð%BÑCÔCÀvÒMˆÝÝÔ,¨_Ñ=Ô=Ø ×0Ò0ØÕ!7ñô ð "6Ø×-Ò-¨lÑ;Ô;¸vÒEØ"×2Ò2Ð3DÀgÑNÔNØ/Ø×+Ò+¨JÑ7Ô7Ø×*Ò*Ð+=¸rÑBÔBØ(+Ø!Ô0ð
ñ 
ô 
ð 	
s   ÂC Ã
C<Ã$C7Ã7C<ÚancestorÚmultiple_headsÚstartÚendÚ
resolutionúIterator[None]c              #  ó`  K  — 	 d V — d S # t           j        $ r^}|€t          t          |j        ¦  «        }|€t          t          |j        ¦  «        }|sd}|||dœz  }t          j        |¦  «        |‚d }~wt           j        $ rD}|sd}||p|j	        t          j
        |j        ¦  «        dœz  }t          j        |¦  «        |‚d }~wt           j        $ r&}|€
d|j	        z  }t          j        |¦  «        |‚d }~wt           j        $ r%}	t          j        |	j        d         ¦  «        |	‚d }	~	ww xY w)NzgRequested range %(start)s:%(end)s does not refer to ancestor/descendant revisions along the same branch©r‘   r’   zÄMultiple head revisions are present for given argument '%(head_arg)s'; please specify a specific target revision, '<branchname>@%(head_arg)s' to narrow to a specific head, or 'heads' for all heads)Úhead_argÚheadsz(Can't locate revision identified by '%s'r   )r   ÚRangeNotAncestorErrorr   r   ÚlowerÚupperr   r@   ÚMultipleHeadsÚargumentÚformat_as_commar˜   ÚResolutionErrorÚRevisionErrorÚargs)
rC   r�   r�   r‘   r’   r“   ÚrnaÚmhÚreÚerrs
             rD   Ú_catch_revision_errorsz&ScriptDirectory._catch_revision_errorsô   s†  è è € ð#	:ØˆEˆEˆEˆEˆEøÝÔ-ð 	7ð 	7ð 	7Øˆ}Ý�S #¤)Ñ,Ô,�Øˆ{Ý�3 ¤	Ñ*Ô*�Øð ðJð ð  ¨E¸#Ð">Ð">Ñ>ˆHÝÔ# HÑ-Ô-°3Ð6øøøøÝÔ%ð 	<ð 	<ð 	<Ø!ð ðJð ð ,ØÐ. 2¤;ÝÔ-¨b¬hÑ7Ô7ð/ð /ñ ˆNõ Ô# NÑ3Ô3¸Ð;øøøøÝÔ'ð 	8ð 	8ð 	8ØÐ!ØGØ”Kñ�
õ Ô# JÑ/Ô/°RÐ7øøøøÝÔ%ð 	:ð 	:ð 	:ÝÔ# C¤H¨Q¤KÑ0Ô0°cÐ9øøøøð	:øøøs9   „
 ŠD-™AA2Á2D-Â?CÃD-Ã!C6Ã6D-Ä D(Ä(D-Úbaser˜   Úheadc              #  óÜ   K  — |                       ||¬¦  «        5  | j                             ||dd¬¦  «        D ]}t          t          |¦  «        V — Œ	 ddd¦  «         dS # 1 swxY w Y   dS )a-  Iterate through all revisions.

        :param base: the base revision, or "base" to start from the
         empty revision.

        :param head: the head revision; defaults to "heads" to indicate
         all head revisions.  May also be "head" to indicate a single
         head revision.

        r–   TF)Ú	inclusiveÚassert_relative_lengthN)r¦   r<   Úiterate_revisionsr   r\   )rC   r§   r¨   Úrevs       rD   Úwalk_revisionszScriptDirectory.walk_revisions"  sÕ   è è € ð ×(Ò(¨t¸Ð(Ñ>Ô>ð 	(ð 	(ØÔ(×:Ò:Ø�d dÀ5ð ;ñ ô ð (ð (�õ �6 3Ñ'Ô'Ð'Ð'Ð'Ð'ð(ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   š9A!Á!A%Á(A%Úid_r   úTuple[Script, ...]c                óÒ   — |                       ¦   «         5  t          t          t          df         | j                             |¦  «        ¦  «        cddd¦  «         S # 1 swxY w Y   dS )z€Return the :class:`.Script` instance with the given rev identifier,
        symbolic name, or sequence of identifiers.

        .N)r¦   r   r   r\   r<   Úget_revisions©rC   r¯   s     rD   r²   zScriptDirectory.get_revisions5  s§   € ð
 ×(Ò(Ñ*Ô*ð 	ð 	ÝÝ•f˜c�kÔ"ØÔ!×/Ò/°Ñ4Ô4ñô ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   •:AÁA Á#A úTuple[str, ...]úSet[Script]c                óÎ   — |                       ¦   «         5  t          t          t                   | j                             |¦  «        ¦  «        cd d d ¦  «         S # 1 swxY w Y   d S ©N)r¦   r   r   r\   r<   Ú_get_all_currentr³   s     rD   Úget_all_currentzScriptDirectory.get_all_current@  s®   € Ø×(Ò(Ñ*Ô*ð 	Nð 	NÝ��Fœ TÔ%6×%GÒ%GÈÑ%LÔ%LÑMÔMð	Nð 	Nð 	Nð 	Nñ 	Nô 	Nð 	Nð 	Nð 	Nð 	Nð 	Nð 	Nøøøð 	Nð 	Nð 	Nð 	Nð 	Nð 	Ns   •8AÁAÁ!Ar\   c                ó¸   — |                       ¦   «         5  t          t          | j                             |¦  «        ¦  «        cddd¦  «         S # 1 swxY w Y   dS )z�Return the :class:`.Script` instance with the given rev id.

        .. seealso::

            :meth:`.ScriptDirectory.get_revisions`

        N)r¦   r   r\   r<   Úget_revisionr³   s     rD   r»   zScriptDirectory.get_revisionD  s¬   € ð ×(Ò(Ñ*Ô*ð 	Eð 	EÝ� Ô 1× >Ò >¸sÑ CÔ CÑDÔDð	Eð 	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð 	Eð 	Es   •-AÁAÁAú%Optional[Union[str, Tuple[str, ...]]]c                ó¼   — |                       ¦   «         5  | j                             |¦  «        \  }}ddd¦  «         n# 1 swxY w Y   |sdS |dk    r|S |d         S )z[Convert a symbolic revision, i.e. 'head' or 'base', into
        an actual revision number.Nr˜   r   )r¦   r<   Ú_resolve_revision_number)rC   r¯   r­   Úbranch_names       rD   Úas_revision_numberz"ScriptDirectory.as_revision_numberP  s½   € ð ×(Ò(Ñ*Ô*ð 	Oð 	OØ#Ô0×IÒIÈ#ÑNÔNÑˆC�ð	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oð ð 	à�4Ø�GŠ^ˆ^ØˆJà�q”6ˆMs   •?¿AÁAr›   ú!Union[str, Tuple[str, ...], None]rš   Úkwr   c                óf   — t          t          t                    | j        j        ||fi |¤Ž¦  «        S )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:`.Script` objects.

        .. seealso::

            :meth:`.RevisionMap.iterate_revisions`

        )r   r   r\   r<   r¬   )rC   r›   rš   rÂ   s       rD   r¬   z!ScriptDirectory.iterate_revisionsa  s;   € õ* Ý•VÔØ/ˆDÔÔ/°°uÐCÐCÀÐCÐCñ
ô 
ð 	
rF   c                ó”   — |                       d¬¦  «        5  | j                             ¦   «         cddd¦  «         S # 1 swxY w Y   dS )aG  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.

        :return: a string revision number.

        .. seealso::

            :meth:`.ScriptDirectory.get_heads`

        z}The script directory has multiple heads (due to branching).Please use get_heads(), or merge the branches using alembic merge.©r�   N)r¦   r<   Úget_current_headrU   s    rD   rÆ   z ScriptDirectory.get_current_head{  sœ   € ð ×(Ò(ð!ð )ñ 
ô 
ð 	8ð 	8ð Ô$×5Ò5Ñ7Ô7ð	8ð 	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s   —=½AÁAú	List[str]c                ó4   — t          | j        j        ¦  «        S )aU  Return all "versioned head" revisions as strings.

        This is normally a list of length one,
        unless branches are present.  The
        :meth:`.ScriptDirectory.get_current_head()` method
        can be used normally when a script directory
        has only one head.

        :return: a tuple of string revision numbers.
        )r‚   r<   r˜   rU   s    rD   Ú	get_headszScriptDirectory.get_heads“  s   € õ �DÔ%Ô+Ñ,Ô,Ð,rF   c                ó�   — |                       ¦   «         }t          |¦  «        dk    rt          j        d¦  «        ‚|r|d         S dS )a#  Return the "base" revision as a string.

        This is the revision number of the script that
        has a ``down_revision`` of None.

        If the script directory has multiple bases, an error is raised;
        :meth:`.ScriptDirectory.get_bases` should be
        preferred.

        r   z@The script directory has multiple bases. Please use get_bases().r   N)Ú	get_basesrI   r   r@   )rC   Úbasess     rD   Úget_basezScriptDirectory.get_base   sT   € ð —’Ñ Ô ˆÝˆu‰:Œ:˜Š>ˆ>ÝÔ#ð*ñô ð ð ð 	Ø˜”8ˆOà�4rF   c                ó4   — t          | j        j        ¦  «        S )z”return all "base" revisions as strings.

        This is the revision number of all scripts that
        have a ``down_revision`` of None.

        )r‚   r<   rÌ   rU   s    rD   rË   zScriptDirectory.get_bases¶  s   € õ �DÔ%Ô+Ñ,Ô,Ð,rF   ÚdestinationÚcurrent_revúList[RevisionStep]c                óæ   ‡ — ‰                       d|¬¦  «        5  ‰                      ||d¬¦  «        }ˆ fd„t          t          |¦  «        ¦  «        D ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S )NzFDestination %(end)s is not a valid upgrade target from current head(s)©r�   r’   T)Úimplicit_basec                óZ   •— g | ]'}t           j                             ‰j        |¦  «        ‘Œ(S rO   )r   ÚMigrationStepÚupgrade_from_scriptr<   ©rQ   rj   rC   s     €rD   rS   z1ScriptDirectory._upgrade_revs.<locals>.<listcomp>Ê  sF   ø€ ð ð ð ð õ Ô'×;Ò;ØÔ% vñô ðð ð rF   )r¦   r¬   Úreversedr‚   ©rC   rÏ   rÐ   Úrevss   `   rD   Ú_upgrade_revszScriptDirectory._upgrade_revs¿  så   ø€ ð ×(Ò(ð*àð )ñ 
ô 
ð 	ð 	ð
 ×)Ò)Ø˜[¸ð *ñ ô ˆDðð ð ð õ '¥t¨D¡z¤zÑ2Ô2ð	ñ ô ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ™A A&Á&A*Á-A*c                ó²   ‡ — ‰                       d|¬¦  «        5  ‰                      ||d¬¦  «        }ˆ fd„|D ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S )NzHDestination %(end)s is not a valid downgrade target from current head(s)rÓ   T)Úselect_for_downgradec                óZ   •— g | ]'}t           j                             ‰j        |¦  «        ‘Œ(S rO   )r   rÖ   Údowngrade_from_scriptr<   rØ   s     €rD   rS   z3ScriptDirectory._downgrade_revs.<locals>.<listcomp>Ü  sF   ø€ ð ð ð ð õ Ô'×=Ò=ØÔ% vñô ðð ð rF   )r¦   r¬   rÚ   s   `   rD   Ú_downgrade_revszScriptDirectory._downgrade_revsÑ  s×   ø€ ð ×(Ò(ð*àð )ñ 
ô 
ð 	ð 	ð
 ×)Ò)Ø˜[¸tð *ñ ô ˆDðð ð ð ð #ð	ñ ô ð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ™&AÁAÁAr   r   úList[StampStep]c           
     óÊ  ‡ — ‰                       d¬¦  «        5  ‰                      |¦  «        }g }|sd}g }t          j        |¦  «        D ]R}|rN|                     ‰ j                             t          t          t                   |¦  «        |d¬¦  «        ¦  «         ŒSt          j
        |¦  «        }‰                      |¦  «        pd g}|D �]}}|€"|                     ˆ fd„|D ¦   «         ¦  «         Œ'||v rŒ,t          ‰ j                             |g¦  «        ¦  «        }	t          ‰ j                             |g¦  «        ¦  «        }
|	                     |¦  «        r[|
                     |¦  «        rJ ‚d„ |D ¦   «         }t          j        ||j        dd‰ j        ¦  «        }|                     |¦  «         Œì|
                     |¦  «        rEd	„ |D ¦   «         }t          j        ||j        dd‰ j        ¦  «        }|                     |¦  «         �ŒFt          j        d
|j        dd‰ j        ¦  «        }|                     |¦  «         �Œ|cd d d ¦  «         S # 1 swxY w Y   d S )NzCMultiple heads are present; please specify a single target revisionrÅ   r§   T)Úinclude_dependenciesc           	     óT   •— g | ]$}t          j        |j        d dd‰j        ¦  «        ‘Œ%S )NFT)r   r    r   r<   )rQ   r¨   rC   s     €rD   rS   z/ScriptDirectory._stamp_revs.<locals>.<listcomp>  sL   ø€ ð 	ð 	ð 	ð !%õ &Ô/Ø $¤Ø $Ø %Ø $Ø $Ô 1ñô ð	ð 	ð 	rF   c                ó   — g | ]	}|j         ‘Œ
S rO   r   ©rQ   r¨   s     rD   rS   z/ScriptDirectory._stamp_revs.<locals>.<listcomp>  ó   € Ð!KÐ!KÐ!K°D $¤-Ð!KÐ!KÐ!KrF   Fc                ó   — g | ]	}|j         ‘Œ
S rO   r   rç   s     rD   rS   z/ScriptDirectory._stamp_revs.<locals>.<listcomp>,  rè   rF   rO   )r¦   r²   r   Úto_tupleÚextendr<   Úfilter_for_lineager   r   r\   Úunique_listr[   Ú_get_descendant_nodesÚ_get_ancestor_nodesÚintersectionr   r    r   Úappend)rC   r   r˜   Ú
heads_revsÚstepsÚfiltered_headsr­   ÚdestsÚdestÚdescendantsÚ	ancestorsÚ
todo_headsÚsteps   `            rD   Ú_stamp_revszScriptDirectory._stamp_revsã  s<  ø€ ð ×(Ò(ð%ð )ñ 
ô 
ð Y	ð Y	ð ×+Ò+¨EÑ2Ô2ˆJàˆEàð "Ø!�à+-ˆNÝ”} XÑ.Ô.ð ð �Øð Ø"×)Ò)ØÔ)×<Ò<Ý ¥­&Ô!1°:Ñ>Ô>ØØ15ð =ñ ô ñô ð øõ "Ô-¨nÑ=Ô=ˆNà×&Ò& xÑ0Ô0Ð:°T°FˆEàð >ñ >�Ø�<ð —L’Lð	ð 	ð 	ð 	ð )7ð	ñ 	ô 	ñô ð ð Ø˜^Ð+Ð+àõ "ØÔ%×;Ò;¸T¸FÑCÔCñô �õ   Ô 1× EÒ EÀtÀfÑ MÔ MÑNÔN�	à×+Ò+¨NÑ;Ô;ð "ð  )×5Ò5°nÑEÔEÐEÐEÐEØ!KÐ!K¸NÐ!KÑ!KÔ!K�JÝ$Ô.Ø"ØœØØØÔ)ñô �Dð —L’L Ñ&Ô&Ð&ØØ×+Ò+¨NÑ;Ô;ð ð "LÐ!K¸NÐ!KÑ!KÔ!K�JÝ$Ô.Ø"ØœØØØÔ)ñô �Dð —L’L Ñ&Ô&Ð&Ùõ %Ô.Ø˜DœM¨4°°tÔ7Hñô �Dð —L’L Ñ&Ô&Ð&ÙàðsY	ð Y	ð Y	ð Y	ñ Y	ô Y	ð Y	ð Y	ð Y	ð Y	ð Y	ð Y	øøøð Y	ð Y	ð Y	ð Y	ð Y	ð Y	s   ˜H3IÉIÉIc                ó:   — t          j        | j        d¦  «         dS )zÞRun the script environment.

        This basically runs the ``env.py`` script present
        in the migration environment.   It is called exclusively
        by the command functions in :mod:`alembic.command`.


        úenv.pyN)r   Úload_python_filer'   rU   s    rD   Úrun_envzScriptDirectory.run_envA  s   € õ 	Ô˜dœh¨Ñ1Ô1Ð1Ð1Ð1rF   c                ó†   — t           j                             t           j                             | j        d¦  «        ¦  «        S )Nrý   )r=   rA   rB   rT   r'   rU   s    rD   Úenv_py_locationzScriptDirectory.env_py_locationL  s(   € åŒw�Š�rœwŸ|š|¨D¬H°hÑ?Ô?Ñ@Ô@Ð@rF   Úsrcrö   c                óØ   — t          j        dt          j                             |¦  «        › �fi | j        ¤Ž5  t          j        ||| j        fi |¤Ž d d d ¦  «         d S # 1 swxY w Y   d S ©NzGenerating )r   Ústatusr=   rA   rB   r6   Útemplate_to_filer0   )rC   r  rö   rÂ   s       rD   Ú_generate_templatez"ScriptDirectory._generate_templateP  s×   € ÝŒ[Ø1�"œ'Ÿ/š/¨$Ñ/Ô/Ð1Ð1ð
ð 
Ø59Ô5Hð
ð 
ð 	Ið 	Iõ Ô! # t¨TÔ-AÐHÐHÀRÐHÐHÐHð	Ið 	Ið 	Iñ 	Iô 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Iøøøð 	Ið 	Ið 	Ið 	Ið 	Ið 	Is   ¸AÁA#Á&A#c                óÐ   — t          j        dt          j                             |¦  «        › �fi | j        ¤Ž5  t          j        ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r  )r   r  r=   rA   rB   r6   ÚshutilÚcopy)rC   r  rö   s      rD   Ú
_copy_filezScriptDirectory._copy_fileV  sµ   € ÝŒ[Ø1�"œ'Ÿ/š/¨$Ñ/Ô/Ð1Ð1ð
ð 
Ø59Ô5Hð
ð 
ð 	#ð 	#õ ŒK˜˜TÑ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#ð 	#ð 	#s   ¸AÁAÁ"ArA   c                ó  — t           j                             |¦  «        }t           j                             |¦  «        sIt	          j        d|› �fi | j        ¤Ž5  t          j        |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S )NzCreating directory )r=   rA   rB   rY   r   r  r6   Úmakedirs)rC   rA   s     rD   Ú_ensure_directoryz!ScriptDirectory._ensure_directory\  sØ   € ÝŒw�Š˜tÑ$Ô$ˆÝŒw�~Š~˜dÑ#Ô#ð 	"Ý”Ø, dÐ,Ð,ðð Ø04Ô0Cðð ð "ð "õ ”˜DÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "ð	"ð 	"s   ÁA;Á;A?ÂA?údatetime.datetimec                ó*  — | j         �ít          €t          j        d¦  «        ‚	 t          | j         ¦  «        }n# t          $ r d }Y nw xY w|€S	 t          | j                              ¦   «         ¦  «        }n+# t          $ r t          j        d| j         z  ¦  «        d ‚w xY wt          j                             ¦   «                              t          j         j	        ¬¦  «         
                    |¦  «        }nt          j                             ¦   «         }|S )NzePython >= 3.9 is required for timezone support or the 'backports.zoneinfo' package must be installed.zCan't locate timezone: %s)Útzinfo)r1   r!   r   r@   r"   r›   ÚdatetimeÚutcnowÚreplaceÚutcÚ
astimezoneÚnow)rC   r  Úcreate_dates      rD   Ú_generate_create_datez%ScriptDirectory._generate_create_dated  s"  € ØŒ=Ð$ÝÐÝÔ'ðJñô ð ð
Ý! $¤-Ñ0Ô0��øÝ(ð ð ð Ø���ðøøøàˆ~ð Ý% d¤m×&9Ò&9Ñ&;Ô&;Ñ<Ô<�F�FøÝ,ð  ð  ð  ÝÔ+Ø3°d´mÑCñô àð ð øøøõ
 Ô!×(Ò(Ñ*Ô*ß’¥Ô 1Ô 5�Ñ6Ô6ß’˜FÑ#Ô#ð ˆKõ #Ô+×/Ò/Ñ1Ô1ˆKØÐs   ¤9 ¹AÁAÁ&A5 Á5(BÚrevidÚmessageúOptional[_RevIdType]ÚspliceúOptional[bool]Úbranch_labelsÚversion_pathÚ
depends_onúOptional[Script]c                óŒ  ‡ — |€d}	 t                                |¦  «         n7# t          j        $ r%}	t	          j        |	j        d         ¦  «        |	‚d}	~	ww xY w‰                      d¬¦  «        5  t          t          t          d         df         ‰ j                             |¦  «        ¦  «        }
|
D ]
}|dk    sJ ‚Œ	 ddd¦  «         n# 1 swxY w Y   t          t          |
¦  «        ¦  «        t          |
¦  «        k    rt	          j        d	¦  «        ‚‰                      ¦   «         }|€xt          ‰ j        ¦  «        d
k    rY|
D ]A}|�=t#          |t           ¦  «        sJ ‚t$          j                             |j        ¦  «        } nŒBt	          j        d¦  «        ‚n‰ j        }t$          j                             t$          j                             |¦  «        ¦  «        }‰ j        D ]'}t$          j                             |¦  «        |k    r nŒ(t	          j        d|z  ¦  «        ‚‰ j        r‰                      |¦  «         ‰                      ||||¦  «        }|s*|
D ]'}|�#|j        st	          j        d|j        z  ¦  «        ‚Œ(|rW‰                      ¦   «         5  d„ ˆ fd„t	          j        |¦  «        D ¦   «         D ¦   «         }ddd¦  «         n# 1 swxY w Y   nd} ‰ j        t$          j                             ‰ j        d¦  «        |ftA          |¦  «        t          j!        tE          d„ |
D ¦   «         ¦  «        ¦  «        t	          j#        |¦  «        t          j!        |¦  «        |t          j$        |�|nddœ|¤Ž ‰ j%        }|rtM          j'        ||¦  «         	 t            (                    ‰ |¦  «        }n7# t          j        $ r%}	t	          j        |	j        d         ¦  «        |	‚d}	~	ww xY w|€dS |r/|j)        s(t	          j        d|j        ›d|›d|j        ›d�¦  «        ‚‰ j         *                    |¦  «         |S )aÄ  Generate a new revision file.

        This runs the ``script.py.mako`` template, given
        template arguments, and creates a new file.

        :param revid: String revision id.  Typically this
         comes from ``alembic.util.rev_id()``.
        :param message: the revision message, the one passed
         by the -m argument to the ``revision`` command.
        :param head: the head revision to generate against.  Defaults
         to the current "head" if no branches are present, else raises
         an exception.
        :param splice: if True, allow the "head" version to not be an
         actual head; otherwise, the selected head must be a head
         (e.g. endpoint) revision.

        Nr¨   r   z{Multiple heads are present; please specify the head revision on which the new revision should be based, or perform a merge.rÅ   r   .r§   z"Duplicate head revisions specifiedr   zAMultiple version locations present, please specify --version-pathz7Path %s is not represented in current version locationszeRevision %s is not a head revision; please specify --splice to create a new branch from this revisionc                ó8   — g | ]\  }}||j         v r|n|j        ‘ŒS rO   )r  r   )rQ   r­   Údeps      rD   rS   z5ScriptDirectory.generate_revision.<locals>.<listcomp>á  sE   € ð 
'ð 
'ð 
'ñ !˜˜Sð  #Ô"3Ð3Ð3ð ˜à œ\ð	
'ð 
'ð 
'rF   c                ób   •— g | ]+}t          ‰j                             |¦  «        ¦  «        |f‘Œ,S rO   )r   r<   r»   )rQ   r%  rC   s     €rD   rS   z5ScriptDirectory.generate_revision.<locals>.<listcomp>ç  sG   ø€ ð %ð %ð %àõ " $Ô"3×"@Ò"@ÀÑ"EÔ"EÑFÔFÈÐLð%ð %ð %rF   zscript.py.makoc              3  ó,   K  — | ]}|�|j         nd V — Œd S r·   r   )rQ   Úhs     rD   ú	<genexpr>z4ScriptDirectory.generate_revision.<locals>.<genexpr>ô  s,   è è € ÐKÐKÀ A M�a”j�j°tÐKÐKÐKÐKÐKÐKrF   zempty message)Úup_revisionÚdown_revisionr  r!  r  Úcommar  zVersion z specified branch_labels z, however the migration file zb does not have them; have you upgraded your script.py.mako to include the 'branch_labels' section?)+r\   Úverify_rev_idr   r    r   r@   r¡   r¦   r   r   r   r<   r²   rI   r[   r  rH   Ú
isinstancer=   rA   rb   rK   ÚnormpathrB   r,   r  Ú	_rev_pathÚis_headÚto_listr  rT   r'   r(   Útuple_rev_as_scalarÚtuplerê   rž   r3   r   Ú
_run_hooksÚ
_from_pathr  Úadd_revision)rC   r  r  r¨   r  r  r   r!  rÂ   r¥   r˜   r(  r  Úhead_Ú	norm_pathÚ	vers_pathrA   Úresolved_depends_onrz   rj   s   `                   rD   Úgenerate_revisionz!ScriptDirectory.generate_revision€  sl  ø€ ð8 ˆ<ØˆDð	:Ý× Ò  Ñ'Ô'Ð'Ð'øÝÔ%ð 	:ð 	:ð 	:ÝÔ# C¤H¨Q¤KÑ0Ô0°cÐ9øøøøð	:øøøð ×(Ò(ð&ð )ñ 
ô 
ð 	#ð 	#õ Ý•h˜zÔ*¨CÐ/Ô0ØÔ!×/Ò/°Ñ5Ô5ñô ˆEð ð #ð #�Ø˜F’{�{�{�{�{ð#ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ �s�5‰zŒz‰?Œ?�c %™jœjÒ(Ð(ÝÔ#Ð$HÑIÔIÐIà×0Ò0Ñ2Ô2ˆàÐÝ�4Ô*Ñ+Ô+¨aÒ/Ð/Ø"ð 	ð 	�EØÐ(Ý)¨%µÑ8Ô8Ð8Ð8Ð8Ý')¤w§¢°u´zÑ'BÔ'B˜Ø˜ð )õ
 Ô+ð8ñô ð ð ð  $œ}�å”G×$Ò$¥R¤W§_¢_°\Ñ%BÔ%BÑCÔCˆ	ØÔ0ð 	ð 	ˆIÝŒw×Ò 	Ñ*Ô*¨iÒ7Ð7Ø�ð 8õ Ô#ð$Ø&2ñ3ñô ð ð
 Ô!ð 	1Ø×"Ò" <Ñ0Ô0Ð0à�~Š~˜l¨E°7¸KÑHÔHˆàð 	Øð ð �ØÐ$¨U¬]Ð$ÝÔ+ðMàœ.ñ)ñô ð øð ð 	'Ø×,Ò,Ñ.Ô.ð ð ð
'ð 
'ð%ð %ð %ð %å#'¤<°
Ñ#;Ô#;ð%ñ %ô %ð
'ñ 
'ô 
'Ð#ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øð #'ÐàˆÔÝŒG�LŠL˜œÐ#3Ñ4Ô4Øð	
õ ˜E™
œ
Ý"Ô6ÝÐKÐKÀUÐKÑKÔKÑKÔKñô õ œ-¨Ñ6Ô6ÝÔ3Ð4GÑHÔHØ#ÝÔ&Ø&Ð2�G�G¸ð	
ð 	
ð ð	
ð 	
ð 	
ð  Ô+ÐØð 	;ÝÔ" 4Ð)9Ñ:Ô:Ð:ð	:Ý×&Ò& t¨TÑ2Ô2ˆFˆFøÝÔ%ð 	:ð 	:ð 	:ÝÔ# C¤H¨Q¤KÑ0Ô0°cÐ9øøøøð	:øøøàˆ>Ø�4Øð 	 Ô!5ð 	ÝÔ#Ð#ð
 ”?�?�? M M M°6´;°;°;ð	@ñô ð ð 	Ô×&Ò& vÑ.Ô.Ð.ØˆsQ   ‡" ¢A± AÁAÁ/AC
Ã
CÃCÊ+KËKËKÎ"N> Î>O2Ï O-Ï-O2Úrev_idr  c                óø  — t          |                     ¦   «         ¦  «        }d                     t                               |pd¦  «        ¦  «                             ¦   «         }t          |¦  «        | j        k    r,|d | j        …                              dd¦  «        d         dz   }d| j	        ||||j
        |j        |j        |j        |j        |j        dœ	z  z  }t           j                             ||¦  «        S )NÚ_Ú r   r   z%s.py)	r­   ÚslugÚepochÚyearÚmonthÚdayÚhourÚminuteÚsecond)r|   Ú	timestamprT   Ú_slug_reÚfindallrš   rI   r*   Úrsplitr)   rC  rD  rE  rF  rG  rH  r=   rA   )rC   rA   r=  r  r  rB  rA  rh   s           rD   r0  zScriptDirectory._rev_path  sð   € õ �K×)Ò)Ñ+Ô+Ñ,Ô,ˆØ�xŠx�×(Ò(¨¨°BÑ7Ô7Ñ8Ô8×>Ò>Ñ@Ô@ˆÝˆt‰9Œ9�tÔ0Ò0Ð0ØÐ3˜$Ô3Ð3Ô4×;Ò;¸CÀÑCÔCÀAÔFÈÑLˆDØØÔàØØØ#Ô(Ø$Ô*Ø"”Ø#Ô(Ø%Ô,Ø%Ô,ð
ð 
ññ
ˆõ Œw�|Š|˜D (Ñ+Ô+Ð+rF   )r'   r(   r)   r(   r*   r+   r,   r-   r.   r/   r0   r(   r1   r2   r3   r4   r5   r/   r6   r   r7   r8   ©r7   r(   )r7   rL   )r7   rV   )rk   r   r7   r$   )NNNNN)r�   r2   r�   r2   r‘   r2   r’   r2   r“   r2   r7   r”   )r§   r˜   )r§   r(   r¨   r(   r7   rV   )r¯   r   r7   r°   )r¯   r´   r7   rµ   )r¯   r(   r7   r\   )r¯   r2   r7   r¼   )r›   rÁ   rš   rÁ   rÂ   r   r7   rV   )r7   r2   )r7   rÇ   )rÏ   r(   rÐ   r(   r7   rÑ   )rÏ   r(   rÐ   r2   r7   rÑ   )r   r   r˜   r   r7   râ   )r7   r8   )r  r(   rö   r(   rÂ   r   r7   r8   )r  r(   rö   r(   r7   r8   )rA   r(   r7   r8   )r7   r  )NFNNN)r  r(   r  r2   r¨   r  r  r  r  r  r   r2   r!  r  rÂ   r   r7   r"  )
rA   r(   r=  r(   r  r2   r  r  r7   r(   )'Ú__name__Ú
__module__Ú__qualname__Ú__doc__r…   r   r   Ú
EMPTY_DICTrE   ÚpropertyrK   Úmemoized_propertyrH   r;   ÚclassmethodrŽ   r   r¦   r®   r²   r¹   r»   rÀ   r¬   rÆ   rÉ   rÍ   rË   rÜ   rá   rû   rÿ   r  r  r  r  r  r<  r0  rO   rF   rD   r$   r$   :   s  € € € € € ðð ð, 4Ø.0Ø15Ø Ø&Ø"&Ø37Ø,1Ø+/¨4Ø ¤ñ,
ô ,
ð ð  ð  ð  ð  ðD ðð ð ñ „Xðð 
ÔðJð Jð Jñ ÔðJðð ð ð ð: ðR
ð R
ð R
ñ „[ðR
ðh ð #'Ø(,Ø#Ø!Ø$(ð+:ð +:ð +:ð +:ñ „^ð+:ð\ /6ð(ð (ð (ð (ð (ð&	ð 	ð 	ð 	ðNð Nð Nð Nð
Eð 
Eð 
Eð 
Eðð ð ð ð"
ð 
ð 
ð 
ð48ð 8ð 8ð 8ð0-ð -ð -ð -ðð ð ð ð,-ð -ð -ð -ðð ð ð ð$ð ð ð ð$\ð \ð \ð \ð|	2ð 	2ð 	2ð 	2ð ðAð Að Añ „XðAðIð Ið Ið Ið#ð #ð #ð #ð"ð "ð "ð "ðð ð ð ð@ &*Ø!&Ø.2Ø&*Ø+/ðQð Qð Qð Qð Qðf,ð ,ð ,ð ,ð ,ð ,rF   r$   c                  ó  ‡ — e Zd ZU dZd%ˆ fd„Zded<   	 ded<   	 dZd	ed
<   	 ed&d„¦   «         Zed&d„¦   «         Z	ed&d„¦   «         Z
d&d„Z	 	 	 	 	 d'd(d„Z	 	 	 	 d)d*d„Zd&d„Zed+d„¦   «         Zed,d!„¦   «         Zed-d$„¦   «         Zˆ xZS ).r\   z¶Represent a single revision file in a ``versions/`` directory.

    The :class:`.Script` instance is returned by methods
    such as :meth:`.ScriptDirectory.iterate_revisions`.

    Úmoduler   r=  r(   rA   c                ó  •— || _         || _        t          ¦   «                              ||j        t          j        t          |dd ¦  «        d¬¦  «        t          j        t          |dd ¦  «        d¬¦  «        ¬¦  «         d S )Nr  rO   )Údefaultr!  )r  Údependencies)rW  rA   ÚsuperrE   r+  r   rê   Úgetattr)rC   rW  r=  rA   Ú	__class__s       €rD   rE   zScript.__init__7  s‘   ø€ ØˆŒØˆŒ	Ý‰Œ×ÒØØÔ Ýœ-Ý˜ °Ñ6Ô6Àðñ ô õ œÝ˜ ¨dÑ3Ô3¸Rðñ ô ð 	ñ 		
ô 		
ð 		
ð 		
ð 		
rF   Nr  Ú_db_current_indicatorr7   c                óB   — t          j        d| j        ¦  «        d         S )ú)Return the docstring given in the script.z

r   )r¤   r   ÚlongdocrU   s    rD   Údocz
Script.docO  s   € õ Œx˜ ¤Ñ-Ô-¨aÔ0Ð0rF   c                ó²   — | j         j        }|rHt          | j         d¦  «        r|                     | j         j        ¦  «        }|                     ¦   «         S dS )r`  Ú_alembic_source_encodingr@  )rW  rQ  ÚhasattrÚdecoderd  rv   )rC   rb  s     rD   ra  zScript.longdocU  s[   € ð ŒkÔ!ˆØð 	Ý�t”{Ð$>Ñ?Ô?ð Ø—j’jØ”KÔ8ñô �ð —9’9‘;”;Ðà�2rF   c                ój  — d| j         ›| j        rdnd›| j        rdnd›| j        rdnd›| j        rdnd›d�}| j        r|d|                      ¦   «         ›d�z  }n|d	|                      ¦   «         ›d�z  }| j        r|d
t          j        | j        ¦  «        z  z  }| j        r|dt          j        | j	        ¦  «        z  z  }| j
        r |dt          j        | j
        ¦  «        ›d�z  }|d| j        ›d�z  }|dd                     d„ | j                             ¦   «         D ¦   «         ¦  «        z  z  }|S )NzRev: ú (head)r@  ú (branchpoint)ú (mergepoint)ú
 (current)rp   zMerges: zParent: zAlso depends on: %s
zBranches into: %s
zBranch names: zPath: z
%s
c              3  ó    K  — | ]	}d |z  V — Œ
dS )z    %sNrO   )rQ   Úparas     rD   r)  z#Script.log_entry.<locals>.<genexpr>ƒ  s&   è è € ÐLÐL¨$�h ‘oÐLÐLÐLÐLÐLÐLrF   )r   r1  Úis_branch_pointÚis_merge_pointr^  Ú_format_down_revisionrZ  r   rž   Únextrevr  rA   rT   ra  Ú
splitlines)rC   Úentrys     rD   Ú	log_entryzScript.log_entryc  sŸ  € € ð ŒMˆMØœÐ-ˆIˆI¨2Ð-Ø $Ô 4Ð<ÐÐ¸"Ð<Ø#Ô2Ð:ˆOˆO¸Ð:Ø Ô6Ð>ˆLˆL¸BÐ>Ð>ð
ˆð Ôð 	FØˆE t×'AÒ'AÑ'CÔ'CÐ'CÐ'CÐEÑEˆEˆEàˆE t×'AÒ'AÑ'CÔ'CÐ'CÐ'CÐEÑEˆEàÔð 	ØÐ,ÝÔ$ TÔ%6Ñ7Ô7ññ ˆEð Ôð 	ØÐ*ÝÔ$ T¤\Ñ2Ô2ññ ˆEð Ôð 	ØˆEÝÔ$ TÔ%7Ñ8Ô8Ð8Ð8ðñ ˆEð 	ˆ ¤  Ð,Ñ,ˆà�Ø�IŠIÐLÐL°$´,×2IÒ2IÑ2KÔ2KÐLÑLÔLÑLÔLñ
ñ 	
ˆð ˆrF   c                ó�   — |                       ¦   «         ›d| j        ›| j        rdnd›| j        rdnd›| j        rdnd›d| j        ›�S )Nú -> rh  r@  ri  rj  z, )rp  r   r1  rn  ro  rb  rU   s    rD   Ú__str__zScript.__str__‡  si   € à×&Ò&Ñ(Ô(Ð(Ð(ØŒMˆMØœÐ-ˆIˆI¨2Ð-Ø $Ô 4Ð<ÐÐ¸"Ð<Ø#Ô2Ð:ˆOˆO¸Ð:Ð:ØŒHˆHð
ð 	
rF   FTÚinclude_branchesr/   Úinclude_docÚinclude_parentsÚtree_indicatorsÚhead_indicatorsc                óÒ  — | j         }|rT| j        r4|                      ¦   «         ›dt          j        | j        ¦  «        ›d|›�}n|                      ¦   «         ›d|›�}|€J ‚|r&| j        r|dt          j        | j        ¦  «        z  z  }|s|r-|| j        rdnd›| j        r	| j        sdnd›| j        rdnd›�z  }|r|| j	        rd	nd›| j
        rd
nd›�z  }|r|d| j        z  z  }|S )Nz (z) -> rv  z (%s)rh  r@  z (effective head)rk  ri  rj  z, %s)r   rZ  rp  r   rž   r  Ú_is_real_headr1  r^  rn  ro  rb  )rC   rx  ry  rz  r{  r|  Útexts          rD   Ú
_head_onlyzScript._head_only‘  s  € ð Œ}ˆØð 	IØÔ ð Ià×.Ò.Ñ0Ô0Ð0Ð0ÝÔ(¨Ô):Ñ;Ô;Ð;Ð;Ø�Dð��ð &*×%?Ò%?Ñ%AÔ%AÐ%AÐ%AÀ4À4ÐH�ØÐÐÐØð 	G Ô 2ð 	GØ�G�dÔ2°4Ô3EÑFÔFÑFÑFˆDØð 		˜oð 		ØØ!Ô/Ð7�	�	°RÐ7ð ”|ðØ,0Ô,>ðÐ'Ð'àðð !%Ô :ÐB��ÀÐBðñ ˆDð ð 	ØØ$(Ô$8Ð@Ð Ð ¸bÐ@Ø#'Ô#6Ð>��¸BÐ>ðñ ˆDð ð 	&Ø�F˜TœXÑ%Ñ%ˆDØˆrF   Úverbosec                óD   — |r| j         S |                      ||||¦  «        S r·   )rt  r€  )rC   r�  rx  ry  rz  r{  s         rD   Ú
cmd_formatzScript.cmd_format¹  s3   € ð ð 	Ø”>Ð!à—?’?Ø  +¨Àñô ð rF   c                óF   — | j         sdS t          j        | j        ¦  «        S )Nz<base>)r+  r   rž   Ú_versioned_down_revisionsrU   s    rD   rp  zScript._format_down_revisionÈ  s'   € ØÔ!ð 	HØ�8åÔ'¨Ô(FÑGÔGÐGrF   Ú	scriptdirr$   r"  c                ót   — t           j                             |¦  «        \  }}|                      |||¦  «        S r·   )r=   rA   r   rc   )r‡   r†  rA   Údir_rh   s        rD   r6  zScript._from_pathÎ  s3   € õ œŸš tÑ,Ô,‰ˆˆhØ×!Ò! )¨T°8Ñ<Ô<Ð<rF   rÇ   c                óH  ‡‡	— g }t          j        |d¬¦  «        D �]\  }}}|                     d¦  «        rŒt          |¦  «        D ]5}|                     t           j                             ||¦  «        ¦  «         Œ6|j        rt           j                             |d¦  «        Š	t           j                             ‰	¦  «        r@d„ |D ¦   «         Š| 	                    ˆˆ	fd„t          j
        ‰	¦  «        D ¦   «         ¦  «         |j        s n|                     ¦   «          �Œ|S )NT)ÚtopdownÚ__pycache__c                óD   — h | ]}|                      d ¦  «        d         ’ŒS )ú.r   )r   )rQ   rh   s     rD   ú	<setcomp>z&Script._list_py_dir.<locals>.<setcomp>è  s)   € ÐJÐJÐJ¸˜XŸ^š^¨CÑ0Ô0°Ô3ÐJÐJÐJrF   c              3  ó’   •K  — | ]A}|                      d ¦  «        d         ‰v¯t          j                             ‰|¦  «        V — ŒBdS )r�  r   N)r   r=   rA   rT   )rQ   ÚpycÚnamesÚpy_cache_paths     €€rD   r)  z&Script._list_py_dir.<locals>.<genexpr>é  sY   øè è € ð !ð !àØŸ9š9 S™>œ>¨!Ô,°EÐ9Ð9õ œŸš ]°CÑ8Ô8à9Ð9Ð9Ð9ð!ð !rF   )r=   ÚwalkÚendswithÚsortedrñ   rA   rT   r.   rY   rë   Úlistdirr5   Úsort)
r‡   r†  rA   rd   ÚrootÚdirsÚfilesrh   r‘  r’  s
           @@rD   r]   zScript._list_py_dirÕ  s@  øø€ àˆÝ!#¤¨°tÐ!<Ñ!<Ô!<ð 	ñ 	ÑˆD�$˜Ø�}Š}˜]Ñ+Ô+ð ð å" 5™MœMð ;ð ;�Ø—’�RœWŸ\š\¨$°Ñ9Ô9Ñ:Ô:Ð:Ð:àÔ#ð å "¤§¢¨T°=Ñ AÔ A�Ý”7—>’> -Ñ0Ô0ð 	ð KÐJÀEÐJÑJÔJ�EØ—L’Lð !ð !ð !ð !ð !å#%¤:¨mÑ#<Ô#<ð!ñ !ô !ñ ô ð ð Ô8ð Ø�ð �IŠI‰KŒKˆK‰KàˆrF   rˆ  rh   c                ó‚  — |j         rt                               |¦  «        }nt                               |¦  «        }|sd S |                     d¦  «        }|j         r3|                     d¦  «        dk    }|                     d¦  «        dk    }ndx}}|s|r…t
          j                             t
          j                             ||¦  «        ¦  «        }t
          j                             t
          j                             ||dz   ¦  «        ¦  «        }	|s|r|	rd S t          j
        ||¦  «        }
t          |
d¦  «        sIt                               |¦  «        }|st          j        d|z  ¦  «        ‚|                     d¦  «        }n|
j        }t          |
|t
          j                             ||¦  «        ¦  «        S )Nr   r   ÚcÚoFr   z¶Could not determine revision id from filename %s. Be sure the 'revision' variable is declared inside the script (please see 'Upgrading from Alembic 0.1 to 0.2' in the documentation).)r.   Ú_sourceless_rev_fileÚmatchÚ_only_source_rev_fileÚgroupr=   rA   rY   rT   r   rþ   re  Ú_legacy_revr@   r   r\   )r‡   r†  rˆ  rh   Úpy_matchÚpy_filenameÚis_cÚis_oÚ	py_existsÚ
pyc_existsrW  Úmr   s                rD   rc   zScript._from_filenameú  s±  € ð Ôð 	=Ý+×1Ò1°(Ñ;Ô;ˆHˆHå,×2Ò2°8Ñ<Ô<ˆHàð 	Ø�4à—n’n QÑ'Ô'ˆàÔð 	 Ø—>’> !Ñ$Ô$¨Ò+ˆDØ—>’> !Ñ$Ô$¨Ò+ˆDˆDàÐˆD�4àð 	�4ð 	ÝœŸš¥r¤w§|¢|°D¸+Ñ'FÔ'FÑGÔGˆIÝœŸš­¬¯ª°T¸;ÈÑ;LÑ(MÔ(MÑNÔNˆJð
 ð ˜Dð  Zð Ø�tåÔ& t¨XÑ6Ô6ˆå�v˜zÑ*Ô*ð 	'õ ×!Ò! (Ñ+Ô+ˆAØð 	&ÝÔ'ðFð ñ	ñô ð ð Ÿ7š7 1™:œ:��à”ˆHÝ�f˜h­¬¯ª°T¸8Ñ(DÔ(DÑEÔEÐErF   )rW  r   r=  r(   rA   r(   rM  )FFFTT)rx  r/   ry  r/   rz  r/   r{  r/   r|  r/   r7   r(   )FFFT)r�  r/   rx  r/   ry  r/   rz  r/   r{  r/   r7   r(   )r†  r$   rA   r(   r7   r"  )r†  r$   rA   r(   r7   rÇ   )r†  r$   rˆ  r(   rh   r(   r7   r"  )rN  rO  rP  rQ  rE   Ú__annotations__r^  rS  rb  ra  rt  rw  r€  rƒ  rp  rU  r6  r]   rc   Ú__classcell__)r]  s   @rD   r\   r\   /  sÅ  ø€ € € € € € ðð ð
ð 
ð 
ð 
ð 
ð 
ð ÐÐÑØBà€I€I�IØ(à,0ÐÐ0Ð0Ð0Ñ0ð4ð ð1ð 1ð 1ñ „Xð1ð
 ðð ð ñ „Xðð ð!ð !ð !ñ „Xð!ðF
ð 
ð 
ð 
ð "'Ø!Ø %Ø $Ø $ð&ð &ð &ð &ð &ðV "'Ø!Ø %Ø $ðð ð ð ð ðHð Hð Hð Hð ð=ð =ð =ñ „[ð=ð ð"ð "ð "ñ „[ð"ðH ð/Fð /Fð /Fñ „[ð/Fð /Fð /Fð /Fð /FrF   r\   )8Ú
__future__r   Ú
contextlibr   r  r=   r¤   r	  r„   Útypesr   Útypingr   r   r   r	   r
   r   r   r   r   r   r   r@  r   r   r   Úruntimer   r   r   r   r   r   rk   r   r   Úruntime.migrationr   r    Úpy39Úzoneinfor!   r"   Úbackports.zoneinfoÚImportErrorÚcompilerž  r   r¢  rJ  r…   r~   rƒ   r$   r\   rO   rF   rD   ú<module>r·     s‘  ðØ "Ð "Ð "Ð "Ð "Ð "à %Ð %Ð %Ð %Ð %Ð %Ø €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð àð .Ø$Ð$Ð$Ð$Ð$Ð$Ø$Ð$Ð$Ð$Ð$Ð$Ø"Ð"Ð"Ð"Ð"Ð"ØÐÐÐÐÐØ)Ð)Ð)Ð)Ð)Ð)Ø0Ð0Ð0Ð0Ð0Ð0Ø-Ð-Ð-Ð-Ð-Ð-ðØ„{ð =Ø%Ð%Ð%Ð%Ð%Ð%Ø2Ð2Ð2Ð2Ð2Ð2Ð2à/Ð/Ð/Ð/Ð/Ð/Ø<Ð<Ð<Ð<Ð<Ð<øøØð ð ð Ø€H€H€Hðøøøð "�r”zÐ"EÑFÔFÐ Ø"˜œ
Ð#@ÑAÔAÐ ØˆbŒjÐ,Ñ-Ô-€Øˆ2Œ:�fÑÔ€Ø+Ð Ø"˜œ
 =Ñ1Ô1Ð à(˜bœjÐ)9Ñ:Ô:Ð ðr,ð r,ð r,ð r,ð r,ñ r,ô r,ð r,ðj{Fð {Fð {Fð {Fð {FˆXÔñ {Fô {Fð {Fð {Fð {Fs   Â: C ÃC%Ã$C%