# HG changeset patch # User cropgeeks # Date 1488460585 18000 # Node ID c8c40cbe2945c341ecffec5c9065d63ec2d21015 # Parent 7ae1bb322c6f5630b21f5cf6afd472b3850deae2 Uploaded diff -r 7ae1bb322c6f -r c8c40cbe2945 flapjack.py --- a/flapjack.py Thu Mar 02 08:01:45 2017 -0500 +++ b/flapjack.py Thu Mar 02 08:16:25 2017 -0500 @@ -1,14 +1,17 @@ from galaxy.datatypes.data import Text from galaxy.datatypes.tabular import Tabular -from galaxy.datatypes.binary import SQlite +from galaxy.datatypes.binary import Binary -class FlapjackFormat(SQlite): +class FlapjackFormat(Binary): file_ext = "flapjack" def sniff(self, filename): - if super(FlapjackFormat, self).sniff(filename): - fj_table_names = ["objects", "project"] - try: + # The first 16 bytes of any SQLite3 database file is 'SQLite format 3\0', and the file is binary. For details + # about the format, see http://www.sqlite.org/fileformat.html + try: + header = open(filename, 'rb').read(16) + if header == b'SQLite format 3\0': + fj_table_names = ["objects", "project"] conn = sqlite.connect(filename) c = conn.cursor() tables_query = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name" @@ -18,9 +21,9 @@ if table_name not in result: return False return True - except Exception as e: - log.warning('%s, sniff Exception: %s', self, e) - return False + return False + except: + return False Binary.register_sniffable_binary_format( "flapjack", "flapjack", FlapjackFormat)