%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/227033/root/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/
Upload File :
Create Path :
Current File : //proc/227033/root/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyc

�
�M!Vc@sddlZddlZddlmZddlmZmZmZmZm	Z	ddl
mZddlm
ZddlmZmZddlmZmZeje�Zd	efd
��YZdefd��YZd
efd��YZdefd��YZdefd��YZdS(i����N(tcontextmanager(tMetaDatatTabletColumntStringtliteral_column(tMockEngineStrategy(turli(tcallablet	EncodedIO(tddltutiltMigrationContextcBs�eZdZdd�Zeddddddd��Zed�Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zdd
�Zd�Zed��Zed
��Zd�Zd�ZRS(s�Represent the database state made available to a migration
    script.

    :class:`.MigrationContext` is the front end to an actual
    database connection, or alternatively a string output
    stream given a particular database dialect,
    from an Alembic perspective.

    When inside the ``env.py`` script, the :class:`.MigrationContext`
    is available via the
    :meth:`.EnvironmentContext.get_context` method,
    which is available at ``alembic.context``::

        # from within env.py script
        from alembic import context
        migration_context = context.get_context()

    For usage outside of an ``env.py`` script, such as for
    utility routines that want to check the current version
    in the database, the :meth:`.MigrationContext.configure`
    method to create new :class:`.MigrationContext` objects.
    For example, to get at the current revision in the
    database using :meth:`.MigrationContext.get_current_revision`::

        # in any application, outside of an env.py script
        from alembic.migration import MigrationContext
        from sqlalchemy import create_engine

        engine = create_engine("postgresql://mydatabase")
        conn = engine.connect()

        context = MigrationContext.configure(conn)
        current_rev = context.get_current_revision()

    The above context can also be used to produce
    Alembic migration operations with an :class:`.Operations`
    instance::

        # in any application, outside of the normal Alembic environment
        from alembic.operations import Operations
        op = Operations(context)
        op.alter_column("mytable", "somecolumn", nullable=True)

    c		Cs2||_||_||_|jd�|_|jdt�}|jd�}|jdt�|_|r�|j|�|_|jdk	s�t
�n	||_|jd�|_||_d|kr�t
|jd�p�tj|d�|_n|jdtj�|_|jdt�|_|jd	t�|_|jd
d�|_}|jdd�|_}t|t�td
td�dt�d|�|_|jd�|_tjj|�||j|j||j|�|_tj d|jj!j"�|jrtj d�ntj d|jj#r'dnd�dS(Ntscripttas_sqlttransactional_ddlttransaction_per_migrationtfntoutput_encodingt
output_buffertcompare_typetcompare_server_defaultt
version_tabletalembic_versiontversion_table_schematversion_numi tnullabletschematstarting_revsContext impl %s.sGenerating static SQLsWill assume %s DDL.t
transactionalsnon-transactional($tenvironment_contexttoptstdialecttgetR
tFalset_transaction_per_migrationt_stdout_connectiont
connectiontNonetAssertionErrort_migrations_fnRR	tsyststdoutRt_user_compare_typet_user_compare_server_defaultRRRRRRt_versiont_start_from_revR
tDefaultImpltget_by_dialecttimpltlogtinfot	__class__t__name__R(	tselfR R%RRRRRR((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt__init__>sT								cCs�|dkri}n|r'|j}ng|rNtj|�}|j��}n@|rytjd|�}|j��}n|s�td��nt||||�S(s�Create a new :class:`.MigrationContext`.

        This is a factory method usually called
        by :meth:`.EnvironmentContext.configure`.

        :param connection: a :class:`~sqlalchemy.engine.Connection`
         to use for SQL execution in "online" mode.  When present,
         is also used to determine the type of dialect in use.
        :param url: a string database url, or a
         :class:`sqlalchemy.engine.url.URL` object.
         The type of dialect to be used will be derived from this if
         ``connection`` is not passed.
        :param dialect_name: string name of a dialect, such as
         "postgresql", "mssql", etc.  The type of dialect to be used will be
         derived from this if ``connection`` and ``url`` are not passed.
        :param opts: dictionary of options.  Most other options
         accepted by :meth:`.EnvironmentContext.configure` are passed via
         this dictionary.

        s%s://s-Connection, url, or dialect_name is required.N(R&R tsqla_urltmake_urltget_dialectt	ExceptionR(tclsR%Rtdialect_nameR RR((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt	configurets	cs�|�jk}|s+td��}|�S�jjsMtd��}|�S�jrrt�fd��}|�S�jj�SdS(Ncss	dVdS(N((((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt
do_nothing�scss	dVdS(N((((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR?�sc3s#�jj�dV�jj�dS(N(R1t
emit_begintemit_commit((R6(sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytbegin_commit�s
(R#RR1RRtbindtbegin(R6t_per_migrationttransaction_nowR?RB((R6sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytbegin_transaction�s	cCsY|j�}t|�dkr"dSt|�dkrMtjd|j��n|dSdS(s�Return the current revision, usually that which is present
        in the ``alembic_version`` table in the database.

        This method intends to be used only for a migration stream that
        does not contain unmerged branches in the target database;
        if there are multiple branches present, an exception is raised.
        The :meth:`.MigrationContext.get_current_heads` should be preferred
        over this method going forward in order to be compatible with
        branch migration support.

        If this :class:`.MigrationContext` was configured in "offline"
        mode, that is with ``as_sql=True``, the ``starting_rev``
        parameter is returned instead, if any.

        iisQVersion table '%s' has more than one head present; please use get_current_heads()N(tget_current_headstlenR&RtCommandErrorR(R6theads((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytget_current_revision�scCs�|jrR|j}|dk	r?|jr?|jj|�j}ntj|dd�S|jrmtjd��n|j	�s}dSt
d�|jj|j
j��D��S(s�Return a tuple of the current 'head versions' that are represented
        in the target database.

        For a migration stream without branches, this will be a single
        value, synonymous with that of
        :meth:`.MigrationContext.get_current_revision`.   However when multiple
        unmerged branches exist within the target database, the returned tuple
        will contain a value for each head.

        If this :class:`.MigrationContext` was configured in "offline"
        mode, that is with ``as_sql=True``, the ``starting_rev``
        parameter is returned in a one-length tuple.

        If no version table is present, or if there are no revisions
        present, an empty tuple is returned.

        .. versionadded:: 0.7.0

        tdefaultsECan't specify current_rev to context when using a database connectioncss|]}|dVqdS(iN((t.0trow((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pys	<genexpr>�sN(((RR.R&R
tget_revisiontrevisionRtto_tupleRJt_has_version_tablettupleR%texecuteR-tselect(R6tstart_from_rev((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyRH�s			cCs|jj|jdt�dS(Nt
checkfirst(R-tcreateR%tTrue(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt_ensure_version_table�scCs"|jjj|j|j|j�S(N(R%R t	has_tableRR(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyRS�scCsg|j�}|jr*|r*|j�nt||�}x'|j||�D]}|j|�qLWdS(s}Stamp the version table with a specific revision.

        This method calculates those branches to which the given revision
        can apply, and updates those branches as though they were migrated
        towards that revision (either up or down).  If no current branches
        include the revision, it is added as a new branch head.

        .. versionadded:: 0.7.0

        N(RHRR[tHeadMaintainert_stamp_revstupdate_to_step(R6tscript_directoryRQRKthead_maintainertstep((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytstamps
c
Ks"|jj�|j�}|jr7|r7|j�nt||�}x�|j||�D]�}|jdt��~|jr�|j	r�|j
j|j�nt
jd|�|jr�|jjd|jf�n|j|�|j|�WdQXqYW|jr|j	r|j
j|j�ndS(s-Run the migration scripts established for this
        :class:`.MigrationContext`, if any.

        The commands in :mod:`alembic.command` will set up a function
        that is ultimately passed to the :class:`.MigrationContext`
        as the ``fn`` argument.  This function represents the "work"
        that will be done when :meth:`.MigrationContext.run_migrations`
        is called, typically from within the ``env.py`` script of the
        migration environment.  The "work function" then provides an iterable
        of version callables and other version information which
        in the case of the ``upgrade`` or ``downgrade`` commands are the
        list of version scripts to invoke.  Other commands yield nothing,
        in the case that a command wants to run some other operation
        against the database such as the ``current`` or ``stamp`` commands.

        :param \**kw: keyword arguments here will be passed to each
         migration callable, that is the ``upgrade()`` or ``downgrade()``
         method within revision scripts.

        REs
Running %ss
-- Running %sN(R1tstart_migrationsRHRR[R]R(RGRZRKR-RYR%R2R3t
static_outputt	short_logtmigration_fnR_tdrop(R6tkwRKRaRb((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytrun_migrationss 

	
cCs|jj||�dS(sExecute a SQL construct or string statement.

        The underlying execution mechanics are used, that is
        if this is "offline mode" the SQL is written to the
        output buffer, otherwise the SQL is emitted on
        the current SQLAlchemy connection.

        N(R1t_exec(R6tsqltexecution_options((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyRUDs	cs"�fd�}tj�j|�S(Ncs�jj|�dS(N(R1Rk(t	constructtmultiparamstparams(R6(sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytdumpPs(RtMockConnectionR (R6R%Rq((R6sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR$OscCs|jS(s�Return the current "bind".

        In online mode, this is an instance of
        :class:`sqlalchemy.engine.Connection`, and is suitable
        for ad-hoc execution of any kind of usage described
        in :ref:`sqlexpression_toplevel` as well as
        for usage with the :meth:`sqlalchemy.schema.Table.create`
        and :meth:`sqlalchemy.schema.MetaData.create_all` methods
        of :class:`~sqlalchemy.schema.Table`,
        :class:`~sqlalchemy.schema.MetaData`.

        Note that when "standard output" mode is enabled,
        this bind will be a "mock" connection handler that cannot
        return results and is only appropriate for a very limited
        subset of commands.

        (R%(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyRCUscCs|jr|jjSdSdS(soReturn the :class:`.Config` used by the current environment, if any.

        .. versionadded:: 0.6.6

        N(RtconfigR&(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyRsjs	
cCsi|jtkrtSt|j�rV|j||||j|j�}|dk	rV|Sn|jj||�S(N(R+R"RttypeR&R1R(R6tinspector_columntmetadata_columnt
user_value((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt
_compare_typevs	cCso|jtkrtSt|j�rV|j|||||j|�}|dk	rV|Sn|jj||||�S(N(R,R"Rtserver_defaultR&R1R(R6RuRvtrendered_metadata_defaulttrendered_column_defaultRw((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt_compare_server_default�s"		N(R5t
__module__t__doc__R&R7tclassmethodR>R"RGRLRHR[RSRcRjRUR$tpropertyRCRsRxR|(((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyRs,-6&		&				2		R]cBs5eZd�Zd�Zd�Zd�Zd�ZRS(cCs||_t|�|_dS(N(tcontexttsetRK(R6R�RK((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR7�s	cCs^||jkst�|jj|�|jjj|jjj�jdt	d|���dS(NRs'%s'(
RKR'taddR�R1RkR-tinserttvaluesR(R6tversion((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt_insert_version�s
cCs�|jj|�|jjj|jjj�j|jjjj	t
d|�k��}|jjr�|jdkr�t
jd||jj|jf��ndS(Ns'%s'isOOnline migration expected to match one row when deleting '%s' in '%s'; %d found(RKtremoveR�R1RkR-tdeletetwheretcRRRtrowcountRRJR(R6R�tret((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt_delete_version�scCs�||jkst�|jj|�|jj|�|jjj|jjj�j	dt
d|��j|jjjj
t
d|�k��}|jjr�|jdkr�tjd|||jj|jf��ndS(NRs'%s'isWOnline migration expected to match one row when updating '%s' to '%s' in '%s'; %d found(RKR'R�R�R�R1RkR-tupdateR�RR�R�RRR�RRJR(R6tfrom_tto_R�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt_update_version�scCs�|j|j�r;|j}tjd|�|j|�n^|j|j�rv|j}tjd|�|j|�n#|j	|j�r�|j
|j�\}}}tjd|||�x|D]}|j|�q�W|j||�n�|j|j�r^|j
|j�\}}}tjd|||�x|D]}|j|�q4W|j||�n;|j|j�\}	}
tjd|	|
�|j|	|
�dS(Nsbranch delete %ssnew branch insert %ss!merge, delete %s, update %s to %ss#unmerge, insert %s, update %s to %ssupdate %s to %s(tshould_delete_branchRKtdelete_version_numR2tdebugR�tshould_create_branchtinsert_version_numR�tshould_merge_branchestmerge_branch_identsR�tshould_unmerge_branchestunmerge_branch_identstupdate_version_num(R6Rbtverstdelete_revstupdate_from_revt
update_to_revtdelrevtinsert_revstinsrevR�R�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR_�s6		



(R5R}R7R�R�R�R_(((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR]�s
				t
MigrationStepcBs\eZed��Zed��Zed��Zed��Zed��Zd�Z	RS(cCs
|jjS(N(RgR5(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytname�scCst||t�S(N(tRevisionStepRZ(R<trevision_mapR
((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytupgrade_from_script�scCst||t�S(N(R�R"(R<R�R
((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytdowngrade_from_scriptscCs|jS(N(t
is_upgrade(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pytis_downgradescCs,d|jtj|j�tj|j�fS(Ns%s %s -> %s(R�Rtformat_as_commatfrom_revisionstto_revisions(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyRfscCsF|jr;d|jtj|j�tj|j�|jfS|jSdS(Ns%s %s -> %s, %s(tdocR�RR�R�R�Rf(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt__str__s	(
R5R}R�R�RR�R�R�RfR�(((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��sR�cBs�eZd�Zd�Zed��Zed��Zed��Zed��Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zed
��Zed��ZRS(cCsF||_||_||_|r3|jj|_n|jj|_dS(N(R�RQR�tmoduletupgradeRgt	downgrade(R6R�RQR�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR7s			cCs1t|t�o0|j|jko0|j|jkS(N(t
isinstanceR�RQR�(R6tother((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt__eq__&scCs
|jjS(N(RQR�(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�+scCs$|jr|jjS|jjfSdS(N(R�RQt_all_down_revisions(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�/s	
cCs$|jr|jjfS|jjSdS(N(R�RQR�(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�6s	
cCst|jj�dkS(Ni(RIRQR�(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt_has_scalar_down_revision=scCs�|js
tS|jj|kr#tS|jj}|s9tSt|�dkr�|jj|d�}|jsntSt	d�|jj
|jj|j�dt�D��}t|j
|�j|jjg��r�tStSntSdS(Niicss|]}|jVqdS(N(RQ(RNtr((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pys	<genexpr>Sstcheck(R�R"RQR�RZRIR�RPt_is_real_branch_pointR�t_get_descendant_nodest
get_revisionst_all_nextrevtintersectiont
difference(R6RKtdownrevstdownrevtdescendants((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�As(		
cCs�t|�j|j�}|rstd�|jj|jj|�dt�D��}tt|j�j|��}nt|j�}t|dd!�|d|jdfS(Ncss|]}|jVqdS(N(RQ(RNR�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pys	<genexpr>vsR�ii����(	R�R�R�R�t_get_ancestor_nodesR�R"tlistR�(R6RKtother_headst	ancestorsR�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�qs	cCs�t|�j|jjg�}|rytd�|jj|jj|�dt�D��}tt|j�j|��}n	|j}|j	d|d|dd!fS(Ncss|]}|jVqdS(N(RQ(RNR�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pys	<genexpr>�sR�ii����(
R�R�RQR�R�R�R"R�R�R�(R6RKR�R�R�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��s	!	cCs>|js
tS|jj}|s#tS|j|�s6tStSdS(N(R�R"RQR�RZR�(R6RKR�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��s	cCsN|js
tS|jj}t|�dkrJt|j|��dkrJtStS(Ni(R�R"RQR�RIR�RZ(R6RKR�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��s	cCsE|js
tS|jj}|jj|krAt|�dkrAtStS(Ni(R�R"RQR�RIRZ(R6RKR�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��s	$cCs�|jsO|j|jj�}t|�dks<td��t|�d}n|jjd}|jrx||jjfS|jj|fSdS(Nis4Can't do an UPDATE because downrevision is ambiguousi(R�R�RQR�RIR'R�R�(R6RKR�t
down_revision((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��s			cCs
|jjS(N(RQ(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��scCs
|jjS(N(RQ(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��s(R5R}R7R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�s				0						t	StampStepcBs�eZd�ZdZd�Zd�Zed��Zed��Z	ed��Z
ed��Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�ZRS(cCsRtj|dd�|_tj|dd�|_||_||_|j|_dS(NRM(((RRRR�R�R�tbranch_movetstamp_revisionRg(R6R�R�R�R�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR7�s
		cKsdS(N(R&(R6Ri((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��scCsUt|t�oT|j|jkoT|j|jkoT|j|jkoT|j|jkS(N(R�R�R�t	revisionsR�R�R�(R6R�((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��s
cCs|jS(N(R�(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��scCs|jS(N(R�(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��scCs&t|j�dkst�|jdS(Nii(RIR�R'(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��scCs&t|j�dkst�|jdS(Nii(RIR�R'(R6((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��scCsNt|j�dkst�t|j�dks6t�|jd|jdfS(Nii(RIR�R'R�(R6RK((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�scCs+t|jdd!�|jd|jdfS(Nii����(R�R�R�(R6RK((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�scCs+|jd|jdt|jdd!�fS(Nii����(R�R�R�(R6RK((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�scCs|jo|jS(N(R�R�(R6RK((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�scCs|jo|jS(N(R�R�(R6RK((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�scCst|j�dkS(Ni(RIR�(R6RK((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�scCst|j�dkS(Ni(RIR�(R6RK((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR�sN(R5R}R7R&R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyR��s									(tloggingR)t
contextlibRt
sqlalchemyRRRRRtsqlalchemy.engine.strategiesRtsqlalchemy.engineRR8tutil.compatRR	tR
Rt	getLoggerR5R2tobjectRR]R�R�R�(((sJ/opt/alt/python27/lib/python2.7/site-packages/alembic/runtime/migration.pyt<module>s(��S%�

Zerion Mini Shell 1.0