diff --git a/config/datatypes_conf.xml.sample b/config/datatypes_conf.xml.sample
index d1a8dacd765..44aee3e5531 100644
--- a/config/datatypes_conf.xml.sample
+++ b/config/datatypes_conf.xml.sample
@@ -52,8 +52,8 @@
-
-
+
+
@@ -570,8 +570,8 @@
-
-
+
+
diff --git a/lib/galaxy/datatypes/tabular.py b/lib/galaxy/datatypes/tabular.py
index 75257f1d9f1..4c5038c17ed 100644
--- a/lib/galaxy/datatypes/tabular.py
+++ b/lib/galaxy/datatypes/tabular.py
@@ -875,18 +875,18 @@ class FeatureLocationIndex( Tabular ):
@dataproviders.decorators.has_dataproviders
-class CSV( TabularData ):
+class BaseCSV( TabularData ):
"""
Delimiter-separated table data.
This includes CSV, TSV and other dialects understood by the
Python 'csv' module https://docs.python.org/2/library/csv.html
-
- WARNING: This type is BUGGY it is kept purely for backward compatibility
- It will incorrectly sniff tab separated files for which the get_meta method fails!
+ Must be extended to define the dialect to use, strict_width: and file_ext.
+ See Python module csv for documentation of dialect settings
"""
delimiter = ','
file_ext = 'csv' # File extension
peek_size = 1024 # File chunk used for sniffing CSV dialect
+ big_peek_size = 10240 # Large File chunk used for sniffing CSV dialect
def is_int( self, column_text ):
try:
@@ -912,55 +912,6 @@ class CSV( TabularData ):
else:
return 'str'
- def sniff( self, filename ):
- """ Return True if if recognizes dialect and header. """
- if not csv.Sniffer().has_header(open(filename, 'r').read(self.peek_size)):
- return False
- # Fetch at least three consecutive lines to be reasonably sure
- reader = csv.reader(open(filename, 'r'))
- for i in range(0, 3):
- reader.next()
- return True
-
- def set_meta( self, dataset, **kwd ):
- with open(dataset.file_name, 'r') as csvfile:
- # Parse file
- reader = csv.reader(csvfile)
- data_row = None
- header_row = None
- try:
- header_row = reader.next()
- data_row = reader.next()
- for row in reader:
- pass
- except csv.Error as e:
- raise Exception('CSV reader error - line %d: %s' % (reader.line_num, e))
-
- # Guess column types
- column_types = []
- for cell in data_row:
- column_types.append(self.guess_type(cell))
-
- # Set metadata
- dataset.metadata.data_lines = reader.line_num - 1
- dataset.metadata.comment_lines = 1
- dataset.metadata.column_types = column_types
- dataset.metadata.columns = max( len( header_row ), len( data_row ) )
- dataset.metadata.column_names = header_row
- dataset.metadata.delimiter = reader.dialect.delimiter
-
-
-@dataproviders.decorators.has_dataproviders
-class BaseCSV( CSV ):
- """
- Delimiter-separated table data.
- This includes CSV, TSV and other dialects understood by the
- Python 'csv' module https://docs.python.org/2/library/csv.html
- Must be extended to define the dialect to use, strict_width: and file_ext.
- See Python module csv for documentation of dialect settings
- """
- big_peek_size = 10240 # Large File chunk used for sniffing CSV dialect
-
def sniff( self, filename ):
""" Return True if if recognizes dialect and header. """
try:
@@ -1042,7 +993,7 @@ class BaseCSV( CSV ):
@dataproviders.decorators.has_dataproviders
-class ExcelCSV( BaseCSV ):
+class CSV( BaseCSV ):
"""
Comma separated table data.
Only sniffs comma separated files with at least 2 columns
@@ -1056,7 +1007,7 @@ class ExcelCSV( BaseCSV ):
@dataproviders.decorators.has_dataproviders
-class ExcelTSV( BaseCSV ):
+class TSV( BaseCSV ):
"""
Comma separated table data.
Only sniff tab separated files with at least two columns