Commits

Mike Bayer committed 7057644

pep8

Comments (0)

Files changed (1)

alembic/autogenerate.py

 ###################################################
 # public
 def compare_metadata(context, metadata):
-    """Compare a database schema to that given in a :class:`~sqlalchemy.schema.MetaData`
-    instance.
+    """Compare a database schema to that given in a
+    :class:`~sqlalchemy.schema.MetaData` instance.
 
     The database connection is presented in the context
     of a :class:`.MigrationContext` object, which
     Output::
 
         [ ( 'add_table',
-            Table('bat', MetaData(bind=None), Column('info', String(), table=<bat>), schema=None)),
+            Table('bat', MetaData(bind=None),
+                Column('info', String(), table=<bat>), schema=None)),
           ( 'remove_table',
-            Table(u'bar', MetaData(bind=None), Column(u'data', VARCHAR(), table=<bar>), schema=None)),
+            Table(u'bar', MetaData(bind=None),
+                Column(u'data', VARCHAR(), table=<bar>), schema=None)),
           ( 'add_column',
             'foo',
             Column('data', Integer(), table=<foo>)),
 ###################################################
 # top level
 
-def _produce_migration_diffs(context, template_args, imports, _include_only=()):
+def _produce_migration_diffs(context, template_args,
+                                imports, _include_only=()):
     opts = context.opts
     metadata = opts['target_metadata']
     if metadata is None:
     autogen_context, connection = _autogen_context(context, imports)
 
     diffs = []
-    _produce_net_changes(connection, metadata, diffs, autogen_context, _include_only)
+    _produce_net_changes(connection, metadata, diffs,
+                                autogen_context, _include_only)
     template_args[opts['upgrade_token']] = \
             _indent(_produce_upgrade_commands(diffs, autogen_context))
     template_args[opts['downgrade_token']] = \
     opts = context.opts
     connection = context.bind
     return {
-        'imports':imports,
-        'connection':connection,
-        'dialect':connection.dialect,
-        'context':context,
-        'opts':opts
+        'imports': imports,
+        'connection': connection,
+        'dialect': connection.dialect,
+        'context': context,
+        'opts': opts
     }, connection
 
 def _indent(text):
-    text = "### commands auto generated by Alembic - please adjust! ###\n" + text
+    text = "### commands auto generated by Alembic - "\
+                    "please adjust! ###\n" + text
     text += "\n### end Alembic commands ###"
     text = re.compile(r'^', re.M).sub("    ", text).strip()
     return text
     if include_only:
         conn_table_names = conn_table_names.intersection(include_only)
 
-    metadata_table_names = OrderedSet([table.name for table in metadata.sorted_tables])
+    metadata_table_names = OrderedSet([table.name
+                                for table in metadata.sorted_tables])
 
     _compare_tables(conn_table_names, metadata_table_names,
                     inspector, metadata, diffs, autogen_context)
 ###################################################
 # element comparison
 
-def _compare_columns(tname, conn_table, metadata_table, diffs, autogen_context):
+def _compare_columns(tname, conn_table, metadata_table,
+                                diffs, autogen_context):
     metadata_cols_by_name = dict((c.name, c) for c in metadata_table.c)
     conn_col_names = set(conn_table)
     metadata_col_names = set(metadata_cols_by_name)
         diffs.append(
             ("modify_nullable", tname, cname,
                 {
-                    "existing_type":conn_col['type'],
-                    "existing_server_default":conn_col['default'],
+                    "existing_type": conn_col['type'],
+                    "existing_server_default": conn_col['default'],
                 },
                 conn_col_nullable,
                 metadata_col_nullable),
     conn_type = conn_col['type']
     metadata_type = metadata_col.type
     if conn_type._type_affinity is sqltypes.NullType:
-        log.info("Couldn't determine database type for column '%s.%s'" % (tname, cname))
+        log.info("Couldn't determine database type "
+                    "for column '%s.%s'" % (tname, cname))
         return
     if metadata_type._type_affinity is sqltypes.NullType:
-        log.info("Column '%s.%s' has no type within the model; can't compare" % (tname, cname))
+        log.info("Column '%s.%s' has no type within "
+                        "the model; can't compare" % (tname, cname))
         return
 
     isdiff = autogen_context['context']._compare_type(conn_col, metadata_col)
         diffs.append(
             ("modify_type", tname, cname,
                     {
-                        "existing_nullable":conn_col['nullable'],
-                        "existing_server_default":conn_col['default'],
+                        "existing_nullable": conn_col['nullable'],
+                        "existing_server_default": conn_col['default'],
                     },
                     conn_type,
                     metadata_type),
     conn_col_default = conn_col['default']
     if conn_col_default is None and metadata_default is None:
         return False
-    rendered_metadata_default = _render_server_default(metadata_default, autogen_context)
+    rendered_metadata_default = _render_server_default(
+                            metadata_default, autogen_context)
     isdiff = autogen_context['context']._compare_server_default(
                         conn_col, metadata_col,
                         rendered_metadata_default
         diffs.append(
             ("modify_default", tname, cname,
                 {
-                    "existing_nullable":conn_col['nullable'],
-                    "existing_type":conn_col['type'],
+                    "existing_nullable": conn_col['nullable'],
+                    "existing_type": conn_col['type'],
                 },
                 conn_col_default,
                 metadata_default),
     cmd_args = args[1:] + (autogen_context,)
 
     _commands = {
-        "table":(_drop_table, _add_table),
-        "column":(_drop_column, _add_column),
+        "table": (_drop_table, _add_table),
+        "column": (_drop_column, _add_column),
     }
 
     cmd_callables = _commands[cmd_type]
     kw = {}
 
     _arg_struct = {
-        "modify_type":("existing_type", "type_"),
-        "modify_nullable":("existing_nullable", "nullable"),
-        "modify_default":("existing_server_default", "server_default"),
+        "modify_type": ("existing_type", "type_"),
+        "modify_nullable": ("existing_nullable", "nullable"),
+        "modify_default": ("existing_server_default", "server_default"),
     }
     for diff in args:
         diff_kw = diff[3]
 
 def _add_table(table, autogen_context):
     return "%(prefix)screate_table(%(tablename)r,\n%(args)s\n)" % {
-        'tablename':table.name,
-        'prefix':_alembic_autogenerate_prefix(autogen_context),
-        'args':',\n'.join(
+        'tablename': table.name,
+        'prefix': _alembic_autogenerate_prefix(autogen_context),
+        'args': ',\n'.join(
             [_render_column(col, autogen_context) for col in table.c] +
             sorted([rcons for rcons in
                 [_render_constraint(cons, autogen_context) for cons in
 
 def _drop_table(table, autogen_context):
     return "%(prefix)sdrop_table(%(tname)r)" % {
-            "prefix":_alembic_autogenerate_prefix(autogen_context),
-            "tname":table.name
+            "prefix": _alembic_autogenerate_prefix(autogen_context),
+            "tname": table.name
         }
 
 def _add_column(tname, column, autogen_context):
     return "%(prefix)sadd_column(%(tname)r, %(column)s)" % {
-            "prefix":_alembic_autogenerate_prefix(autogen_context),
-            "tname":tname,
-            "column":_render_column(column, autogen_context)
+            "prefix": _alembic_autogenerate_prefix(autogen_context),
+            "tname": tname,
+            "column": _render_column(column, autogen_context)
             }
 
 def _drop_column(tname, column, autogen_context):
     return "%(prefix)sdrop_column(%(tname)r, %(cname)r)" % {
-            "prefix":_alembic_autogenerate_prefix(autogen_context),
-            "tname":tname,
-            "cname":column.name
+            "prefix": _alembic_autogenerate_prefix(autogen_context),
+            "tname": tname,
+            "cname": column.name
             }
 
 def _modify_col(tname, cname,
     sqla_prefix = _sqlalchemy_autogenerate_prefix(autogen_context)
     indent = " " * 11
     text = "%(prefix)salter_column(%(tname)r, %(cname)r" % {
-                            'prefix':_alembic_autogenerate_prefix(autogen_context),
-                            'tname':tname,
-                            'cname':cname}
+                            'prefix': _alembic_autogenerate_prefix(
+                                                autogen_context),
+                            'tname': tname,
+                            'cname': cname}
     text += ",\n%sexisting_type=%s" % (indent,
                     _repr_type(sqla_prefix, existing_type, autogen_context))
     if server_default is not False:
         text += ",\n%sserver_default=%s" % (indent,
-                        _render_server_default(server_default, autogen_context),)
+                        _render_server_default(
+                                server_default, autogen_context),)
     if type_ is not None:
-        text += ",\n%stype_=%s" % (indent, _repr_type(sqla_prefix, type_, autogen_context))
+        text += ",\n%stype_=%s" % (indent,
+                        _repr_type(sqla_prefix, type_, autogen_context))
     if nullable is not None:
         text += ",\n%snullable=%r" % (
                         indent, nullable,)
     opts = []
     if column.server_default:
         opts.append(("server_default",
-                    _render_server_default(column.server_default, autogen_context)))
+                    _render_server_default(
+                            column.server_default, autogen_context
+                    )))
     if column.nullable is not None:
         opts.append(("nullable", column.nullable))
 
     # TODO: for non-ascii colname, assign a "key"
     return "%(prefix)sColumn(%(name)r, %(type)s, %(kw)s)" % {
-        'prefix':_sqlalchemy_autogenerate_prefix(autogen_context),
-        'name':column.name,
-        'type':_repr_type(_sqlalchemy_autogenerate_prefix(autogen_context), column.type, autogen_context),
-        'kw':", ".join(["%s=%s" % (kwname, val) for kwname, val in opts])
+        'prefix': _sqlalchemy_autogenerate_prefix(autogen_context),
+        'name': column.name,
+        'type': _repr_type(_sqlalchemy_autogenerate_prefix(autogen_context),
+                                column.type, autogen_context),
+        'kw': ", ".join(["%s=%s" % (kwname, val) for kwname, val in opts])
     }
 
 def _render_server_default(default, autogen_context):
         if isinstance(default.arg, basestring):
             default = default.arg
         else:
-            default = str(default.arg.compile(dialect=autogen_context['dialect']))
+            default = str(default.arg.compile(
+                            dialect=autogen_context['dialect']))
     if isinstance(default, basestring):
         # TODO: this is just a hack to get
         # tests to pass until we figure out
     if constraint.name:
         opts.append(("name", repr(constraint.name)))
     return "%(prefix)sPrimaryKeyConstraint(%(args)s)" % {
-        "prefix":_sqlalchemy_autogenerate_prefix(autogen_context),
-        "args":", ".join(
+        "prefix": _sqlalchemy_autogenerate_prefix(autogen_context),
+        "args": ", ".join(
             [repr(c.key) for c in constraint.columns] +
             ["%s=%s" % (kwname, val) for kwname, val in opts]
         ),
     if constraint.name:
         opts.append(("name", repr(constraint.name)))
     # TODO: deferrable, initially, etc.
-    return "%(prefix)sForeignKeyConstraint([%(cols)s], [%(refcols)s], %(args)s)" % {
-        "prefix":_sqlalchemy_autogenerate_prefix(autogen_context),
-        "cols":", ".join("'%s'" % f.parent.key for f in constraint.elements),
-        "refcols":", ".join(repr(f._get_colspec()) for f in constraint.elements),
-        "args":", ".join(
+    return "%(prefix)sForeignKeyConstraint([%(cols)s], "\
+            "[%(refcols)s], %(args)s)" % {
+        "prefix": _sqlalchemy_autogenerate_prefix(autogen_context),
+        "cols": ", ".join("'%s'" % f.parent.key for f in constraint.elements),
+        "refcols": ", ".join(repr(f._get_colspec())
+                            for f in constraint.elements),
+        "args": ", ".join(
             ["%s=%s" % (kwname, val) for kwname, val in opts]
         ),
     }
     if constraint.name:
         opts.append(("name", "'%s'" % constraint.name))
     return "%(prefix)sUniqueConstraint(%(cols)s%(opts)s)" % {
-        'opts':", " + (", ".join("%s=%s" % (k, v) for k, v in opts)) if opts else "",
+        'opts': ", " + (", ".join("%s=%s" % (k, v)
+                            for k, v in opts)) if opts else "",
         'cols': ",".join(["'%s'" % c.name for c in constraint.columns]),
-            "prefix":_sqlalchemy_autogenerate_prefix(autogen_context)
+        "prefix": _sqlalchemy_autogenerate_prefix(autogen_context)
         }
 _constraint_renderers = {
-    schema.PrimaryKeyConstraint:_render_primary_key,
-    schema.ForeignKeyConstraint:_render_foreign_key,
-    schema.UniqueConstraint:_render_unique_constraint,
-    schema.CheckConstraint:_render_check_constraint
+    schema.PrimaryKeyConstraint: _render_primary_key,
+    schema.ForeignKeyConstraint: _render_foreign_key,
+    schema.UniqueConstraint: _render_unique_constraint,
+    schema.CheckConstraint: _render_check_constraint
 }