From 711af7a4f24ba6324efbd373661013fb380879d1 Mon Sep 17 00:00:00 2001 From: Greg Von Kuster Date: Wed, 28 May 2008 21:20:15 +0000 Subject: [PATCH] Fix for sniffing datatypes, sniff order is now retrieved from app.datatypes_registry rather than the default sniff_order list in the Registry class. --- lib/galaxy/datatypes/sniff.py | 10 ++++++---- lib/galaxy/tools/actions/upload.py | 2 +- tools/data_source/biomart_filter.py | 2 +- tools/data_source/gbrowse_filter_code.py | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/datatypes/sniff.py b/lib/galaxy/datatypes/sniff.py index 9364bd69da0..7b66c7989b1 100644 --- a/lib/galaxy/datatypes/sniff.py +++ b/lib/galaxy/datatypes/sniff.py @@ -155,7 +155,7 @@ def is_column_based(fname, sep='\t', skip=0): return False return True -def guess_ext( fname ): +def guess_ext( fname, sniff_order=None ): """ Returns an extension that can be used in the datatype factory to generate a data for the 'fname' file @@ -198,9 +198,11 @@ def guess_ext( fname ): >>> fname = get_test_fname('alignment.lav') >>> guess_ext(fname) 'lav' - """ - datatypes_registry = registry.Registry() - for datatype in datatypes_registry.sniff_order: + """ + if sniff_order is None: + datatypes_registry = registry.Registry() + sniff_order = datatypes_registry.sniff_order + for datatype in sniff_order: """ Some classes may not have a sniff function, which is ok. In fact, the Tabular and Text classes are 2 examples of classes that should never have diff --git a/lib/galaxy/tools/actions/upload.py b/lib/galaxy/tools/actions/upload.py index 6e2e16ba285..32628b13682 100644 --- a/lib/galaxy/tools/actions/upload.py +++ b/lib/galaxy/tools/actions/upload.py @@ -150,7 +150,7 @@ class UploadToolAction( object ): else: self.line_count = sniff.convert_newlines( temp_name ) if file_type == 'auto': - ext = sniff.guess_ext( temp_name ) + ext = sniff.guess_ext( temp_name, sniff_order=trans.app.datatypes_registry.sniff_order ) else: ext = file_type data_type = ext diff --git a/tools/data_source/biomart_filter.py b/tools/data_source/biomart_filter.py index aa71e594ef4..53aa4a10478 100644 --- a/tools/data_source/biomart_filter.py +++ b/tools/data_source/biomart_filter.py @@ -11,7 +11,7 @@ def exec_before_job( app, inp_data, out_data, param_dict, tool=None): data_type = param_dict.get( 'type', 'txt' ) name, data = out_data.items()[0] if data_type == 'txt': - data_type = sniff.guess_ext(data.file_name) + data_type = sniff.guess_ext( data.file_name, sniff_order=app.datatypes_registry.sniff_order ) data = app.datatypes_registry.change_datatype(data, data_type) data.name = data_name out_data[name] = data diff --git a/tools/data_source/gbrowse_filter_code.py b/tools/data_source/gbrowse_filter_code.py index 9f6b95506bd..b427aafe5ca 100644 --- a/tools/data_source/gbrowse_filter_code.py +++ b/tools/data_source/gbrowse_filter_code.py @@ -27,7 +27,7 @@ def exec_after_process( app, inp_data, out_data, param_dict, tool=None, stdout=N if data.state == data.states.OK: data.info = data.name if data.extension == 'txt': - data_type = sniff.guess_ext( data.file_name ) + data_type = sniff.guess_ext( data.file_name, sniff_order=app.datatypes_registry.sniff_order ) data = app.datatypes_registry.change_datatype( data, data_type ) data.set_peek() data.set_size()