def Table(*args, **kw):
 test_opts = dict([(k, kw.pop(k)) for k in list(kw) if k.startswith('test_')])
 kw.update(table_options)
 if exclusions.against(config._current, 'mysql'):
  if (('mysql_engine' not in kw) and ('mysql_type' not in kw)):
   if (('test_needs_fk' in test_opts) or ('test_needs_acid' in test_opts)):
    kw['mysql_engine'] = 'InnoDB'
   else:
    kw['mysql_engine'] = 'MyISAM'
 if exclusions.against(config._current, 'firebird'):
  table_name = args[0]
  unpack = config.db.dialect.identifier_preparer.unformat_identifiers
  fks = [fk for col in args if isinstance(col, schema.Column) for fk in col.foreign_keys]
  for fk in fks:
   ref = fk._colspec
   if isinstance(ref, schema.Column):
    name = ref.table.name
   else:
    name = unpack(ref)[0]
   if (name == table_name):
    if (fk.ondelete is None):
     fk.ondelete = 'CASCADE'
    if (fk.onupdate is None):
     fk.onupdate = 'CASCADE'
 return schema.Table(*args, **kw)

def Table ( * args , ** kw ) : test_opts = dict ( [ ( k , kw . pop ( k ) ) for k in list ( kw ) if k . startswith ( 'test_' ) ] ) kw . update ( table_options ) if exclusions . against ( config . _current , 'mysql' ) : if ( ( 'mysql_engine' not in kw ) and ( 'mysql_type' not in kw ) ) : if ( ( 'test_needs_fk' in test_opts ) or ( 'test_needs_acid' in test_opts ) ) : kw [ 'mysql_engine' ] = 'InnoDB' else : kw [ 'mysql_engine' ] = 'MyISAM' if exclusions . against ( config . _current , 'firebird' ) : table_name = args [ 0 ] unpack = config . db . dialect . identifier_preparer . unformat_identifiers fks = [ fk for col in args if isinstance ( col , schema . Column ) for fk in col . foreign_keys ] for fk in fks : ref = fk . _colspec if isinstance ( ref , schema . Column ) : name = ref . table . name else : name = unpack ( ref ) [ 0 ] if ( name == table_name ) : if ( fk . ondelete is None ) : fk . ondelete = 'CASCADE' if ( fk . onupdate is None ) : fk . onupdate = 'CASCADE' return schema . Table ( * args , ** kw )
wrap table creation to add any necessary dialect-specific options .