diff options
author | David Ripton <dripton@redhat.com> | 2014-02-26 15:04:54 -0500 |
---|---|---|
committer | David Ripton <dripton@redhat.com> | 2014-02-26 15:04:54 -0500 |
commit | d6fbf12989e85b8cdbd0202653ef6a2709c16bf5 (patch) | |
tree | 4b48c826064052840e18ac1ee1d7a6e59016f543 /migrate | |
parent | 21fcdad0f485437d010e5743626c63ab3acdaec5 (diff) | |
download | sqalchemy-migrate-d6fbf12989e85b8cdbd0202653ef6a2709c16bf5.tar.gz |
Eradicate trailing whitespace
Remove all trailing spaces and tabs in every file in the project.
People have editors configured to do this, which causes them to
accidentally make little whitespace changes in unrelated commits,
which makes those commits harder to review. Better to fix them all
at once.
Change-Id: I17d89f55f41d8599e0ab1a31f646cd161289703e
Diffstat (limited to 'migrate')
28 files changed, 141 insertions, 141 deletions
diff --git a/migrate/changeset/ansisql.py b/migrate/changeset/ansisql.py index 495b197..8d80906 100644 --- a/migrate/changeset/ansisql.py +++ b/migrate/changeset/ansisql.py @@ -56,7 +56,7 @@ class AlterTableVisitor(SchemaVisitor): # adapt to 0.6 which uses a string-returning # object self.append(" %s" % ret) - + def _to_table(self, param): """Returns the table object for the given param object.""" if isinstance(param, (sa.Column, sa.Index, sa.schema.Constraint)): @@ -113,7 +113,7 @@ class ANSIColumnGenerator(AlterTableVisitor, SchemaGenerator): # SA bounds FK constraints to table, add manually for fk in column.foreign_keys: self.add_foreignkey(fk.constraint) - + # add primary key constraint if needed if column.primary_key_name: cons = constraint.PrimaryKeyConstraint(column, diff --git a/migrate/changeset/databases/firebird.py b/migrate/changeset/databases/firebird.py index 226728b..bbb4acd 100644 --- a/migrate/changeset/databases/firebird.py +++ b/migrate/changeset/databases/firebird.py @@ -31,7 +31,7 @@ class FBColumnDropper(ansisql.ANSIColumnDropper): if column.name in [col.name for col in index.columns]: index.drop() # TODO: recreate index if it references more than this column - + for cons in column.table.constraints: if isinstance(cons,PrimaryKeyConstraint): # will be deleted only when the column its on diff --git a/migrate/changeset/databases/sqlite.py b/migrate/changeset/databases/sqlite.py index 5ddd3f1..6453422 100644 --- a/migrate/changeset/databases/sqlite.py +++ b/migrate/changeset/databases/sqlite.py @@ -42,7 +42,7 @@ class SQLiteHelper(SQLiteCommon): self.execute() self.append('DROP TABLE migration_tmp') self.execute() - + def visit_column(self, delta): if isinstance(delta, DictMixin): column = delta.result_column @@ -52,7 +52,7 @@ class SQLiteHelper(SQLiteCommon): table = self._to_table(column.table) self.recreate_table(table,column,delta) -class SQLiteColumnGenerator(SQLiteSchemaGenerator, +class SQLiteColumnGenerator(SQLiteSchemaGenerator, ansisql.ANSIColumnGenerator, # at the end so we get the normal # visit_column by default @@ -78,7 +78,7 @@ class SQLiteColumnDropper(SQLiteHelper, ansisql.ANSIColumnDropper): """SQLite ColumnDropper""" def _modify_table(self, table, column, delta): - + columns = ' ,'.join(map(self.preparer.format_column, table.columns)) return 'INSERT INTO %(table_name)s SELECT ' + columns + \ ' from migration_tmp' diff --git a/migrate/changeset/schema.py b/migrate/changeset/schema.py index 5a77208..817d40e 100644 --- a/migrate/changeset/schema.py +++ b/migrate/changeset/schema.py @@ -31,7 +31,7 @@ __all__ = [ def create_column(column, table=None, *p, **kw): """Create a column, given the table. - + API to :meth:`ChangesetColumn.create`. """ if table is not None: @@ -41,7 +41,7 @@ def create_column(column, table=None, *p, **kw): def drop_column(column, table=None, *p, **kw): """Drop a column, given the table. - + API to :meth:`ChangesetColumn.drop`. """ if table is not None: @@ -105,12 +105,12 @@ def alter_column(*p, **k): :param engine: The :class:`~sqlalchemy.engine.base.Engine` to use for table reflection and schema alterations. - + :returns: A :class:`ColumnDelta` instance representing the change. - + """ - + if 'table' not in k and isinstance(p[0], sqlalchemy.Column): k['table'] = p[0].table if 'engine' not in k: @@ -129,7 +129,7 @@ def alter_column(*p, **k): # that this crutch has to be left in until they can be sorted # out k['alter_metadata']=True - + delta = ColumnDelta(*p, **k) visitorcallable = get_engine_visitor(engine, 'schemachanger') @@ -183,10 +183,10 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem): :param table: Table at which current Column should be bound to.\ If table name is given, reflection will be used. :type table: string or Table instance - + :param metadata: A :class:`MetaData` instance to store reflected table names - + :param engine: When reflecting tables, either engine or metadata must \ be specified to acquire engine object. :type engine: :class:`Engine` instance @@ -211,7 +211,7 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem): # as a crutch until the tests that fail when 'alter_metadata' # behaviour always happens can be sorted out self.alter_metadata = kw.pop("alter_metadata", False) - + self.meta = kw.pop("metadata", None) self.engine = kw.pop("engine", None) @@ -239,7 +239,7 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem): self.alter_metadata, super(ColumnDelta, self).__repr__() ) - + def __getitem__(self, key): if key not in self.keys(): raise KeyError("No such diff key, available: %s" % self.diffs ) @@ -278,7 +278,7 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem): """Compares two Column objects""" self.process_column(new_col) self.table = k.pop('table', None) - # we cannot use bool() on table in SA06 + # we cannot use bool() on table in SA06 if self.table is None: self.table = old_col.table if self.table is None: @@ -482,7 +482,7 @@ class ChangesetColumn(object): def alter(self, *p, **k): """Makes a call to :func:`alter_column` for the column this - method is called on. + method is called on. """ if 'table' not in k: k['table'] = self.table @@ -560,12 +560,12 @@ populated with defaults def _col_name_in_constraint(self,cons,name): return False - + def remove_from_table(self, table, unset_table=True): # TODO: remove primary keys, constraints, etc if unset_table: self.table = None - + to_drop = set() for index in table.indexes: columns = [] @@ -579,7 +579,7 @@ populated with defaults else: to_drop.add(index) table.indexes = table.indexes - to_drop - + to_drop = set() for cons in table.constraints: # TODO: deal with other types of constraint @@ -591,7 +591,7 @@ populated with defaults if self.name==col_name: to_drop.add(cons) table.constraints = table.constraints - to_drop - + if table.c.contains_column(self): if SQLA_07: table._columns.remove(self) diff --git a/migrate/tests/changeset/test_changeset.py b/migrate/tests/changeset/test_changeset.py index 8b4a6be..1ea7219 100644 --- a/migrate/tests/changeset/test_changeset.py +++ b/migrate/tests/changeset/test_changeset.py @@ -65,7 +65,7 @@ class TestAddDropColumn(fixture.DB): result = len(self.table.primary_key) self.assertEqual(result, num_of_expected_cols) - # we have 1 columns and there is no data column + # we have 1 columns and there is no data column assert_numcols(1) self.assertTrue(getattr(self.table.c, 'data', None) is None) if len(col_p) == 0: @@ -147,7 +147,7 @@ class TestAddDropColumn(fixture.DB): # Not necessarily bound to table return self.table.drop_column(col.name) return self.run_(add_func, drop_func) - + @fixture.usedb() def test_byname(self): """Add/drop columns via functions; by table object and column name""" @@ -302,7 +302,7 @@ class TestAddDropColumn(fixture.DB): if index.name=='ix_data': break self.assertEqual(expected,index.unique) - + @fixture.usedb() def test_index(self): col = Column('data', Integer) @@ -311,7 +311,7 @@ class TestAddDropColumn(fixture.DB): self._check_index(False) col.drop() - + @fixture.usedb() def test_index_unique(self): # shows how to create a unique index @@ -332,7 +332,7 @@ class TestAddDropColumn(fixture.DB): self._check_index(True) col.drop() - + @fixture.usedb() def test_server_defaults(self): """Can create columns with server_default values""" @@ -382,7 +382,7 @@ class TestAddDropColumn(fixture.DB): sorted([i.name for i in self.table.indexes]), [u'ix_tmp_adddropcol_d1', u'ix_tmp_adddropcol_d2'] ) - + # delete one self.table.c.d2.drop() @@ -392,7 +392,7 @@ class TestAddDropColumn(fixture.DB): sorted([i.name for i in self.table.indexes]), [u'ix_tmp_adddropcol_d1'] ) - + def _actual_foreign_keys(self): from sqlalchemy.schema import ForeignKeyConstraint result = [] @@ -406,12 +406,12 @@ class TestAddDropColumn(fixture.DB): result.append(col_names) result.sort() return result - + @fixture.usedb() def test_drop_with_foreign_keys(self): self.table.drop() self.meta.clear() - + # create FK's target reftable = Table('tmp_ref', self.meta, Column('id', Integer, primary_key=True), @@ -419,7 +419,7 @@ class TestAddDropColumn(fixture.DB): if self.engine.has_table(reftable.name): reftable.drop() reftable.create() - + # add a table with two foreign key columns self.table = Table( self.table_name, self.meta, @@ -432,13 +432,13 @@ class TestAddDropColumn(fixture.DB): # paranoid check self.assertEqual([['r1'],['r2']], self._actual_foreign_keys()) - + # delete one if self.engine.name == 'mysql': constraint.ForeignKeyConstraint([self.table.c.r2], [reftable.c.id], name='test_fk2').drop() self.table.c.r2.drop() - + # check remaining foreign key is there self.assertEqual([['r1']], self._actual_foreign_keys()) @@ -447,7 +447,7 @@ class TestAddDropColumn(fixture.DB): def test_drop_with_complex_foreign_keys(self): from sqlalchemy.schema import ForeignKeyConstraint from sqlalchemy.schema import UniqueConstraint - + self.table.drop() self.meta.clear() @@ -465,7 +465,7 @@ class TestAddDropColumn(fixture.DB): if self.engine.has_table(reftable.name): reftable.drop() reftable.create() - + # add a table with a complex foreign key constraint self.table = Table( self.table_name, self.meta, @@ -481,21 +481,21 @@ class TestAddDropColumn(fixture.DB): # paranoid check self.assertEqual([['r1','r2']], self._actual_foreign_keys()) - + # delete one if self.engine.name == 'mysql': constraint.ForeignKeyConstraint([self.table.c.r1, self.table.c.r2], [reftable.c.id, reftable.c.jd], name='test_fk').drop() self.table.c.r2.drop() - + # check the constraint is gone, since part of it # is no longer there - if people hit this, # they may be confused, maybe we should raise an error # and insist that the constraint is deleted first, separately? self.assertEqual([], self._actual_foreign_keys()) - + class TestRename(fixture.DB): """Tests for table and index rename methods""" level = fixture.DB.CONNECT @@ -575,7 +575,7 @@ class TestRename(fixture.DB): # test by just the string rename_table(table_name1, table_name2, engine=self.engine) assert_table_name(table_name2, True) # object not updated - + # Index renames if self.url.startswith('sqlite') or self.url.startswith('mysql'): self.assertRaises(exceptions.NotSupportedError, @@ -671,7 +671,7 @@ class TestColumnChange(fixture.DB): self.assert_('atad' not in self.table.c.keys()) self.table.c.data # Should not raise exception self.assertEqual(num_rows(self.table.c.data,content), 1) - + @fixture.usedb() def test_type(self): # Test we can change a column's type @@ -695,12 +695,12 @@ class TestColumnChange(fixture.DB): @fixture.usedb() def test_default(self): """Can change a column's server_default value (DefaultClauses only) - Only DefaultClauses are changed here: others are managed by the + Only DefaultClauses are changed here: others are managed by the application / by SA """ self.assertEqual(self.table.c.data.server_default.arg, 'tluafed') - # Just the new default + # Just the new default default = 'my_default' self.table.c.data.alter(server_default=DefaultClause(default)) self.refresh_table(self.table.name) @@ -750,7 +750,7 @@ class TestColumnChange(fixture.DB): # py 2.4 compatability :-/ cw = catch_warnings(record=True) w = cw.__enter__() - + warnings.simplefilter("always") self.table.c.data.alter(Column('data', String(100))) @@ -763,7 +763,7 @@ class TestColumnChange(fixture.DB): str(w[-1].message)) finally: cw.__exit__() - + @fixture.usedb() def test_alter_returns_delta(self): """Test if alter constructs return delta""" @@ -791,7 +791,7 @@ class TestColumnChange(fixture.DB): if self.engine.name == 'firebird': del kw['nullable'] self.table.c.data.alter(**kw) - + # test altered objects self.assertEqual(self.table.c.data.server_default.arg, 'foobar') if not self.engine.name == 'firebird': diff --git a/migrate/tests/changeset/test_constraint.py b/migrate/tests/changeset/test_constraint.py index 5527559..941030a 100644 --- a/migrate/tests/changeset/test_constraint.py +++ b/migrate/tests/changeset/test_constraint.py @@ -13,7 +13,7 @@ from migrate.tests import fixture class CommonTestConstraint(fixture.DB): """helper functions to test constraints. - + we just create a fresh new table and make sure everything is as required. """ @@ -257,7 +257,7 @@ class TestAutoname(CommonTestConstraint): cons = CheckConstraint('id > 3', columns=[self.table.c.id]) cons.create() self.refresh_table() - + if not self.engine.name == 'mysql': self.table.insert(values={'id': 4, 'fkey': 1}).execute() try: @@ -280,7 +280,7 @@ class TestAutoname(CommonTestConstraint): cons = UniqueConstraint(self.table.c.fkey) cons.create() self.refresh_table() - + self.table.insert(values={'fkey': 4, 'id': 1}).execute() try: self.table.insert(values={'fkey': 4, 'id': 2}).execute() diff --git a/migrate/tests/fixture/database.py b/migrate/tests/fixture/database.py index e000d60..90b25d5 100644 --- a/migrate/tests/fixture/database.py +++ b/migrate/tests/fixture/database.py @@ -65,7 +65,7 @@ def usedb(supported=None, not_supported=None): @param supported: run tests for ONLY these databases @param not_supported: run tests for all databases EXCEPT these - If both supported and not_supported are empty, all dbs are assumed + If both supported and not_supported are empty, all dbs are assumed to be supported """ if supported is not None and not_supported is not None: @@ -126,7 +126,7 @@ class DB(Base): level = TXN def _engineInfo(self, url=None): - if url is None: + if url is None: url = self.url return url @@ -151,7 +151,7 @@ class DB(Base): if self.level < self.CONNECT: return #self.session = create_session(bind=self.engine) - if self.level < self.TXN: + if self.level < self.TXN: return #self.txn = self.session.begin() diff --git a/migrate/tests/fixture/pathed.py b/migrate/tests/fixture/pathed.py index b36aa08..78cf4cd 100644 --- a/migrate/tests/fixture/pathed.py +++ b/migrate/tests/fixture/pathed.py @@ -30,10 +30,10 @@ class Pathed(base.Base): @classmethod def _tmp(cls, prefix='', suffix=''): """Generate a temporary file name that doesn't exist - All filenames are generated inside a temporary directory created by - tempfile.mkdtemp(); only the creating user has access to this directory. - It should be secure to return a nonexistant temp filename in this - directory, unless the user is messing with their own files. + All filenames are generated inside a temporary directory created by + tempfile.mkdtemp(); only the creating user has access to this directory. + It should be secure to return a nonexistant temp filename in this + directory, unless the user is messing with their own files. """ file, ret = tempfile.mkstemp(suffix,prefix,cls._tmpdir) os.close(file) @@ -43,7 +43,7 @@ class Pathed(base.Base): @classmethod def tmp(cls, *p, **k): return cls._tmp(*p, **k) - + @classmethod def tmp_py(cls, *p, **k): return cls._tmp(suffix='.py', *p, **k) @@ -63,7 +63,7 @@ class Pathed(base.Base): @classmethod def purge(cls, path): """Removes this path if it exists, in preparation for tests - Careful - all tests should take place in /tmp. + Careful - all tests should take place in /tmp. We don't want to accidentally wipe stuff out... """ if os.path.exists(path): diff --git a/migrate/tests/versioning/test_cfgparse.py b/migrate/tests/versioning/test_cfgparse.py index 27f52cd..1d0d7e8 100644 --- a/migrate/tests/versioning/test_cfgparse.py +++ b/migrate/tests/versioning/test_cfgparse.py @@ -17,7 +17,7 @@ class TestConfigParser(fixture.Base): parser.set('section','option','value') self.assertEqual(parser.get('section', 'option'), 'value') self.assertEqual(parser.to_dict()['section']['option'], 'value') - + def test_table_config(self): """We should be able to specify the table to be used with a repository""" default_text = Repository.prepare_config(Template().get_repository(), diff --git a/migrate/tests/versioning/test_keyedinstance.py b/migrate/tests/versioning/test_keyedinstance.py index 28f3b2b..d5e6ba2 100644 --- a/migrate/tests/versioning/test_keyedinstance.py +++ b/migrate/tests/versioning/test_keyedinstance.py @@ -19,7 +19,7 @@ class TestKeydInstance(fixture.Base): return str(key) def __init__(self,value): self.value=value - + a10 = Uniq1('a') # Different key: different instance diff --git a/migrate/tests/versioning/test_pathed.py b/migrate/tests/versioning/test_pathed.py index 7616e9d..2798067 100644 --- a/migrate/tests/versioning/test_pathed.py +++ b/migrate/tests/versioning/test_pathed.py @@ -12,7 +12,7 @@ class TestPathed(fixture.Base): self.assert_(result==Pathed._parent_path(filepath)) self.assert_(result==Pathed._parent_path(dirpath)) self.assert_(result==Pathed._parent_path(sdirpath)) - + def test_new(self): """Pathed(path) shouldn't create duplicate objects of the same path""" path='/fgsfds' @@ -34,7 +34,7 @@ class TestPathed(fixture.Base): parent=None children=0 def _init_child(self,child,path): - """Keep a tally of children. + """Keep a tally of children. (A real class might do something more interesting here) """ self.__class__.children+=1 diff --git a/migrate/tests/versioning/test_repository.py b/migrate/tests/versioning/test_repository.py index 7065368..37bb5e7 100644 --- a/migrate/tests/versioning/test_repository.py +++ b/migrate/tests/versioning/test_repository.py @@ -32,7 +32,7 @@ class TestRepository(fixture.Pathed): # Can't create it again: it already exists self.assertRaises(exceptions.PathFoundError, Repository.create, path, name) return path - + def test_load(self): """We should be able to load information about an existing repository""" # Create a repository to load @@ -45,7 +45,7 @@ class TestRepository(fixture.Pathed): # version_table's default isn't none self.assertNotEquals(repos.config.get('db_settings', 'version_table'), 'None') - + def test_load_notfound(self): """Nonexistant repositories shouldn't be loaded""" path = self.tmp_repos() @@ -54,7 +54,7 @@ class TestRepository(fixture.Pathed): def test_load_invalid(self): """Invalid repos shouldn't be loaded""" - # Here, invalid=empty directory. There may be other conditions too, + # Here, invalid=empty directory. There may be other conditions too, # but we shouldn't need to test all of them path = self.tmp_repos() os.mkdir(path) @@ -136,7 +136,7 @@ class TestVersionedRepository(fixture.Pathed): repos.create_script('') self.assert_(repos.version(repos.latest) is repos.version()) self.assert_(repos.version() is not None) - + def test_changeset(self): """Repositories can create changesets properly""" # Create a nonzero-version repository of empty scripts @@ -201,17 +201,17 @@ class TestVersionedRepository(fixture.Pathed): self.assertEqual(cs.end, 0) check_changeset((10, 5), 5) check_changeset((5, 0), 5) - + def test_many_versions(self): """Test what happens when lots of versions are created""" repos = Repository(self.path_repos) - for i in range(1001): + for i in range(1001): repos.create_script('') # since we normally create 3 digit ones, let's see if we blow up self.assert_(os.path.exists('%s/versions/1000.py' % self.path_repos)) self.assert_(os.path.exists('%s/versions/1001.py' % self.path_repos)) - + # TODO: test manage file # TODO: test changeset diff --git a/migrate/tests/versioning/test_schema.py b/migrate/tests/versioning/test_schema.py index 7502783..0089c38 100644 --- a/migrate/tests/versioning/test_schema.py +++ b/migrate/tests/versioning/test_schema.py @@ -53,7 +53,7 @@ class TestControlledSchema(fixture.Pathed, fixture.DB): # Trying to create another DB this way fails: table exists self.assertRaises(exceptions.DatabaseAlreadyControlledError, ControlledSchema.create, self.engine, self.repos) - + # We can load a controlled DB this way, too dbcontrol0 = ControlledSchema(self.engine, self.repos) self.assertEqual(dbcontrol, dbcontrol0) @@ -67,7 +67,7 @@ class TestControlledSchema(fixture.Pathed, fixture.DB): dbcontrol0 = ControlledSchema(engine, self.repos.path) self.assertEqual(dbcontrol, dbcontrol0) - # Clean up: + # Clean up: dbcontrol.drop() # Attempting to drop vc from a db without it should fail @@ -84,7 +84,7 @@ class TestControlledSchema(fixture.Pathed, fixture.DB): version = 0 dbcontrol = ControlledSchema.create(self.engine, self.repos, version) self.assertEqual(dbcontrol.version, version) - + # Correct when we load it, too dbcontrol = ControlledSchema(self.engine, self.repos) self.assertEqual(dbcontrol.version, version) @@ -125,7 +125,7 @@ class TestControlledSchema(fixture.Pathed, fixture.DB): def test_changeset(self): """Create changeset from controlled schema""" dbschema = ControlledSchema.create(self.engine, self.repos) - + # empty schema doesn't have changesets cs = dbschema.changeset() self.assertEqual(cs, {}) @@ -143,7 +143,7 @@ class TestControlledSchema(fixture.Pathed, fixture.DB): @fixture.usedb() def test_upgrade_runchange(self): dbschema = ControlledSchema.create(self.engine, self.repos) - + for i in range(10): self.repos.create_script('') @@ -184,7 +184,7 @@ class TestControlledSchema(fixture.Pathed, fixture.DB): dbschema = ControlledSchema.create(self.engine, self.repos) meta = self.construct_model() - + dbschema.update_db_from_model(meta) # TODO: test for table version in db diff --git a/migrate/tests/versioning/test_schemadiff.py b/migrate/tests/versioning/test_schemadiff.py index 1ff353f..ec6d1dc 100644 --- a/migrate/tests/versioning/test_schemadiff.py +++ b/migrate/tests/versioning/test_schemadiff.py @@ -18,7 +18,7 @@ class SchemaDiffBase(fixture.DB): ) if kw.get('create',True): self.table.create() - + def _assert_diff(self,col_A,col_B): self._make_table(col_A) self.meta.clear() @@ -43,16 +43,16 @@ class SchemaDiffBase(fixture.DB): self.name2, cd.col_B ),str(diff)) - + class Test_getDiffOfModelAgainstDatabase(SchemaDiffBase): name1 = 'model' name2 = 'database' - + def _run_diff(self,**kw): return schemadiff.getDiffOfModelAgainstDatabase( self.meta, self.engine, **kw ) - + @fixture.usedb() def test_table_missing_in_db(self): self._make_table(create=False) @@ -187,7 +187,7 @@ class Test_getDiffOfModelAgainstDatabase(SchemaDiffBase): Column('data', String(10)), Column('data', String(20)), ) - + @fixture.usedb() def test_integer_identical(self): self._make_table( @@ -196,7 +196,7 @@ class Test_getDiffOfModelAgainstDatabase(SchemaDiffBase): diff = self._run_diff() self.assertEqual('No schema diffs',str(diff)) self.assertFalse(diff) - + @fixture.usedb() def test_string_identical(self): self._make_table( diff --git a/migrate/tests/versioning/test_script.py b/migrate/tests/versioning/test_script.py index b52ddaa..95ee58c 100644 --- a/migrate/tests/versioning/test_script.py +++ b/migrate/tests/versioning/test_script.py @@ -223,7 +223,7 @@ User = Table('User', meta, f = open(path, 'w') f.write(contents) f.close() - + class TestSqlScript(fixture.Pathed, fixture.DB): diff --git a/migrate/tests/versioning/test_shell.py b/migrate/tests/versioning/test_shell.py index 0bf5e22..4ba6bce 100644 --- a/migrate/tests/versioning/test_shell.py +++ b/migrate/tests/versioning/test_shell.py @@ -52,7 +52,7 @@ class TestShellCommands(Shell): try: original = sys.argv sys.argv=['X','--help'] - + run_module('migrate.versioning.shell', run_name='__main__') finally: @@ -73,7 +73,7 @@ class TestShellCommands(Shell): sys.stderr = original actual = actual.getvalue() self.assertTrue(expected in actual,'%r not in:\n"""\n%s\n"""'%(expected,actual)) - + def test_main(self): """Test main() function""" repos = self.tmp_repos() @@ -106,7 +106,7 @@ class TestShellCommands(Shell): result = self.env.run('migrate create %s repository_name' % repos, expect_error=True) self.assertEqual(result.returncode, 2) - + def test_script(self): """We can create a migration script via the command line""" repos = self.tmp_repos() @@ -202,7 +202,7 @@ class TestShellDatabase(Shell, DB): # we need to connect to the DB to see if things worked level = DB.CONNECT - + @usedb() def test_version_control(self): """Ensure we can set version control on a database""" @@ -298,7 +298,7 @@ class TestShellDatabase(Shell, DB): result = self.env.run('migrate upgrade %s %s' % (self.url, repos_path)) self.assertEqual(self.run_db_version(self.url, repos_path), 1) - + # Downgrade must have a valid version specified result = self.env.run('migrate downgrade %s %s' % (self.url, repos_path), expect_error=True) self.assertEqual(result.returncode, 2) @@ -307,10 +307,10 @@ class TestShellDatabase(Shell, DB): result = self.env.run('migrate downgrade %s %s 2' % (self.url, repos_path), expect_error=True) self.assertEqual(result.returncode, 2) self.assertEqual(self.run_db_version(self.url, repos_path), 1) - + result = self.env.run('migrate downgrade %s %s 0' % (self.url, repos_path)) self.assertEqual(self.run_db_version(self.url, repos_path), 0) - + result = self.env.run('migrate downgrade %s %s 1' % (self.url, repos_path), expect_error=True) self.assertEqual(result.returncode, 2) self.assertEqual(self.run_db_version(self.url, repos_path), 0) @@ -348,7 +348,7 @@ class TestShellDatabase(Shell, DB): self.assertRaises(Exception, self.engine.text('select * from t_table').execute) # The tests below are written with some postgres syntax, but the stuff - # being tested (.sql files) ought to work with any db. + # being tested (.sql files) ought to work with any db. @usedb(supported='postgres') def test_sqlfile(self): upgrade_script = """ @@ -362,7 +362,7 @@ class TestShellDatabase(Shell, DB): """ self.meta.drop_all() self._run_test_sqlfile(upgrade_script, downgrade_script) - + @usedb(supported='postgres') def test_sqlfile_comment(self): upgrade_script = """ @@ -400,11 +400,11 @@ class TestShellDatabase(Shell, DB): script_text=''' from sqlalchemy import * from migrate import * - + def upgrade(): print 'fgsfds' raise Exception() - + def downgrade(): print 'sdfsgf' raise Exception() @@ -425,7 +425,7 @@ class TestShellDatabase(Shell, DB): from migrate import * from migrate.changeset import schema - + meta = MetaData(migrate_engine) account = Table('account', meta, Column('id', Integer, primary_key=True), @@ -436,7 +436,7 @@ class TestShellDatabase(Shell, DB): # Upgrade operations go here. Don't create your own engine; use the engine # named 'migrate_engine' imported from migrate. meta.create_all() - + def downgrade(): # Operations to reverse the above upgrade go here. meta.drop_all() @@ -447,7 +447,7 @@ class TestShellDatabase(Shell, DB): result = self.env.run('migrate test %s %s' % (self.url, repos_path)) self.assertEqual(self.run_version(repos_path), 1) self.assertEqual(self.run_db_version(self.url, repos_path), 0) - + @usedb() def test_rundiffs_in_shell(self): # This is a variant of the test_schemadiff tests but run through the shell level. @@ -542,7 +542,7 @@ class TestShellDatabase(Shell, DB): ## Operations to reverse the above upgrade go here. #meta.bind = migrate_engine #tmp_account_rundiffs.drop()''') - + ## Save the upgrade script. #result = self.env.run('migrate script Desc %s' % repos_path) #upgrade_script_path = '%s/versions/001_Desc.py' % repos_path diff --git a/migrate/tests/versioning/test_util.py b/migrate/tests/versioning/test_util.py index b6b1490..db4ea26 100644 --- a/migrate/tests/versioning/test_util.py +++ b/migrate/tests/versioning/test_util.py @@ -45,7 +45,7 @@ class TestUtil(fixture.Pathed): # py 2.4 compatability :-/ cw = catch_warnings(record=True) w = cw.__enter__() - + warnings.simplefilter("always") engine = construct_engine(url, echo='True') self.assertTrue(engine.echo) @@ -69,7 +69,7 @@ class TestUtil(fixture.Pathed): api.create(repo, 'temp') api.script('First Version', repo) engine = construct_engine('sqlite:///:memory:') - + api.version_control(engine, repo) api.upgrade(engine, repo) @@ -103,7 +103,7 @@ class TestUtil(fixture.Pathed): # py 2.4 compatability :-/ cw = catch_warnings(record=True) w = cw.__enter__() - + warnings.simplefilter("always") # deprecated spelling @@ -117,7 +117,7 @@ class TestUtil(fixture.Pathed): 'model should be in form of module.model:User ' 'and not module.model.User', str(w[-1].message)) - + finally: cw.__exit__() diff --git a/migrate/tests/versioning/test_version.py b/migrate/tests/versioning/test_version.py index f521659..25ab2b1 100644 --- a/migrate/tests/versioning/test_version.py +++ b/migrate/tests/versioning/test_version.py @@ -68,7 +68,7 @@ class TestVerNum(fixture.Base): self.assert_(VerNum(1) >= 1) self.assert_(VerNum(2) >= 1) self.assertFalse(VerNum(1) >= 2) - + class TestVersion(fixture.Pathed): @@ -128,11 +128,11 @@ class TestVersion(fixture.Pathed): def test_selection(self): """Verify right sql script is selected""" - + # Create empty directory. path = self.tmp_repos() os.mkdir(path) - + # Create files -- files must be present or you'll get an exception later. python_file = '001_initial_.py' sqlite_upgrade_file = '001_sqlite_upgrade.sql' @@ -143,13 +143,13 @@ class TestVersion(fixture.Pathed): ver = Version(1, path, [sqlite_upgrade_file]) self.assertEqual(os.path.basename(ver.script('sqlite', 'upgrade').path), sqlite_upgrade_file) - + ver = Version(1, path, [default_upgrade_file]) self.assertEqual(os.path.basename(ver.script('default', 'upgrade').path), default_upgrade_file) - + ver = Version(1, path, [sqlite_upgrade_file, default_upgrade_file]) self.assertEqual(os.path.basename(ver.script('sqlite', 'upgrade').path), sqlite_upgrade_file) - + ver = Version(1, path, [sqlite_upgrade_file, default_upgrade_file, python_file]) self.assertEqual(os.path.basename(ver.script('postgres', 'upgrade').path), default_upgrade_file) diff --git a/migrate/versioning/repository.py b/migrate/versioning/repository.py index 6e2f678..82aa271 100644 --- a/migrate/versioning/repository.py +++ b/migrate/versioning/repository.py @@ -153,7 +153,7 @@ class Repository(pathed.Pathed): def create_script(self, description, **k): """API to :meth:`migrate.versioning.version.Collection.create_new_python_version`""" - + k['use_timestamp_numbering'] = self.use_timestamp_numbering self.versions.create_new_python_version(description, **k) @@ -229,7 +229,7 @@ class Repository(pathed.Pathed): @classmethod def create_manage_file(cls, file_, **opts): """Create a project management script (manage.py) - + :param file_: Destination file to be written :param opts: Options that are passed to :func:`migrate.versioning.shell.main` """ diff --git a/migrate/versioning/script/base.py b/migrate/versioning/script/base.py index 4287235..22ca7b4 100644 --- a/migrate/versioning/script/base.py +++ b/migrate/versioning/script/base.py @@ -28,7 +28,7 @@ class BaseScript(pathed.Pathed): self.verify(path) super(BaseScript, self).__init__(path) log.debug('Script %s loaded successfully' % path) - + @classmethod def verify(cls, path): """Ensure this is a valid script diff --git a/migrate/versioning/script/sql.py b/migrate/versioning/script/sql.py index ed80764..fdc9e2b 100644 --- a/migrate/versioning/script/sql.py +++ b/migrate/versioning/script/sql.py @@ -15,7 +15,7 @@ class SqlScript(base.BaseScript): @classmethod def create(cls, path, **opts): """Create an empty migration script at specified path - + :returns: :class:`SqlScript instance <migrate.versioning.script.sql.SqlScript>`""" cls.require_notfound(path) diff --git a/migrate/versioning/template.py b/migrate/versioning/template.py index 182898a..8182e6b 100644 --- a/migrate/versioning/template.py +++ b/migrate/versioning/template.py @@ -33,7 +33,7 @@ class SQLScriptCollection(Collection): class Template(pathed.Pathed): """Finds the paths/packages of various Migrate templates. - + :param path: Templates are loaded from migrate package if `path` is not provided. """ @@ -65,7 +65,7 @@ class Template(pathed.Pathed): def _get_item(self, collection, theme=None): """Locates and returns collection. - + :param collection: name of collection to locate :param type_: type of subfolder in collection (defaults to "_default") :returns: (package, source) @@ -79,7 +79,7 @@ class Template(pathed.Pathed): def get_repository(self, *a, **kw): """Calls self._get_item('repository', *a, **kw)""" return self._get_item('repository', *a, **kw) - + def get_script(self, *a, **kw): """Calls self._get_item('script', *a, **kw)""" return self._get_item('script', *a, **kw) diff --git a/migrate/versioning/templates/repository/default/migrate.cfg b/migrate/versioning/templates/repository/default/migrate.cfg index dae0612..bcc33a7 100644 --- a/migrate/versioning/templates/repository/default/migrate.cfg +++ b/migrate/versioning/templates/repository/default/migrate.cfg @@ -5,16 +5,16 @@ repository_id={{ locals().pop('repository_id') }} # The name of the database table used to track the schema version. # This name shouldn't already be used by your project. -# If this is changed once a database is under version control, you'll need to -# change the table name in each database too. +# If this is changed once a database is under version control, you'll need to +# change the table name in each database too. version_table={{ locals().pop('version_table') }} -# When committing a change script, Migrate will attempt to generate the +# When committing a change script, Migrate will attempt to generate the # sql for all supported databases; normally, if one of them fails - probably -# because you don't have that database installed - it is ignored and the -# commit continues, perhaps ending successfully. -# Databases in this list MUST compile successfully during a commit, or the -# entire commit will fail. List the databases your application will actually +# because you don't have that database installed - it is ignored and the +# commit continues, perhaps ending successfully. +# Databases in this list MUST compile successfully during a commit, or the +# entire commit will fail. List the databases your application will actually # be using to ensure your updates to that database work properly. # This must be a list; example: ['postgres','sqlite'] required_dbs={{ locals().pop('required_dbs') }} diff --git a/migrate/versioning/templates/repository/pylons/migrate.cfg b/migrate/versioning/templates/repository/pylons/migrate.cfg index dae0612..bcc33a7 100644 --- a/migrate/versioning/templates/repository/pylons/migrate.cfg +++ b/migrate/versioning/templates/repository/pylons/migrate.cfg @@ -5,16 +5,16 @@ repository_id={{ locals().pop('repository_id') }} # The name of the database table used to track the schema version. # This name shouldn't already be used by your project. -# If this is changed once a database is under version control, you'll need to -# change the table name in each database too. +# If this is changed once a database is under version control, you'll need to +# change the table name in each database too. version_table={{ locals().pop('version_table') }} -# When committing a change script, Migrate will attempt to generate the +# When committing a change script, Migrate will attempt to generate the # sql for all supported databases; normally, if one of them fails - probably -# because you don't have that database installed - it is ignored and the -# commit continues, perhaps ending successfully. -# Databases in this list MUST compile successfully during a commit, or the -# entire commit will fail. List the databases your application will actually +# because you don't have that database installed - it is ignored and the +# commit continues, perhaps ending successfully. +# Databases in this list MUST compile successfully during a commit, or the +# entire commit will fail. List the databases your application will actually # be using to ensure your updates to that database work properly. # This must be a list; example: ['postgres','sqlite'] required_dbs={{ locals().pop('required_dbs') }} diff --git a/migrate/versioning/util/__init__.py b/migrate/versioning/util/__init__.py index 0928644..34ec5b2 100644 --- a/migrate/versioning/util/__init__.py +++ b/migrate/versioning/util/__init__.py @@ -22,7 +22,7 @@ def load_model(dotted_name): """Import module and use module-level variable". :param dotted_name: path to model in form of string: ``some.python.module:Class`` - + .. versionchanged:: 0.5.4 """ @@ -54,9 +54,9 @@ def asbool(obj): def guess_obj_type(obj): """Do everything to guess object type from string - + Tries to convert to `int`, `bool` and finally returns if not succeded. - + .. versionadded: 0.5.4 """ @@ -81,7 +81,7 @@ def guess_obj_type(obj): @decorator def catch_known_errors(f, *a, **kw): """Decorator that catches known api errors - + .. versionadded: 0.5.4 """ diff --git a/migrate/versioning/util/importpath.py b/migrate/versioning/util/importpath.py index 59b57f1..0b398e1 100644 --- a/migrate/versioning/util/importpath.py +++ b/migrate/versioning/util/importpath.py @@ -3,7 +3,7 @@ import sys def import_path(fullpath): """ Import a file with full path specification. Allows one to - import from anywhere, something __import__ does not do. + import from anywhere, something __import__ does not do. """ # http://zephyrfalcon.org/weblog/arch_d7_2002_08_31.html path, filename = os.path.split(fullpath) diff --git a/migrate/versioning/util/keyedinstance.py b/migrate/versioning/util/keyedinstance.py index 3f6cb91..a692e08 100644 --- a/migrate/versioning/util/keyedinstance.py +++ b/migrate/versioning/util/keyedinstance.py @@ -4,7 +4,7 @@ class KeyedInstance(object): """A class whose instances have a unique identifier of some sort No two instances with the same unique ID should exist - if we try to create - a second instance, the first should be returned. + a second instance, the first should be returned. """ _instances = dict() @@ -24,7 +24,7 @@ class KeyedInstance(object): @classmethod def _key(cls, *p, **k): """Given a unique identifier, return a dictionary key - This should be overridden by child classes, to specify which parameters + This should be overridden by child classes, to specify which parameters should determine an object's uniqueness """ raise NotImplementedError() diff --git a/migrate/versioning/version.py b/migrate/versioning/version.py index 0f92dd8..37dfbb9 100644 --- a/migrate/versioning/version.py +++ b/migrate/versioning/version.py @@ -75,7 +75,7 @@ class Collection(pathed.Pathed): and store them in self.versions """ super(Collection, self).__init__(path) - + # Create temporary list of files, allowing skipped version numbers. files = os.listdir(path) if '1' in files: @@ -126,7 +126,7 @@ class Collection(pathed.Pathed): script.PythonScript.create(filepath, **k) self.versions[ver] = Version(ver, self.path, [filename]) - + def create_new_sql_version(self, database, description, **k): """Create SQL files for new version""" ver = self._next_ver_num(k.pop('use_timestamp_numbering', False)) @@ -146,7 +146,7 @@ class Collection(pathed.Pathed): filepath = self._version_path(filename) script.SqlScript.create(filepath, **k) self.versions[ver].add_script(filepath) - + def version(self, vernum=None): """Returns latest Version if vernum is not given. Otherwise, returns wanted version""" @@ -165,7 +165,7 @@ class Collection(pathed.Pathed): class Version(object): """A single version in a collection - :param vernum: Version Number + :param vernum: Version Number :param path: Path to script files :param filelist: List of scripts :type vernum: int, VerNum @@ -182,7 +182,7 @@ class Version(object): for script in filelist: self.add_script(os.path.join(path, script)) - + def script(self, database=None, operation=None): """Returns SQL or Python Script""" for db in (database, 'default'): @@ -211,7 +211,7 @@ class Version(object): def _add_script_sql(self, path): basename = os.path.basename(path) match = self.SQL_FILENAME.match(basename) - + if match: basename = basename.replace('.sql', '') parts = basename.split('_') |