def downgrades(src):
 def _(f):
  destination = (src - 1)
  @do(op.setitem(_downgrade_methods, destination))
  @wraps(f)
  def wrapper(op, conn, version_info_table):
   conn.execute(version_info_table.delete())
   f(op)
   write_version_info(conn, version_info_table, destination)
  return wrapper
 return _

def downgrades ( src ) : def _ ( f ) : destination = ( src - 1 ) @ do ( op . setitem ( _downgrade_methods , destination ) ) @ wraps ( f ) def wrapper ( op , conn , version_info_table ) : conn . execute ( version_info_table . delete ( ) ) f ( op ) write_version_info ( conn , version_info_table , destination ) return wrapper return _
decorator for marking that a method is a downgrade to a version to the previous version .