Skip to content

Commit

Permalink
pep8 changes
Browse files Browse the repository at this point in the history
  • Loading branch information
miguelgrinberg committed Dec 1, 2014
1 parent 34d14e4 commit 71ff1d7
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 53 deletions.
121 changes: 78 additions & 43 deletions flask_migrate/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from alembic.config import Config as AlembicConfig
from alembic import command


class _MigrateConfig(object):
def __init__(self, db, directory):
self.db = db
Expand All @@ -15,32 +16,37 @@ def metadata(self):
was set to db, and env.py accessed app.extensions['migrate'].metadata"""
return self.db.metadata


class Migrate(object):
def __init__(self, app = None, db = None, directory = 'migrations'):
def __init__(self, app=None, db=None, directory='migrations'):
if app is not None and db is not None:
self.init_app(app, db, directory)

def init_app(self, app, db, directory = 'migrations'):
def init_app(self, app, db, directory='migrations'):
if not hasattr(app, 'extensions'):
app.extensions = {}
app.extensions['migrate'] = _MigrateConfig(db, directory)


class Config(AlembicConfig):
def get_template_directory(self):
package_dir = os.path.abspath(os.path.dirname(__file__))
return os.path.join(package_dir, 'templates')


def _get_config(directory):
if directory is None:
directory = current_app.extensions['migrate'].directory
config = Config(os.path.join(directory, 'alembic.ini'))
config.set_main_option('script_location', directory)
return config

MigrateCommand = Manager(usage = 'Perform database migrations')
MigrateCommand = Manager(usage='Perform database migrations')

@MigrateCommand.option('-d', '--directory', dest = 'directory', default = None, help = "migration script directory (default is 'migrations')")
def init(directory = None):

@MigrateCommand.option('-d', '--directory', dest='directory', default=None,
help="migration script directory (default is 'migrations')")
def init(directory=None):
"Generates a new migration"
if directory is None:
directory = current_app.extensions['migrate'].directory
Expand All @@ -49,65 +55,94 @@ def init(directory = None):
config.config_file_name = os.path.join(directory, 'alembic.ini')
command.init(config, directory, 'flask')

@MigrateCommand.option('-d', '--directory', dest = 'directory', default = None, help = "Migration script directory (default is 'migrations')")
def current(directory = None):

@MigrateCommand.option('-d', '--directory', dest='directory', default=None,
help="Migration script directory (default is 'migrations')")
def current(directory=None):
"Display the current revision for each database."
config = _get_config(directory)
command.current(config)

@MigrateCommand.option('-r', '--rev-range', dest = 'rev_range', default = None, help = "Specify a revision range; format is [start]:[end]")
@MigrateCommand.option('-d', '--directory', dest = 'directory', default = None, help = "Migration script directory (default is 'migrations')")
def history(directory = None, rev_range = None):

@MigrateCommand.option('-r', '--rev-range', dest='rev_range', default=None,
help="Specify a revision range; format is [start]:[end]")
@MigrateCommand.option('-d', '--directory', dest='directory', default=None,
help="Migration script directory (default is 'migrations')")
def history(directory=None, rev_range=None):
"List changeset scripts in chronological order."
config = _get_config(directory)
command.history(config, rev_range)

@MigrateCommand.option('--sql', dest = 'sql', action = 'store_true', default = False, help = "Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('--autogenerate', dest = 'autogenerate', action = 'store_true', default = False, help = "Populate revision script with andidate migration operatons, based on comparison of database to model")
@MigrateCommand.option('-m', '--message', dest = 'message', default = None)
@MigrateCommand.option('-d', '--directory', dest = 'directory', default = None, help = "Migration script directory (default is 'migrations')")
def revision(directory = None, message = None, autogenerate = False, sql = False):

@MigrateCommand.option('--sql', dest='sql', action='store_true', default=False,
help="Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('--autogenerate', dest='autogenerate',
action='store_true', default=False,
help="Populate revision script with andidate migration operatons, based on comparison of database to model")
@MigrateCommand.option('-m', '--message', dest='message', default=None)
@MigrateCommand.option('-d', '--directory', dest='directory', default=None,
help="Migration script directory (default is 'migrations')")
def revision(directory=None, message=None, autogenerate=False, sql=False):
"Create a new revision file."
config = _get_config(directory)
command.revision(config, message, autogenerate = autogenerate, sql = sql)
command.revision(config, message, autogenerate=autogenerate, sql=sql)


@MigrateCommand.option('--sql', dest = 'sql', action = 'store_true', default = False, help = "Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('-m', '--message', dest = 'message', default = None)
@MigrateCommand.option('-d', '--directory', dest = 'directory', default = None, help = "Migration script directory (default is 'migrations')")
def migrate(directory = None, message = None, sql = False):
@MigrateCommand.option('--sql', dest='sql', action='store_true', default=False,
help="Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('-m', '--message', dest='message', default=None)
@MigrateCommand.option('-d', '--directory', dest='directory', default=None,
help="Migration script directory (default is 'migrations')")
def migrate(directory=None, message=None, sql=False):
"Alias for 'revision --autogenerate'"
config = _get_config(directory)
command.revision(config, message, autogenerate = True, sql = sql)
command.revision(config, message, autogenerate=True, sql=sql)


@MigrateCommand.option('--tag', dest = 'tag', default = None, help = "Arbitrary 'tag' name - can be used by custom env.py scripts")
@MigrateCommand.option('--sql', dest = 'sql', action = 'store_true', default = False, help = "Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('revision', default = None, help = "revision identifier")
@MigrateCommand.option('-d', '--directory', dest = 'directory', default = None, help = "Migration script directory (default is 'migrations')")
def stamp(directory = None, revision = 'head', sql = False, tag = None):
@MigrateCommand.option('--tag', dest='tag', default=None,
help="Arbitrary 'tag' name - can be used by custom env.py scripts")
@MigrateCommand.option('--sql', dest='sql', action='store_true', default=False,
help="Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('revision', default=None, help="revision identifier")
@MigrateCommand.option('-d', '--directory', dest='directory', default=None,
help="Migration script directory (default is 'migrations')")
def stamp(directory=None, revision='head', sql=False, tag=None):
"'stamp' the revision table with the given revision; don't run any migrations"
config = _get_config(directory)
command.stamp(config, revision, sql = sql, tag = tag)

@MigrateCommand.option('--tag', dest = 'tag', default = None, help = "Arbitrary 'tag' name - can be used by custom env.py scripts")
@MigrateCommand.option('--sql', dest = 'sql', action = 'store_true', default = False, help = "Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('revision', nargs = '?', default = 'head', help = "revision identifier")
@MigrateCommand.option('-d', '--directory', dest = 'directory', default = None, help = "Migration script directory (default is 'migrations')")
def upgrade(directory = None, revision = 'head', sql = False, tag = None):
command.stamp(config, revision, sql=sql, tag=tag)


@MigrateCommand.option('--tag', dest='tag', default=None,
help="Arbitrary 'tag' name - can be used by custom env.py scripts")
@MigrateCommand.option('--sql', dest='sql', action='store_true', default=False,
help="Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('revision', nargs='?', default='head',
help="revision identifier")
@MigrateCommand.option('-d', '--directory', dest='directory', default=None,
help="Migration script directory (default is 'migrations')")
def upgrade(directory=None, revision='head', sql=False, tag=None):
"Upgrade to a later version"
config = _get_config(directory)
command.upgrade(config, revision, sql = sql, tag = tag)

@MigrateCommand.option('--tag', dest = 'tag', default = None, help = "Arbitrary 'tag' name - can be used by custom env.py scripts")
@MigrateCommand.option('--sql', dest = 'sql', action = 'store_true', default = False, help = "Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('revision', nargs = '?', default = "-1", help = "revision identifier")
@MigrateCommand.option('-d', '--directory', dest = 'directory', default = None, help = "Migration script directory (default is 'migrations')")
def downgrade(directory = None, revision = '-1', sql = False, tag = None):
command.upgrade(config, revision, sql=sql, tag=tag)


@MigrateCommand.option('--tag', dest='tag', default=None,
help="Arbitrary 'tag' name - can be used by custom env.py scripts")
@MigrateCommand.option('--sql', dest='sql', action='store_true', default=False,
help="Don't emit SQL to database - dump to standard output instead")
@MigrateCommand.option('revision', nargs='?', default="-1",
help="revision identifier")
@MigrateCommand.option('-d', '--directory', dest='directory', default=None,
help="Migration script directory (default is 'migrations')")
def downgrade(directory=None, revision='-1', sql=False, tag=None):
"Revert to a previous version"
config = _get_config(directory)
command.downgrade(config, revision, sql = sql, tag = tag)
command.downgrade(config, revision, sql=sql, tag=tag)


@MigrateCommand.option('-d', '--directory', dest = 'directory', default = None, help = "Migration script directory (default is 'migrations')")
def branches(directory = None):
@MigrateCommand.option('-d', '--directory', dest='directory', default=None,
help="Migration script directory (default is 'migrations')")
def branches(directory=None):
"Lists revisions that have broken the source tree into two versions representing two independent sets of changes"
config = _get_config(directory)
command.branches(config)
4 changes: 2 additions & 2 deletions tests/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
manager = Manager(app)
manager.add_command('db', MigrateCommand)


class User(db.Model):
id = db.Column(db.Integer, primary_key = True)
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))

if __name__ == '__main__':
manager.run()

7 changes: 4 additions & 3 deletions tests/app2.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,16 @@
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app2.db'

db = SQLAlchemy(app)
migrate = Migrate(app, db, directory = 'temp_folder/temp_migrations')
migrate = Migrate(app, db, directory='temp_folder/temp_migrations')

manager = Manager(app)
manager.add_command('db', MigrateCommand)


class User(db.Model):
id = db.Column(db.Integer, primary_key = True)
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))


if __name__ == '__main__':
manager.run()

5 changes: 3 additions & 2 deletions tests/test_migrate.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import shutil
import unittest


class TestMigrate(unittest.TestCase):
def setUp(self):
os.chdir(os.path.split(os.path.abspath(__file__))[0])
Expand Down Expand Up @@ -30,9 +31,9 @@ def tearDown(self):

def test_migrate_upgrade(self):
from .app import db, User
db.session.add(User(name = 'test'))
db.session.add(User(name='test'))
db.session.commit()


if __name__ == '__main__':
unittest.main()

7 changes: 4 additions & 3 deletions tests/test_migrate_custom_directory.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import shutil
import unittest


class TestMigrate(unittest.TestCase):
def setUp(self):
os.chdir(os.path.split(os.path.abspath(__file__))[0])
Expand All @@ -24,15 +25,15 @@ def tearDown(self):
except OSError:
pass
try:
shutil.rmtree('migrations')
shutil.rmtree('temp_folder')
except OSError:
pass

def test_migrate_upgrade(self):
from .app2 import db, User
db.session.add(User(name = 'test'))
db.session.add(User(name='test'))
db.session.commit()


if __name__ == '__main__':
unittest.main()

0 comments on commit 71ff1d7

Please sign in to comment.