mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #1731 from mvdbeek/python_2_3_string_handling
Python 2/3 string handling
This commit is contained in:
@@ -16,6 +16,8 @@ import sys
|
||||
import tempfile
|
||||
import threading
|
||||
from datetime import timedelta
|
||||
from six import string_types
|
||||
|
||||
from galaxy.exceptions import ConfigurationError
|
||||
from galaxy.util import listify
|
||||
from galaxy.util import string_as_bool
|
||||
@@ -125,7 +127,7 @@ class Configuration( object ):
|
||||
self.running_functional_tests = string_as_bool( kwargs.get( 'running_functional_tests', False ) )
|
||||
self.hours_between_check = kwargs.get( 'hours_between_check', 12 )
|
||||
self.enable_tool_shed_check = string_as_bool( kwargs.get( 'enable_tool_shed_check', False ) )
|
||||
if isinstance( self.hours_between_check, basestring ):
|
||||
if isinstance( self.hours_between_check, string_types ):
|
||||
self.hours_between_check = float( self.hours_between_check )
|
||||
try:
|
||||
if isinstance( self.hours_between_check, int ):
|
||||
|
||||
@@ -7,11 +7,13 @@ import tempfile
|
||||
import zipfile
|
||||
from cgi import escape
|
||||
from inspect import isclass
|
||||
from six import string_types
|
||||
|
||||
from . import metadata
|
||||
from galaxy import util
|
||||
from galaxy.datatypes.metadata import MetadataElement # import directly to maintain ease of use in Datatype class definitions
|
||||
from galaxy.util import inflector
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.util.bunch import Bunch
|
||||
from galaxy.util.odict import odict
|
||||
from galaxy.util.sanitize_html import sanitize_html
|
||||
@@ -201,10 +203,7 @@ class Data( object ):
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
if isinstance(line, unicode):
|
||||
out.append( '<tr><td>%s</td></tr>' % escape( line ) )
|
||||
else:
|
||||
out.append( '<tr><td>%s</td></tr>' % escape( unicode( line, 'utf-8' ) ) )
|
||||
out.append( '<tr><td>%s</td></tr>' % escape( unicodify( line, 'utf-8' ) ) )
|
||||
out.append( '</table>' )
|
||||
out = "".join( out )
|
||||
except Exception as exc:
|
||||
@@ -327,7 +326,7 @@ class Data( object ):
|
||||
# Prevent IE8 from sniffing content type since we're explicit about it. This prevents intentionally text/plain
|
||||
# content from being rendered in the browser
|
||||
trans.response.headers['X-Content-Type-Options'] = 'nosniff'
|
||||
if isinstance( data, basestring ):
|
||||
if isinstance( data, string_types ):
|
||||
return data
|
||||
if filename and filename != "index":
|
||||
# For files in extra_files_path
|
||||
@@ -385,11 +384,8 @@ class Data( object ):
|
||||
def display_name(self, dataset):
|
||||
"""Returns formatted html of dataset name"""
|
||||
try:
|
||||
if isinstance(dataset.name, unicode):
|
||||
return escape( dataset.name )
|
||||
else:
|
||||
return escape( unicode( dataset.name, 'utf-8 ') )
|
||||
except:
|
||||
return escape( unicodify( dataset.name, 'utf-8' ) )
|
||||
except Exception:
|
||||
return "name unavailable"
|
||||
|
||||
def display_info(self, dataset):
|
||||
@@ -404,9 +400,7 @@ class Data( object ):
|
||||
if info.find( '\n' ) >= 0:
|
||||
info = info.replace( '\n', '<br/>' )
|
||||
|
||||
# Convert to unicode to display non-ascii characters.
|
||||
if not isinstance(info, unicode):
|
||||
info = unicode( info, 'utf-8')
|
||||
info = unicodify( info, 'utf-8' )
|
||||
|
||||
return info
|
||||
except:
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
# Contains objects for using external display applications
|
||||
import logging
|
||||
import urllib
|
||||
from six import string_types
|
||||
from urllib import quote_plus
|
||||
from copy import deepcopy
|
||||
|
||||
from galaxy.util import parse_xml, string_as_bool
|
||||
from galaxy.util.odict import odict
|
||||
from galaxy.util.template import fill_template
|
||||
from galaxy.web import url_for
|
||||
from parameters import DisplayApplicationParameter, DisplayApplicationDataParameter, DEFAULT_DATASET_NAME
|
||||
from urllib import quote_plus
|
||||
from util import encode_dataset_user
|
||||
from copy import deepcopy
|
||||
|
||||
log = logging.getLogger( __name__ )
|
||||
|
||||
@@ -157,7 +159,7 @@ class DynamicDisplayApplicationBuilder( object ):
|
||||
display_application.add_data_table_watch( data_table.name, version )
|
||||
links = []
|
||||
for line in data_iter:
|
||||
if isinstance( line, basestring ):
|
||||
if isinstance( line, string_types ):
|
||||
if not skip_startswith or not line.startswith( skip_startswith ):
|
||||
line = line.rstrip( '\n\r' )
|
||||
if not line:
|
||||
|
||||
@@ -13,9 +13,11 @@ import tempfile
|
||||
import zipfile
|
||||
|
||||
from encodings import search_function as encodings_search_function
|
||||
from six import text_type
|
||||
|
||||
from galaxy import util
|
||||
from galaxy.util import multi_byte
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.util.checkers import check_binary, check_html, is_gzip
|
||||
from galaxy.datatypes.binary import Binary
|
||||
|
||||
@@ -51,7 +53,7 @@ def stream_to_open_named_file( stream, fd, filename, source_encoding=None, sourc
|
||||
is_compressed = True
|
||||
else:
|
||||
try:
|
||||
if unicode( chunk[:2] ) == unicode( util.gzip_magic ):
|
||||
if text_type( chunk[:2] ) == text_type( util.gzip_magic ):
|
||||
is_compressed = True
|
||||
except:
|
||||
pass
|
||||
@@ -63,7 +65,7 @@ def stream_to_open_named_file( stream, fd, filename, source_encoding=None, sourc
|
||||
is_binary = util.is_binary( chunk )
|
||||
data_checked = True
|
||||
if not is_compressed and not is_binary:
|
||||
if not isinstance( chunk, unicode ):
|
||||
if not isinstance( chunk, text_type ):
|
||||
chunk = chunk.decode( source_encoding, source_error )
|
||||
os.write( fd, chunk.encode( target_encoding, target_error ) )
|
||||
else:
|
||||
@@ -200,7 +202,7 @@ def get_headers( fname, sep, count=60, is_multi_byte=False ):
|
||||
line = line.rstrip('\n\r')
|
||||
if is_multi_byte:
|
||||
# TODO: fix this - sep is never found in line
|
||||
line = unicode( line, 'utf-8' )
|
||||
line = unicodify( line, 'utf-8' )
|
||||
sep = sep.encode( 'utf-8' )
|
||||
headers.append( line.split(sep) )
|
||||
if idx == count:
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
"""
|
||||
Manager and Serializer for Datasets.
|
||||
"""
|
||||
from six import string_types
|
||||
|
||||
from galaxy import model
|
||||
from galaxy import exceptions
|
||||
import galaxy.datatypes.metadata
|
||||
@@ -379,7 +381,7 @@ class _UnflattenedMetadataDatasetAssociationSerializer( base.ModelSerializer,
|
||||
# common to lddas and hdas - from mapping.py
|
||||
'copied_from_history_dataset_association_id' : self.serialize_id,
|
||||
'copied_from_library_dataset_dataset_association_id': self.serialize_id,
|
||||
'info' : lambda i, k, **c: i.info.strip() if isinstance( i.info, basestring ) else i.info,
|
||||
'info' : lambda i, k, **c: i.info.strip() if isinstance( i.info, string_types ) else i.info,
|
||||
'blurb' : lambda i, k, **c: i.blurb,
|
||||
'peek' : lambda i, k, **c: i.display_peek() if i.peek and i.peek != 'no peek' else None,
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ Mixins for Taggable model managers and serializers.
|
||||
# from galaxy import exceptions as galaxy_exceptions
|
||||
|
||||
import logging
|
||||
|
||||
from galaxy.util import unicodify
|
||||
|
||||
log = logging.getLogger( __name__ )
|
||||
|
||||
|
||||
@@ -34,7 +37,7 @@ def _tags_from_strings( item, tag_handler, new_tags_list, user=None ):
|
||||
# TODO: duped from tags manager - de-dupe when moved to taggable mixin
|
||||
tag_handler.delete_item_tags( user, item )
|
||||
new_tags_str = ','.join( new_tags_list )
|
||||
tag_handler.apply_item_tags( user, item, unicode( new_tags_str.encode( 'utf-8' ), 'utf-8' ) )
|
||||
tag_handler.apply_item_tags( user, item, unicodify( new_tags_str, 'utf-8' ) )
|
||||
# TODO:!! does the creation of new_tags_list mean there are now more and more unused tag rows in the db?
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import logging
|
||||
import re
|
||||
|
||||
from galaxy.util import unicodify
|
||||
from six import string_types
|
||||
from sqlalchemy.sql import select
|
||||
from sqlalchemy.sql.expression import func
|
||||
|
||||
@@ -41,7 +43,7 @@ class TagManager( object ):
|
||||
|
||||
self.delete_item_tags( user, item )
|
||||
new_tags_str = ','.join( new_tags_list )
|
||||
self.apply_item_tags( user, item, unicode( new_tags_str.encode( 'utf-8' ), 'utf-8' ) )
|
||||
self.apply_item_tags( user, item, unicodify( new_tags_str, 'utf-8' ) )
|
||||
self.app.model.context.flush()
|
||||
return item.tags
|
||||
|
||||
@@ -114,7 +116,7 @@ class TagManager( object ):
|
||||
def item_has_tag( self, user, item, tag ):
|
||||
"""Returns true if item is has a given tag."""
|
||||
# Get tag name.
|
||||
if isinstance( tag, basestring ):
|
||||
if isinstance( tag, string_types ):
|
||||
tag_name = tag
|
||||
elif isinstance( tag, self.app.model.Tag ):
|
||||
tag_name = tag.name
|
||||
|
||||
@@ -17,6 +17,7 @@ from datetime import datetime, timedelta
|
||||
from itertools import ifilter, imap
|
||||
from string import Template
|
||||
from uuid import UUID, uuid4
|
||||
from six import string_types
|
||||
|
||||
from sqlalchemy import and_, func, not_, or_, true, join, select
|
||||
from sqlalchemy.orm import joinedload, object_session, aliased
|
||||
@@ -37,10 +38,11 @@ from galaxy.model.item_attrs import UsesAnnotations
|
||||
from galaxy.util.dictifiable import Dictifiable
|
||||
from galaxy.security import get_permitted_actions
|
||||
from galaxy.util import Params, restore_text, send_mail
|
||||
from galaxy.util.multi_byte import is_multi_byte
|
||||
from galaxy.util import ready_name_for_url, unique_id
|
||||
from galaxy.util.bunch import Bunch
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.util.multi_byte import is_multi_byte
|
||||
from galaxy.util.hash_util import new_secure_hash
|
||||
from galaxy.util.bunch import Bunch
|
||||
from galaxy.util.directory_hash import directory_hash_id
|
||||
from galaxy.util.sanitize_html import sanitize_html
|
||||
from galaxy.web.framework.helpers import to_unicode
|
||||
@@ -100,8 +102,7 @@ class HasName:
|
||||
object. If string, convert to unicode object assuming 'utf-8' format.
|
||||
"""
|
||||
name = self.name
|
||||
if isinstance(name, str):
|
||||
name = unicode(name, 'utf-8')
|
||||
name = unicodify( name, 'utf-8' )
|
||||
return name
|
||||
|
||||
|
||||
@@ -112,18 +113,13 @@ class JobLike:
|
||||
self.numeric_metrics = []
|
||||
|
||||
def add_metric( self, plugin, metric_name, metric_value ):
|
||||
if isinstance( plugin, str ):
|
||||
plugin = unicode( plugin, 'utf-8' )
|
||||
|
||||
if isinstance( metric_name, str ):
|
||||
metric_name = unicode( metric_name, 'utf-8' )
|
||||
|
||||
plugin = unicodify( plugin, 'utf-8' )
|
||||
metric_name = unicodify( metric_name, 'utf-8' )
|
||||
if isinstance( metric_value, numbers.Number ):
|
||||
metric = self._numeric_metric( plugin, metric_name, metric_value )
|
||||
self.numeric_metrics.append( metric )
|
||||
else:
|
||||
if isinstance( metric_value, str ):
|
||||
metric_value = unicode( metric_value, 'utf-8' )
|
||||
metric_value = unicodify( metric_value, 'utf-8' )
|
||||
if len( metric_value ) > 1022:
|
||||
# Truncate these values - not needed with sqlite
|
||||
# but other backends must need it.
|
||||
@@ -2178,7 +2174,7 @@ class DatasetInstance( object ):
|
||||
data_source = source_list
|
||||
else:
|
||||
# Convert.
|
||||
if isinstance( source_list, str ):
|
||||
if isinstance( source_list, string_types ):
|
||||
source_list = [ source_list ]
|
||||
|
||||
# Loop through sources until viable one is found.
|
||||
@@ -2413,7 +2409,7 @@ class HistoryDatasetAssociation( DatasetInstance, Dictifiable, UsesAnnotations,
|
||||
update_time=hda.update_time.isoformat(),
|
||||
data_type=hda.datatype.__class__.__module__ + '.' + hda.datatype.__class__.__name__,
|
||||
genome_build=hda.dbkey,
|
||||
misc_info=hda.info.strip() if isinstance( hda.info, basestring ) else hda.info,
|
||||
misc_info=hda.info.strip() if isinstance( hda.info, string_types ) else hda.info,
|
||||
misc_blurb=hda.blurb )
|
||||
|
||||
# add tags string list
|
||||
|
||||
@@ -14,6 +14,7 @@ import weakref
|
||||
|
||||
from os.path import abspath
|
||||
|
||||
from six import string_types
|
||||
from sqlalchemy.orm import object_session
|
||||
|
||||
import galaxy.model
|
||||
@@ -151,7 +152,7 @@ class MetadataCollection( object ):
|
||||
JSONified_dict = json.load( open( filename ) )
|
||||
elif json_dict is not None:
|
||||
log.debug( 'loading metadata from dict for: %s %s' % ( dataset.__class__.__name__, dataset.id ) )
|
||||
if isinstance( json_dict, basestring ):
|
||||
if isinstance( json_dict, string_types ):
|
||||
JSONified_dict = json.loads( json_dict )
|
||||
elif isinstance( json_dict, dict ):
|
||||
JSONified_dict = json_dict
|
||||
|
||||
@@ -18,6 +18,7 @@ from cgi import FieldStorage
|
||||
from xml.etree import ElementTree
|
||||
from mako.template import Template
|
||||
from paste import httpexceptions
|
||||
from six import string_types
|
||||
|
||||
from galaxy import model
|
||||
from galaxy.managers import histories
|
||||
@@ -43,10 +44,12 @@ from galaxy.tools.toolbox import BaseGalaxyToolBox
|
||||
from galaxy.util import rst_to_html, string_as_bool
|
||||
from galaxy.util import ExecutionTimer
|
||||
from galaxy.util import listify
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.tools.parameters.meta import expand_meta_parameters
|
||||
from galaxy.util.bunch import Bunch
|
||||
from galaxy.util.expressions import ExpressionContext
|
||||
from galaxy.util.hash_util import hmac_new
|
||||
from galaxy.util.json import json_fix
|
||||
from galaxy.util.odict import odict
|
||||
from galaxy.util.template import fill_template
|
||||
from galaxy.web import url_for
|
||||
@@ -1191,7 +1194,7 @@ class Tool( object, Dictifiable ):
|
||||
if isinstance( out_data, odict ):
|
||||
return job, out_data.items()
|
||||
else:
|
||||
if isinstance( out_data, str ):
|
||||
if isinstance( out_data, string_types ):
|
||||
message = out_data
|
||||
else:
|
||||
message = 'Failure executing tool (invalid data returned from tool execution)'
|
||||
@@ -1742,7 +1745,7 @@ class Tool( object, Dictifiable ):
|
||||
return 'true'
|
||||
else:
|
||||
return 'false'
|
||||
elif isinstance(v, basestring) or isnumber:
|
||||
elif isinstance(v, string_types) or isnumber:
|
||||
return v
|
||||
elif isinstance(v, dict) and hasattr(v, '__class__'):
|
||||
return v
|
||||
@@ -1850,8 +1853,7 @@ class Tool( object, Dictifiable ):
|
||||
tool_help = ''
|
||||
if self.help:
|
||||
tool_help = self.help.render( static_path=url_for( '/static' ), host_url=url_for( '/', qualified=True ) )
|
||||
if type( tool_help ) is not unicode:
|
||||
tool_help = unicode( tool_help, 'utf-8' )
|
||||
tool_help = unicodify( tool_help, 'utf-8' )
|
||||
|
||||
# create tool versions
|
||||
tool_versions = []
|
||||
@@ -2362,16 +2364,5 @@ class BadValue( object ):
|
||||
self.value = value
|
||||
|
||||
|
||||
def json_fix( val ):
|
||||
if isinstance( val, list ):
|
||||
return [ json_fix( v ) for v in val ]
|
||||
elif isinstance( val, dict ):
|
||||
return dict( [ ( json_fix( k ), json_fix( v ) ) for ( k, v ) in val.iteritems() ] )
|
||||
elif isinstance( val, unicode ):
|
||||
return val.encode( "utf8" )
|
||||
else:
|
||||
return val
|
||||
|
||||
|
||||
class InterruptedUpload( Exception ):
|
||||
pass
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import json
|
||||
import re
|
||||
from six import string_types
|
||||
|
||||
from galaxy.exceptions import ObjectInvalid
|
||||
from galaxy.model import LibraryDatasetDatasetAssociation
|
||||
@@ -316,7 +317,7 @@ class DefaultToolAction( object ):
|
||||
# or an actual object to copy.
|
||||
metadata_source = output.metadata_source
|
||||
if metadata_source:
|
||||
if isinstance( metadata_source, basestring ):
|
||||
if isinstance( metadata_source, string_types ):
|
||||
metadata_source = inp_data[metadata_source]
|
||||
|
||||
if metadata_source is not None:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import errno
|
||||
import json
|
||||
import os
|
||||
from six import string_types
|
||||
|
||||
from galaxy import util
|
||||
from galaxy.util.odict import odict
|
||||
@@ -369,7 +370,7 @@ class DataManager( object ):
|
||||
value = kwd.get( column_name )
|
||||
if data_table_name in self.value_translation_by_data_table_column and column_name in self.value_translation_by_data_table_column[ data_table_name ]:
|
||||
for value_translation in self.value_translation_by_data_table_column[ data_table_name ][ column_name ]:
|
||||
if isinstance( value_translation, basestring ):
|
||||
if isinstance( value_translation, string_types ):
|
||||
value = fill_template( value_translation, GALAXY_DATA_MANAGER_DATA_PATH=self.data_managers.app.config.galaxy_data_manager_data_path, **kwd )
|
||||
else:
|
||||
value = value_translation( value )
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import json
|
||||
import os
|
||||
import tempfile
|
||||
from six import string_types
|
||||
|
||||
from galaxy import model
|
||||
from galaxy.util.object_wrapper import wrap_with_safe_string
|
||||
@@ -542,7 +543,7 @@ class ToolEvaluator( object ):
|
||||
return None
|
||||
|
||||
def __build_config_file_text( self, content ):
|
||||
if isinstance( content, basestring ):
|
||||
if isinstance( content, string_types ):
|
||||
return content, True
|
||||
|
||||
content_format = content["format"]
|
||||
|
||||
@@ -6,7 +6,9 @@ import logging
|
||||
import re
|
||||
import os
|
||||
import os.path
|
||||
from six import string_types
|
||||
from xml.etree.ElementTree import XML
|
||||
|
||||
from galaxy import util
|
||||
from galaxy.web import form_builder
|
||||
from galaxy.util import string_as_bool, sanitize_param, unicodify
|
||||
@@ -30,7 +32,7 @@ WORKFLOW_PARAMETER_REGULAR_EXPRESSION = re.compile( '''\$\{.+?\}''' )
|
||||
|
||||
|
||||
def contains_workflow_parameter(value, search=False):
|
||||
if not isinstance( value, basestring ):
|
||||
if not isinstance( value, string_types ):
|
||||
return False
|
||||
if search and WORKFLOW_PARAMETER_REGULAR_EXPRESSION.search(value):
|
||||
return True
|
||||
@@ -141,8 +143,6 @@ class ToolParameter( object, Dictifiable ):
|
||||
|
||||
def to_string( self, value, app ):
|
||||
"""Convert a value to a string representation suitable for persisting"""
|
||||
if not isinstance( value, basestring ):
|
||||
value = str( value )
|
||||
return unicodify( value )
|
||||
|
||||
def to_python( self, value, app ):
|
||||
@@ -158,9 +158,6 @@ class ToolParameter( object, Dictifiable ):
|
||||
return self.to_string( value, app )
|
||||
|
||||
def value_from_basic( self, value, app, ignore_errors=False ):
|
||||
# HACK: Some things don't deal with unicode well, psycopg problem?
|
||||
if type( value ) == unicode:
|
||||
value = str( value )
|
||||
# Handle Runtime values (valid for any parameter?)
|
||||
if isinstance( value, dict ) and '__class__' in value and value['__class__'] == "RuntimeValue":
|
||||
return RuntimeValue()
|
||||
@@ -184,7 +181,7 @@ class ToolParameter( object, Dictifiable ):
|
||||
"""Called via __str__ when used in the Cheetah template"""
|
||||
if value is None:
|
||||
value = ""
|
||||
elif not isinstance( value, basestring ):
|
||||
elif not isinstance( value, string_types ):
|
||||
value = str( value )
|
||||
if self.tool is None or self.tool.options.sanitize:
|
||||
if self.sanitizer:
|
||||
@@ -555,7 +552,7 @@ class FileToolParameter( ToolParameter ):
|
||||
def to_string( self, value, app ):
|
||||
if value in [ None, '' ]:
|
||||
return None
|
||||
elif isinstance( value, unicode ) or isinstance( value, str ):
|
||||
elif isinstance( value, string_types ):
|
||||
return value
|
||||
elif isinstance( value, dict ):
|
||||
# or should we jsonify?
|
||||
@@ -568,7 +565,7 @@ class FileToolParameter( ToolParameter ):
|
||||
def to_python( self, value, app ):
|
||||
if value is None:
|
||||
return None
|
||||
elif isinstance( value, unicode ) or isinstance( value, str ):
|
||||
elif isinstance( value, string_types ):
|
||||
return value
|
||||
else:
|
||||
raise Exception( "FileToolParameter cannot be persisted" )
|
||||
@@ -907,7 +904,7 @@ class SelectToolParameter( ToolParameter ):
|
||||
if value == '':
|
||||
value = None
|
||||
else:
|
||||
if isinstance( value, basestring ):
|
||||
if isinstance( value, string_types ):
|
||||
# Split on all whitespace. This not only provides flexibility
|
||||
# in interpreting values but also is needed because many browsers
|
||||
# use \r\n to separate lines.
|
||||
@@ -1172,7 +1169,7 @@ class ColumnListParameter( SelectToolParameter ):
|
||||
"""
|
||||
if self.multiple:
|
||||
# split on newline and ,
|
||||
if isinstance( value, list ) or isinstance( value, basestring ):
|
||||
if isinstance( value, list ) or isinstance( value, string_types ):
|
||||
column_list = []
|
||||
if not isinstance( value, list ):
|
||||
value = value.split( '\n' )
|
||||
@@ -1196,7 +1193,7 @@ class ColumnListParameter( SelectToolParameter ):
|
||||
|
||||
@staticmethod
|
||||
def _strip_c(column):
|
||||
if isinstance(column, basestring):
|
||||
if isinstance(column, string_types):
|
||||
if column.startswith( 'c' ):
|
||||
column = column.strip().lower()[1:]
|
||||
return column
|
||||
@@ -1837,7 +1834,7 @@ class DataToolParameter( BaseDataToolParameter ):
|
||||
raise ValueError( "History does not include a dataset of the required format / build" )
|
||||
if value in [ None, "None", '' ]:
|
||||
return None
|
||||
if isinstance( value, str ) and value.find( "," ) > 0:
|
||||
if isinstance( value, string_types ) and value.find( "," ) > 0:
|
||||
value = [ int( value_part ) for value_part in value.split( "," ) ]
|
||||
if isinstance( value, list ):
|
||||
rval = []
|
||||
@@ -1900,7 +1897,7 @@ class DataToolParameter( BaseDataToolParameter ):
|
||||
return rval
|
||||
|
||||
def to_string( self, value, app ):
|
||||
if value is None or isinstance( value, basestring ):
|
||||
if value is None or isinstance( value, string_types ):
|
||||
return value
|
||||
elif isinstance( value, int ):
|
||||
return str( value )
|
||||
@@ -1934,7 +1931,7 @@ class DataToolParameter( BaseDataToolParameter ):
|
||||
else:
|
||||
return app.model.context.query( app.model.HistoryDatasetAssociation ).get( int( value ) )
|
||||
|
||||
if isinstance(value, str) and value.find(",") > -1:
|
||||
if isinstance(value, string_types) and value.find(",") > -1:
|
||||
values = value.split(",")
|
||||
return [v for v in map( single_to_python, values ) if v not in none_values]
|
||||
else:
|
||||
@@ -2150,7 +2147,7 @@ class DataCollectionToolParameter( BaseDataToolParameter ):
|
||||
raise ValueError( "History does not include a dataset collection of the correct type or containing the correct types of datasets" )
|
||||
if value in [None, "None"]:
|
||||
return None
|
||||
if isinstance( value, str ) and value.find( "," ) > 0:
|
||||
if isinstance( value, string_types ) and value.find( "," ) > 0:
|
||||
value = [ int( value_part ) for value_part in value.split( "," ) ]
|
||||
elif isinstance( value, trans.app.model.HistoryDatasetCollectionAssociation ):
|
||||
rval = value
|
||||
@@ -2168,7 +2165,7 @@ class DataCollectionToolParameter( BaseDataToolParameter ):
|
||||
if isinstance( value, dict ) and 'src' in value and 'id' in value:
|
||||
if value['src'] == 'hdca':
|
||||
rval = trans.sa_session.query( trans.app.model.HistoryDatasetCollectionAssociation ).get( trans.security.decode_id(value['id']) )
|
||||
elif isinstance( value, basestring ):
|
||||
elif isinstance( value, string_types ):
|
||||
if value.startswith( "dce:" ):
|
||||
rval = trans.sa_session.query( trans.app.model.DatasetCollectionElement ).get( value[ len( "dce:"): ] )
|
||||
elif value.startswith( "hdca:" ):
|
||||
@@ -2182,7 +2179,7 @@ class DataCollectionToolParameter( BaseDataToolParameter ):
|
||||
return rval
|
||||
|
||||
def to_string( self, value, app ):
|
||||
if value is None or isinstance( value, basestring ):
|
||||
if value is None or isinstance( value, string_types ):
|
||||
return value
|
||||
elif isinstance( value, RuntimeValue ):
|
||||
return None
|
||||
@@ -2201,7 +2198,7 @@ class DataCollectionToolParameter( BaseDataToolParameter ):
|
||||
if value is None or value == '' or value == 'None':
|
||||
return value
|
||||
|
||||
if not isinstance( value, basestring ):
|
||||
if not isinstance( value, string_types ):
|
||||
raise ValueError( "Can not convert data collection parameter value to python object - %s" % value )
|
||||
|
||||
if value.startswith( "dce:" ):
|
||||
@@ -2358,7 +2355,7 @@ class LibraryDatasetToolParameter( ToolParameter ):
|
||||
encoded_id = None
|
||||
if isinstance(item, dict):
|
||||
encoded_id = item.get('id')
|
||||
elif isinstance(item, basestring):
|
||||
elif isinstance(item, string_types):
|
||||
encoded_id = item
|
||||
else:
|
||||
lst = []
|
||||
|
||||
@@ -8,6 +8,8 @@ log = logging.getLogger( __name__ )
|
||||
import os
|
||||
import StringIO
|
||||
import unicodedata
|
||||
from six import text_type
|
||||
|
||||
from basic import ToolParameter
|
||||
from galaxy.datatypes import sniff
|
||||
from galaxy.util import inflector
|
||||
@@ -32,7 +34,7 @@ class Group( object, Dictifiable ):
|
||||
def value_to_basic( self, value, app ):
|
||||
"""
|
||||
Convert value to a (possibly nested) representation using only basic
|
||||
types (dict, list, tuple, str, unicode, int, long, float, bool, None)
|
||||
types (dict, list, tuple, string_types, int, long, float, bool, None)
|
||||
"""
|
||||
return value
|
||||
|
||||
@@ -431,7 +433,7 @@ class UploadDataset( Group ):
|
||||
if ftp_files is not None:
|
||||
# Normalize input paths to ensure utf-8 encoding is normal form c.
|
||||
# This allows for comparison when the filesystem uses a different encoding than the browser.
|
||||
ftp_files = [unicodedata.normalize('NFC', f) for f in ftp_files if isinstance(f, unicode)]
|
||||
ftp_files = [unicodedata.normalize('NFC', f) for f in ftp_files if isinstance(f, text_type)]
|
||||
if trans.user is None:
|
||||
log.warning( 'Anonymous user passed values in ftp_files: %s' % ftp_files )
|
||||
ftp_files = []
|
||||
@@ -443,7 +445,7 @@ class UploadDataset( Group ):
|
||||
path = relpath( os.path.join( dirpath, filename ), user_ftp_dir )
|
||||
if not os.path.islink( os.path.join( dirpath, filename ) ):
|
||||
# Normalize filesystem paths
|
||||
if isinstance(path, unicode):
|
||||
if isinstance(path, text_type):
|
||||
valid_files.append(unicodedata.normalize('NFC', path ))
|
||||
else:
|
||||
valid_files.append(path)
|
||||
|
||||
@@ -4,6 +4,8 @@ Tool Parameter specific sanitizing.
|
||||
|
||||
import logging
|
||||
import string
|
||||
from six import string_types
|
||||
|
||||
import galaxy.util
|
||||
|
||||
log = logging.getLogger( __name__ )
|
||||
@@ -134,7 +136,7 @@ class ToolParameterSanitizer( object ):
|
||||
|
||||
def restore_param( self, value ):
|
||||
if self.sanitize:
|
||||
if isinstance( value, basestring ):
|
||||
if isinstance( value, string_types ):
|
||||
return self.restore_text( value )
|
||||
elif isinstance( value, list ):
|
||||
return map( self.restore_text, value )
|
||||
@@ -160,7 +162,7 @@ class ToolParameterSanitizer( object ):
|
||||
"""Clean incoming parameters (strings or lists)"""
|
||||
if not self.sanitize:
|
||||
return value
|
||||
if isinstance( value, basestring ):
|
||||
if isinstance( value, string_types ):
|
||||
return self.sanitize_text( value )
|
||||
elif isinstance( value, list ):
|
||||
return map( self.sanitize_text, value )
|
||||
|
||||
@@ -4,6 +4,8 @@ Classes related to parameter validation.
|
||||
|
||||
import logging
|
||||
import re
|
||||
from six import string_types
|
||||
|
||||
from galaxy import model
|
||||
from galaxy import util
|
||||
|
||||
@@ -383,7 +385,7 @@ class MetadataInDataTableColumnValidator( Validator ):
|
||||
self.valid_values = []
|
||||
self._data_table_content_version = None
|
||||
self._tool_data_table = tool_data_table
|
||||
if isinstance( metadata_column, basestring ):
|
||||
if isinstance( metadata_column, string_types ):
|
||||
metadata_column = tool_data_table.columns[ metadata_column ]
|
||||
self._metadata_column = metadata_column
|
||||
self._load_values()
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import logging
|
||||
import os
|
||||
import os.path
|
||||
from six import string_types
|
||||
|
||||
import galaxy.tools.parameters.basic
|
||||
import galaxy.tools.parameters.grouping
|
||||
from galaxy.util import string_as_bool
|
||||
@@ -117,7 +119,7 @@ class ToolTestBuilder( object ):
|
||||
log.info( msg )
|
||||
|
||||
def __split_if_str( self, value ):
|
||||
split = isinstance(value, str)
|
||||
split = isinstance(value, string_types)
|
||||
if split:
|
||||
value = value.split(",")
|
||||
return value
|
||||
|
||||
+28
-20
@@ -22,21 +22,23 @@ import sys
|
||||
import time
|
||||
import tempfile
|
||||
import threading
|
||||
from six.moves.urllib import parse as urlparse
|
||||
from six import iteritems
|
||||
|
||||
from galaxy.util import json
|
||||
from datetime import datetime
|
||||
|
||||
from six import PY3
|
||||
from six import string_types, text_type
|
||||
from six.moves import xrange
|
||||
from six.moves import email_mime_text
|
||||
from six.moves import zip
|
||||
|
||||
from os.path import relpath
|
||||
from hashlib import md5
|
||||
|
||||
from six import binary_type
|
||||
from six import iteritems
|
||||
from six import PY3
|
||||
from six import string_types, text_type
|
||||
from six.moves import email_mime_text
|
||||
from six.moves.urllib import parse as urlparse
|
||||
from six.moves import xrange
|
||||
from six.moves import zip
|
||||
from xml.etree import ElementTree, ElementInclude
|
||||
|
||||
from galaxy.util import json
|
||||
from datetime import datetime
|
||||
|
||||
try:
|
||||
import docutils.core as docutils_core
|
||||
import docutils.writers.html4css1 as docutils_html4css1
|
||||
@@ -44,8 +46,6 @@ except ImportError:
|
||||
docutils_core = None
|
||||
docutils_html4css1 = None
|
||||
|
||||
from xml.etree import ElementTree, ElementInclude
|
||||
|
||||
from .inflection import Inflector, English
|
||||
inflector = Inflector(English)
|
||||
|
||||
@@ -848,17 +848,25 @@ def roundify(amount, sfs=2):
|
||||
return amount[0:sfs] + '0' * (len(amount) - sfs)
|
||||
|
||||
|
||||
def unicodify( value, encoding=DEFAULT_ENCODING, error='replace', default=None ):
|
||||
def unicodify(value, encoding=DEFAULT_ENCODING, error='replace', default=None):
|
||||
"""
|
||||
Returns a unicode string or None
|
||||
Returns a unicode string or None.
|
||||
"""
|
||||
|
||||
if isinstance( value, text_type ):
|
||||
return value
|
||||
if value is None:
|
||||
return None
|
||||
try:
|
||||
return text_type( str( value ), encoding, error )
|
||||
except:
|
||||
if not isinstance(value, string_types) and not isinstance(value, binary_type):
|
||||
# In Python 2, value is not an instance of basestring
|
||||
# In Python 3, value is not an instance of bytes or str
|
||||
value = str(value)
|
||||
# Now in Python 2, value is an instance of basestring, but may be not unicode
|
||||
# Now in Python 3, value is an instance of bytes or str
|
||||
if not isinstance(value, text_type):
|
||||
value = text_type(value, encoding, error)
|
||||
except Exception:
|
||||
log.exception("value %s could not be coerced to unicode" % value)
|
||||
return default
|
||||
return value
|
||||
|
||||
|
||||
def smart_str(s, encoding='utf-8', strings_only=False, errors='strict'):
|
||||
|
||||
@@ -5,8 +5,8 @@ HTML Sanitizer (ripped from feedparser)
|
||||
import re
|
||||
import sgmllib
|
||||
|
||||
from galaxy.util import unicodify
|
||||
from six import unichr
|
||||
from six import text_type as unicode
|
||||
|
||||
|
||||
# reversable htmlentitydefs mappings for Python 2.2
|
||||
@@ -22,6 +22,7 @@ except:
|
||||
name2codepoint[name] = ord(codepoint)
|
||||
codepoint2name[ord(codepoint)] = name
|
||||
|
||||
|
||||
_cp1252 = {
|
||||
unichr(128): unichr(8364), # euro sign
|
||||
unichr(130): unichr(8218), # single low-9 quotation mark
|
||||
@@ -87,8 +88,6 @@ class _BaseHTMLProcessor(sgmllib.SGMLParser):
|
||||
data = re.sub(r'<([^<>\s]+?)\s*/>', self._shorttag_replace, data)
|
||||
data = data.replace(''', "'")
|
||||
data = data.replace('"', '"')
|
||||
if self.encoding and isinstance(data, unicode):
|
||||
data = data.encode(self.encoding)
|
||||
sgmllib.SGMLParser.feed(self, data)
|
||||
sgmllib.SGMLParser.close(self)
|
||||
|
||||
@@ -111,23 +110,12 @@ class _BaseHTMLProcessor(sgmllib.SGMLParser):
|
||||
for key, value in attrs:
|
||||
value = value.replace('>', '>').replace('<', '<').replace('"', '"')
|
||||
value = self.bare_ampersand.sub("&", value)
|
||||
# thanks to Kevin Marks for this breathtaking hack to deal with (valid) high-bit attribute values in UTF-8 feeds
|
||||
if isinstance(value, unicode):
|
||||
try:
|
||||
value = unicode(value, self.encoding)
|
||||
except:
|
||||
value = unicode(value, 'iso-8859-1')
|
||||
uattrs.append((unicode(key, self.encoding), value))
|
||||
strattrs = u''.join([u' %s="%s"' % (key, val) for key, val in uattrs])
|
||||
if self.encoding:
|
||||
try:
|
||||
strattrs = strattrs.encode(self.encoding)
|
||||
except:
|
||||
pass
|
||||
uattrs.append((key, value))
|
||||
strattrs = ''.join([' %s="%s"' % (k, v) for k, v in uattrs])
|
||||
if tag in self.elements_no_end_tag:
|
||||
self.pieces.append('<%(tag)s%(strattrs)s />' % locals())
|
||||
self.pieces.append('<%s%s />' % (tag, strattrs))
|
||||
else:
|
||||
self.pieces.append('<%(tag)s%(strattrs)s>' % locals())
|
||||
self.pieces.append('<%s%s>' % (tag, strattrs))
|
||||
|
||||
def unknown_endtag(self, tag):
|
||||
# called for each end tag, e.g. for </pre>, tag will be 'pre'
|
||||
@@ -446,7 +434,7 @@ class _HTMLSanitizer(_BaseHTMLProcessor):
|
||||
|
||||
def sanitize_html(htmlSource, encoding="utf-8", type="text/html"):
|
||||
p = _HTMLSanitizer(encoding, type)
|
||||
p.feed(htmlSource)
|
||||
p.feed(unicodify(htmlSource, encoding))
|
||||
data = p.output()
|
||||
data = data.strip().replace('\r\n', '\n')
|
||||
return data
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from six import string_types
|
||||
|
||||
from galaxy.visualization.data_providers.basic import ColumnDataProvider
|
||||
from galaxy.visualization.data_providers import genome
|
||||
from galaxy.model import NoConverterException
|
||||
@@ -97,7 +99,7 @@ class DataProviderRegistry( object ):
|
||||
original_dataset=original_dataset )
|
||||
else:
|
||||
source_list = data_provider_mapping[ source ]
|
||||
if isinstance( source_list, str ):
|
||||
if isinstance( source_list, string_types ):
|
||||
source_list = [ source_list ]
|
||||
|
||||
# Find a valid data provider in the source list.
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
from six import string_types
|
||||
|
||||
import galaxy.model
|
||||
from galaxy import util
|
||||
|
||||
@@ -290,7 +292,7 @@ class DataSourceParser( object ):
|
||||
# TODO: too dangerous - constrain these to some allowed list
|
||||
# TODO: does this err if no test_attr - it should...
|
||||
test_attr = test_elem.get( 'test_attr' )
|
||||
test_attr = test_attr.split( self.ATTRIBUTE_SPLIT_CHAR ) if isinstance( test_attr, str ) else []
|
||||
test_attr = test_attr.split( self.ATTRIBUTE_SPLIT_CHAR ) if isinstance( test_attr, string_types ) else []
|
||||
# log.debug( 'test_type: %s, test_attr: %s, test_result: %s', test_type, test_attr, test_result )
|
||||
|
||||
# build a lambda function that gets the desired attribute to test
|
||||
|
||||
@@ -5,6 +5,7 @@ import logging
|
||||
import operator
|
||||
import re
|
||||
|
||||
from six import string_types, text_type
|
||||
from sqlalchemy import true
|
||||
|
||||
from paste.httpexceptions import HTTPBadRequest, HTTPInternalServerError
|
||||
@@ -221,7 +222,7 @@ class BaseAPIController( BaseController ):
|
||||
def _parse_serialization_params( self, kwd, default_view ):
|
||||
view = kwd.get( 'view', None )
|
||||
keys = kwd.get( 'keys' )
|
||||
if isinstance( keys, basestring ):
|
||||
if isinstance( keys, string_types ):
|
||||
keys = keys.split( ',' )
|
||||
return dict( view=view, keys=keys, default_view=default_view )
|
||||
|
||||
@@ -373,11 +374,11 @@ class ExportsHistoryMixin:
|
||||
|
||||
def queue_history_export( self, trans, history, gzip=True, include_hidden=False, include_deleted=False ):
|
||||
# Convert options to booleans.
|
||||
if isinstance( gzip, basestring ):
|
||||
if isinstance( gzip, string_types ):
|
||||
gzip = ( gzip in [ 'True', 'true', 'T', 't' ] )
|
||||
if isinstance( include_hidden, basestring ):
|
||||
if isinstance( include_hidden, string_types ):
|
||||
include_hidden = ( include_hidden in [ 'True', 'true', 'T', 't' ] )
|
||||
if isinstance( include_deleted, basestring ):
|
||||
if isinstance( include_deleted, string_types ):
|
||||
include_deleted = ( include_deleted in [ 'True', 'true', 'T', 't' ] )
|
||||
|
||||
# Run job to do export.
|
||||
@@ -1563,7 +1564,7 @@ class UsesFormDefinitionsMixin:
|
||||
else:
|
||||
# Form was submitted via refresh_on_change
|
||||
widget.value = 'new'
|
||||
elif value == unicode( 'none' ):
|
||||
elif value == text_type( 'none' ):
|
||||
widget.value = ''
|
||||
else:
|
||||
widget.value = value
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import logging
|
||||
import os
|
||||
from datetime import datetime, timedelta
|
||||
from six import string_types
|
||||
from string import punctuation as PUNCTUATION
|
||||
|
||||
from sqlalchemy import and_, false, func, or_
|
||||
@@ -1129,7 +1130,7 @@ class Admin( object ):
|
||||
# write the configured sanitize_whitelist_file with new whitelist
|
||||
# and update in-memory list.
|
||||
with open(trans.app.config.sanitize_whitelist_file, 'wt') as f:
|
||||
if isinstance(tools_to_whitelist, basestring):
|
||||
if isinstance(tools_to_whitelist, string_types):
|
||||
tools_to_whitelist = [tools_to_whitelist]
|
||||
new_whitelist = sorted([tid for tid in tools_to_whitelist if tid in trans.app.toolbox.tools_by_id])
|
||||
f.write("\n".join(new_whitelist))
|
||||
|
||||
@@ -5,6 +5,7 @@ import os
|
||||
import time
|
||||
import logging
|
||||
|
||||
from six import string_types
|
||||
from operator import itemgetter
|
||||
from cgi import escape
|
||||
from galaxy.util import restore_text, relpath, nice_size, unicodify
|
||||
@@ -42,8 +43,6 @@ class TextField(BaseField):
|
||||
|
||||
def get_html( self, prefix="", disabled=False ):
|
||||
value = self.value
|
||||
if not isinstance( value, basestring ):
|
||||
value = str( value )
|
||||
value = unicodify( value )
|
||||
return unicodify( '<input type="text" name="%s%s" size="%d" value="%s"%s>'
|
||||
% ( prefix, self.name, self.size, escape( value, quote=True ), self.get_disabled_str( disabled ) ) )
|
||||
@@ -114,7 +113,7 @@ class CheckboxField(BaseField):
|
||||
|
||||
def __init__( self, name, checked=None, refresh_on_change=False, refresh_on_change_values=None ):
|
||||
self.name = name
|
||||
self.checked = ( checked is True ) or ( isinstance( checked, basestring ) and ( checked.lower() in ( "yes", "true", "on" ) ) )
|
||||
self.checked = ( checked is True ) or ( isinstance( checked, string_types ) and ( checked.lower() in ( "yes", "true", "on" ) ) )
|
||||
self.refresh_on_change = refresh_on_change
|
||||
self.refresh_on_change_values = refresh_on_change_values or []
|
||||
if self.refresh_on_change:
|
||||
@@ -140,7 +139,7 @@ class CheckboxField(BaseField):
|
||||
return isinstance( value, list ) and ( '__CHECKED__' in value or len( value ) == 2 )
|
||||
|
||||
def set_checked(self, value):
|
||||
if isinstance( value, basestring ):
|
||||
if isinstance( value, string_types ):
|
||||
self.checked = value.lower() in [ "yes", "true", "on" ]
|
||||
else:
|
||||
self.checked = value
|
||||
@@ -328,10 +327,6 @@ class SelectField(BaseField):
|
||||
rval.append( '<div class="checkUncheckAllPlaceholder" checkbox_name="%s%s"></div>' % ( prefix, self.name ) ) # placeholder for the insertion of the Select All/Unselect All buttons
|
||||
for text, value, selected in self.options:
|
||||
style = ""
|
||||
if not isinstance( value, basestring ):
|
||||
value = str( value )
|
||||
if not isinstance( text, basestring ):
|
||||
text = str( text )
|
||||
text = unicodify( text )
|
||||
escaped_value = escape( unicodify( value ), quote=True )
|
||||
uniq_id = "%s%s|%s" % (prefix, self.name, escaped_value)
|
||||
@@ -386,14 +381,10 @@ class SelectField(BaseField):
|
||||
if selected:
|
||||
selected_text = " selected"
|
||||
last_selected_value = value
|
||||
if not isinstance( last_selected_value, basestring ):
|
||||
if not isinstance( last_selected_value, string_types ):
|
||||
last_selected_value = str( last_selected_value )
|
||||
else:
|
||||
selected_text = ""
|
||||
if not isinstance( value, basestring ):
|
||||
value = str( value )
|
||||
if not isinstance( text, basestring ):
|
||||
text = str( text )
|
||||
rval.append( '<option value="%s"%s>%s</option>' % ( escape( unicodify( value ), quote=True ), selected_text, escape( unicodify( text ), quote=True ) ) )
|
||||
if last_selected_value:
|
||||
last_selected_value = ' last_selected_value="%s"' % escape( unicodify( last_selected_value ), quote=True )
|
||||
|
||||
@@ -12,6 +12,7 @@ import types
|
||||
import routes
|
||||
import webob
|
||||
|
||||
from six import string_types
|
||||
from Cookie import SimpleCookie
|
||||
|
||||
# We will use some very basic HTTP/wsgi utilities from the paste library
|
||||
@@ -209,7 +210,7 @@ class WebApplication( object ):
|
||||
if isinstance( body, ( types.GeneratorType, list, tuple ) ):
|
||||
# Recursively stream the iterable
|
||||
return flatten( body )
|
||||
elif isinstance( body, basestring ):
|
||||
elif isinstance( body, string_types ):
|
||||
# Wrap the string so it can be iterated
|
||||
return [ body ]
|
||||
elif body is None:
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import inspect
|
||||
from traceback import format_exc
|
||||
from functools import wraps
|
||||
from six import string_types
|
||||
|
||||
import paste.httpexceptions
|
||||
|
||||
@@ -163,7 +164,7 @@ def __extract_payload_from_request(trans, func, kwargs):
|
||||
for arg in named_args:
|
||||
payload.pop(arg, None)
|
||||
for k, v in payload.iteritems():
|
||||
if isinstance(v, (str, unicode)):
|
||||
if isinstance(v, string_types):
|
||||
try:
|
||||
payload[k] = loads(v)
|
||||
except:
|
||||
|
||||
@@ -4,7 +4,9 @@ Galaxy web framework helpers
|
||||
|
||||
import time
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
from galaxy.util import hash_util
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.util.json import safe_dumps as dumps # noqa (used by mako templates)
|
||||
from webhelpers import date
|
||||
from webhelpers.html.tags import stylesheet_link, javascript_link
|
||||
@@ -103,11 +105,7 @@ def to_unicode( a_string ):
|
||||
Convert a string to unicode in utf-8 format; if string is already unicode,
|
||||
does nothing because string's encoding cannot be determined by introspection.
|
||||
"""
|
||||
a_string_type = type( a_string )
|
||||
if a_string_type is str:
|
||||
return unicode( a_string, 'utf-8' )
|
||||
elif a_string_type is unicode:
|
||||
return a_string
|
||||
return unicodify( a_string, 'utf-8' )
|
||||
|
||||
|
||||
def is_true( val ):
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import logging
|
||||
import math
|
||||
|
||||
from markupsafe import escape
|
||||
from six import text_type
|
||||
from six import string_types
|
||||
from sqlalchemy.sql.expression import and_, func, or_, null, false, true
|
||||
|
||||
from galaxy.model.item_attrs import RuntimeException, UsesAnnotations, UsesItemRatings
|
||||
from galaxy.util import sanitize_text
|
||||
from galaxy.util.json import loads, dumps
|
||||
@@ -8,9 +13,6 @@ from galaxy.util.odict import odict
|
||||
from galaxy.web.framework import decorators
|
||||
from galaxy.web.framework import url_for
|
||||
from galaxy.web.framework.helpers import iff
|
||||
from markupsafe import escape
|
||||
|
||||
from sqlalchemy.sql.expression import and_, func, or_, null, false, true
|
||||
|
||||
|
||||
log = logging.getLogger( __name__ )
|
||||
@@ -73,11 +75,11 @@ class Grid( object ):
|
||||
base_filter = self.default_filter.copy()
|
||||
base_sort_key = self.default_sort_key
|
||||
if self.preserve_state:
|
||||
pref_name = unicode( self.__class__.__name__ + self.cur_filter_pref_name )
|
||||
pref_name = text_type( self.__class__.__name__ + self.cur_filter_pref_name )
|
||||
if pref_name in trans.get_user().preferences:
|
||||
saved_filter = loads( trans.get_user().preferences[pref_name] )
|
||||
base_filter.update( saved_filter )
|
||||
pref_name = unicode( self.__class__.__name__ + self.cur_sort_key_pref_name )
|
||||
pref_name = text_type( self.__class__.__name__ + self.cur_sort_key_pref_name )
|
||||
if pref_name in trans.get_user().preferences:
|
||||
base_sort_key = loads( trans.get_user().preferences[pref_name] )
|
||||
# Build initial query
|
||||
@@ -113,16 +115,16 @@ class Grid( object ):
|
||||
# Method (1) combines a mix of strings and lists of strings into a single string and (2) attempts to de-jsonify all strings.
|
||||
def loads_recurse(item):
|
||||
decoded_list = []
|
||||
if isinstance( item, basestring):
|
||||
if isinstance( item, string_types):
|
||||
try:
|
||||
# Not clear what we're decoding, so recurse to ensure that we catch everything.
|
||||
decoded_item = loads( item )
|
||||
if isinstance( decoded_item, list):
|
||||
decoded_list = loads_recurse( decoded_item )
|
||||
else:
|
||||
decoded_list = [ unicode( decoded_item ) ]
|
||||
decoded_list = [ text_type( decoded_item ) ]
|
||||
except ValueError:
|
||||
decoded_list = [ unicode( item ) ]
|
||||
decoded_list = [ text_type( item ) ]
|
||||
elif isinstance( item, list):
|
||||
for element in item:
|
||||
a_list = loads_recurse( element )
|
||||
@@ -136,7 +138,7 @@ class Grid( object ):
|
||||
if len( column_filter ) == 1:
|
||||
column_filter = column_filter[0]
|
||||
# Interpret ',' as a separator for multiple terms.
|
||||
if isinstance( column_filter, basestring ) and column_filter.find(',') != -1:
|
||||
if isinstance( column_filter, string_types ) and column_filter.find(',') != -1:
|
||||
column_filter = column_filter.split(',')
|
||||
|
||||
# Check if filter is empty
|
||||
@@ -145,7 +147,7 @@ class Grid( object ):
|
||||
column_filter = [x for x in column_filter if x != '']
|
||||
if len(column_filter) == 0:
|
||||
continue
|
||||
elif isinstance(column_filter, basestring):
|
||||
elif isinstance(column_filter, string_types):
|
||||
# If filter criterion is empty, do nothing.
|
||||
if column_filter == '':
|
||||
continue
|
||||
@@ -159,14 +161,12 @@ class Grid( object ):
|
||||
# that we can encode to UTF-8 and thus handle user input to filters.
|
||||
if isinstance( column_filter, list ):
|
||||
# Filter is a list; process each item.
|
||||
for filter in column_filter:
|
||||
if not isinstance( filter, basestring ):
|
||||
filter = unicode( filter ).encode("utf-8")
|
||||
column_filter = [ text_type(_).encode('utf-8') if not isinstance(_, string_types) else _ for _ in column_filter ]
|
||||
extra_url_args[ "f-" + column.key ] = dumps( column_filter )
|
||||
else:
|
||||
# Process singleton filter.
|
||||
if not isinstance( column_filter, basestring ):
|
||||
column_filter = unicode(column_filter)
|
||||
if not isinstance( column_filter, string_types ):
|
||||
column_filter = text_type(column_filter)
|
||||
extra_url_args[ "f-" + column.key ] = column_filter.encode("utf-8")
|
||||
# Process sort arguments.
|
||||
sort_key = None
|
||||
@@ -231,14 +231,14 @@ class Grid( object ):
|
||||
self.cur_filter_dict = cur_filter_dict
|
||||
# Preserve grid state: save current filter and sort key.
|
||||
if self.preserve_state:
|
||||
pref_name = unicode( self.__class__.__name__ + self.cur_filter_pref_name )
|
||||
trans.get_user().preferences[pref_name] = unicode( dumps( cur_filter_dict ) )
|
||||
pref_name = text_type( self.__class__.__name__ + self.cur_filter_pref_name )
|
||||
trans.get_user().preferences[pref_name] = text_type( dumps( cur_filter_dict ) )
|
||||
if sort_key:
|
||||
pref_name = unicode( self.__class__.__name__ + self.cur_sort_key_pref_name )
|
||||
trans.get_user().preferences[pref_name] = unicode( dumps( sort_key ) )
|
||||
pref_name = text_type( self.__class__.__name__ + self.cur_sort_key_pref_name )
|
||||
trans.get_user().preferences[pref_name] = text_type( dumps( sort_key ) )
|
||||
trans.sa_session.flush()
|
||||
# Log grid view.
|
||||
context = unicode( self.__class__.__name__ )
|
||||
context = text_type( self.__class__.__name__ )
|
||||
params = cur_filter_dict.copy()
|
||||
params['sort'] = sort_key
|
||||
params['async'] = ( 'async' in kwargs )
|
||||
@@ -248,7 +248,7 @@ class Grid( object ):
|
||||
# is effectively 'wiped' out. Nate believes it has something to do with our use of session( autocommit=True )
|
||||
# in mapping.py. If you change that to False, the log_action doesn't affect the query
|
||||
# Below, I'm rendering the template first (that uses query), then calling log_action, then returning the page
|
||||
# trans.log_action( trans.get_user(), unicode( "grid.view" ), context, params )
|
||||
# trans.log_action( trans.get_user(), text_type( "grid.view" ), context, params )
|
||||
|
||||
# Render grid.
|
||||
def url( *args, **kwargs ):
|
||||
@@ -310,7 +310,7 @@ class Grid( object ):
|
||||
# Pass back kwargs so that grid template can set and use args without
|
||||
# grid explicitly having to pass them.
|
||||
kwargs=kwargs )
|
||||
trans.log_action( trans.get_user(), unicode( "grid.view" ), context, params )
|
||||
trans.log_action( trans.get_user(), text_type( "grid.view" ), context, params )
|
||||
return page
|
||||
|
||||
def get_ids( self, **kwargs ):
|
||||
@@ -429,7 +429,7 @@ class TextColumn( GridColumn ):
|
||||
|
||||
def get_filter( self, trans, user, column_filter ):
|
||||
""" Returns a SQLAlchemy criterion derived from column_filter. """
|
||||
if isinstance( column_filter, basestring ):
|
||||
if isinstance( column_filter, string_types ):
|
||||
return self.get_single_filter( user, column_filter )
|
||||
elif isinstance( column_filter, list ):
|
||||
clause_list = []
|
||||
|
||||
@@ -7,6 +7,7 @@ Middleware for logging requests, using Apache combined log format
|
||||
import logging
|
||||
import time
|
||||
import urllib
|
||||
from six import string_types
|
||||
|
||||
|
||||
class TransLogger(object):
|
||||
@@ -104,9 +105,9 @@ def make_filter(
|
||||
setup_console_handler=True,
|
||||
set_logger_level=logging.DEBUG):
|
||||
from paste.util.converters import asbool
|
||||
if isinstance(logging_level, basestring):
|
||||
if isinstance(logging_level, string_types):
|
||||
logging_level = logging._levelNames[logging_level]
|
||||
if isinstance(set_logger_level, basestring):
|
||||
if isinstance(set_logger_level, string_types):
|
||||
set_logger_level = logging._levelNames[set_logger_level]
|
||||
return TransLogger(
|
||||
app,
|
||||
|
||||
@@ -16,6 +16,7 @@ import mako.runtime
|
||||
import mako.lookup
|
||||
from babel.support import Translations
|
||||
from babel import Locale
|
||||
from six import string_types
|
||||
from sqlalchemy import and_, true
|
||||
from sqlalchemy.orm.exc import NoResultFound
|
||||
from sqlalchemy.orm import joinedload
|
||||
@@ -277,7 +278,7 @@ class GalaxyWebTransaction( base.DefaultWebTransaction,
|
||||
|
||||
# singular match
|
||||
def matches_allowed_origin( origin, allowed_origin ):
|
||||
if isinstance( allowed_origin, str ):
|
||||
if isinstance( allowed_origin, string_types ):
|
||||
return origin == allowed_origin
|
||||
match = allowed_origin.match( origin )
|
||||
return match and match.group() == origin
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
"""
|
||||
API operations on the contents of a history dataset.
|
||||
"""
|
||||
from six import string_types
|
||||
|
||||
from galaxy import model
|
||||
from galaxy import exceptions as galaxy_exceptions
|
||||
from galaxy import web
|
||||
@@ -30,7 +32,7 @@ class DatasetsController( BaseAPIController, UsesVisualizationMixin ):
|
||||
def _parse_serialization_params( self, kwd, default_view ):
|
||||
view = kwd.get( 'view', None )
|
||||
keys = kwd.get( 'keys' )
|
||||
if isinstance( keys, basestring ):
|
||||
if isinstance( keys, string_types ):
|
||||
keys = keys.split( ',' )
|
||||
return dict( view=view, keys=keys, default_view=default_view )
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ API operations on a jobs.
|
||||
import json
|
||||
import logging
|
||||
|
||||
from six import string_types
|
||||
from sqlalchemy import and_, false, or_
|
||||
from sqlalchemy.orm import aliased
|
||||
|
||||
@@ -73,7 +74,7 @@ class JobController( BaseAPIController, UsesLibraryMixinItems ):
|
||||
|
||||
def build_and_apply_filters( query, objects, filter_func ):
|
||||
if objects is not None:
|
||||
if isinstance( objects, basestring ):
|
||||
if isinstance( objects, string_types ):
|
||||
query = query.filter( filter_func( objects ) )
|
||||
elif isinstance( objects, list ):
|
||||
t = []
|
||||
@@ -310,7 +311,7 @@ class JobController( BaseAPIController, UsesLibraryMixinItems ):
|
||||
)
|
||||
)
|
||||
else:
|
||||
if isinstance( payload[ 'state' ], basestring ):
|
||||
if isinstance( payload[ 'state' ], string_types ):
|
||||
query = query.filter( trans.app.model.Job.state == payload[ 'state' ] )
|
||||
elif isinstance( payload[ 'state' ], list ):
|
||||
o = []
|
||||
|
||||
@@ -8,6 +8,7 @@ import string
|
||||
import sys
|
||||
import tempfile
|
||||
import zipfile
|
||||
|
||||
from galaxy import exceptions
|
||||
from galaxy import util
|
||||
from galaxy import web
|
||||
|
||||
@@ -4,6 +4,7 @@ Visualizations resource control over the API.
|
||||
NOTE!: this is a work in progress and functionality and data structures
|
||||
may change often.
|
||||
"""
|
||||
from six import string_types
|
||||
|
||||
from galaxy.web.base.controller import BaseAPIController
|
||||
from galaxy.web.base.controller import UsesVisualizationMixin
|
||||
@@ -170,7 +171,7 @@ class VisualizationsController( BaseAPIController, UsesVisualizationMixin, Shara
|
||||
for key, val in payload.items():
|
||||
# TODO: validate types in VALID_TYPES/registry names at the mixin/model level?
|
||||
if key == 'type':
|
||||
if not ( isinstance( val, str ) or isinstance( val, unicode ) ):
|
||||
if not isinstance( val, string_types ):
|
||||
raise ValidationError( '%s must be a string or unicode: %s' % ( key, str( type( val ) ) ) )
|
||||
val = util.sanitize_html.sanitize_html( val, 'utf-8' )
|
||||
elif key == 'config':
|
||||
@@ -178,22 +179,22 @@ class VisualizationsController( BaseAPIController, UsesVisualizationMixin, Shara
|
||||
raise ValidationError( '%s must be a dictionary: %s' % ( key, str( type( val ) ) ) )
|
||||
|
||||
elif key == 'annotation':
|
||||
if not ( isinstance( val, str ) or isinstance( val, unicode ) ):
|
||||
if not isinstance( val, string_types ):
|
||||
raise ValidationError( '%s must be a string or unicode: %s' % ( key, str( type( val ) ) ) )
|
||||
val = util.sanitize_html.sanitize_html( val, 'utf-8' )
|
||||
|
||||
# these are keys that actually only be *updated* at the revision level and not here
|
||||
# (they are still valid for create, tho)
|
||||
elif key == 'title':
|
||||
if not ( isinstance( val, str ) or isinstance( val, unicode ) ):
|
||||
if not isinstance( val, string_types ):
|
||||
raise ValidationError( '%s must be a string or unicode: %s' % ( key, str( type( val ) ) ) )
|
||||
val = util.sanitize_html.sanitize_html( val, 'utf-8' )
|
||||
elif key == 'slug':
|
||||
if not ( isinstance( val, str ) or isinstance( val, unicode ) ):
|
||||
if not isinstance( val, string_types ):
|
||||
raise ValidationError( '%s must be a string: %s' % ( key, str( type( val ) ) ) )
|
||||
val = util.sanitize_html.sanitize_html( val, 'utf-8' )
|
||||
elif key == 'dbkey':
|
||||
if not ( isinstance( val, str ) or isinstance( val, unicode ) ):
|
||||
if not isinstance( val, string_types ):
|
||||
raise ValidationError( '%s must be a string or unicode: %s' % ( key, str( type( val ) ) ) )
|
||||
val = util.sanitize_html.sanitize_html( val, 'utf-8' )
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import os
|
||||
import shutil
|
||||
|
||||
from sqlalchemy import false, or_
|
||||
from six import string_types
|
||||
|
||||
import tool_shed.repository_types.util as rt_util
|
||||
from admin import AdminGalaxy
|
||||
@@ -1334,7 +1335,7 @@ class AdminToolshed( AdminGalaxy ):
|
||||
repo_info_dicts = []
|
||||
repo_info_dict = kwd.get( 'repo_info_dict', None )
|
||||
if repo_info_dict:
|
||||
if isinstance( repo_info_dict, basestring ):
|
||||
if isinstance( repo_info_dict, string_types ):
|
||||
repo_info_dict = encoding_util.tool_shed_decode( repo_info_dict )
|
||||
else:
|
||||
# Entering this else block occurs only if the tool_shed_repository does not include any valid tools.
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from markupsafe import escape
|
||||
from six import string_types
|
||||
import paste.httpexceptions
|
||||
|
||||
import galaxy.queue_worker
|
||||
@@ -87,7 +88,7 @@ class DataManager( BaseUIController ):
|
||||
@web.expose
|
||||
@web.require_admin
|
||||
def reload_tool_data_tables( self, trans, table_name=None, **kwd ):
|
||||
if table_name and isinstance( table_name, basestring ):
|
||||
if table_name and isinstance( table_name, string_types ):
|
||||
table_name = table_name.split( "," )
|
||||
# Reload the tool data tables
|
||||
table_names = self.app.tool_data_tables.reload_tables( table_names=table_name )
|
||||
|
||||
@@ -4,6 +4,7 @@ import urllib
|
||||
|
||||
from markupsafe import escape
|
||||
import paste.httpexceptions
|
||||
from six import string_types, text_type
|
||||
from sqlalchemy import false, true
|
||||
|
||||
from galaxy import datatypes, model, util, web
|
||||
@@ -219,7 +220,7 @@ class DatasetInterface( BaseUIController, UsesAnnotations, UsesItemRatings, Uses
|
||||
""" Primarily used for the S3ObjectStore - get the status of data transfer
|
||||
if the file is not in cache """
|
||||
data = self._check_dataset(trans, dataset_id)
|
||||
if isinstance( data, basestring ):
|
||||
if isinstance( data, string_types ):
|
||||
return data
|
||||
log.debug( "Checking transfer status for dataset %s..." % data.dataset.id )
|
||||
|
||||
@@ -651,7 +652,7 @@ class DatasetInterface( BaseUIController, UsesAnnotations, UsesItemRatings, Uses
|
||||
if not dataset:
|
||||
web.httpexceptions.HTTPNotFound()
|
||||
annotation = self.get_item_annotation_str( trans.sa_session, trans.user, dataset )
|
||||
if annotation and isinstance( annotation, unicode ):
|
||||
if annotation and isinstance( annotation, text_type ):
|
||||
annotation = annotation.encode( 'ascii', 'replace' ) # paste needs ascii here
|
||||
return annotation
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import logging
|
||||
import urllib
|
||||
|
||||
from markupsafe import escape
|
||||
from six import string_types
|
||||
from sqlalchemy import and_, false, func, null, true
|
||||
from sqlalchemy.orm import eagerload_all
|
||||
|
||||
@@ -1331,7 +1332,7 @@ class HistoryController( BaseUIController, SharableMixin, UsesAnnotations, UsesI
|
||||
new_name = name[i]
|
||||
|
||||
# skip if name is empty
|
||||
if not isinstance( new_name, basestring ) or not new_name.strip():
|
||||
if not isinstance( new_name, string_types ) or not new_name.strip():
|
||||
change_msgs.append( "You must specify a valid name for History: " + cur_name )
|
||||
continue
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@ from galaxy import util, web
|
||||
from galaxy.security import Action
|
||||
from galaxy.tools.actions import upload_common
|
||||
from galaxy.util import inflector
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.util.json import dumps, loads
|
||||
from galaxy.util.streamball import StreamBall
|
||||
from galaxy.web.base.controller import BaseUIController, UsesFormDefinitionsMixin, UsesExtendedMetadataMixin, UsesLibraryMixinItems
|
||||
@@ -86,7 +87,7 @@ class LibraryCommon( BaseUIController, UsesFormDefinitionsMixin, UsesExtendedMet
|
||||
job_ldda = job_ldda.copied_from_library_dataset_dataset_association
|
||||
rval[id] = {
|
||||
"state": data.state,
|
||||
"html": unicode( trans.fill_template( "library/common/library_item_info.mako", ldda=data ), 'utf-8' )
|
||||
"html": unicodify( trans.fill_template( "library/common/library_item_info.mako", ldda=data ), 'utf-8' )
|
||||
# "force_history_refresh": force_history_refresh
|
||||
}
|
||||
return rval
|
||||
|
||||
@@ -3,6 +3,7 @@ from sqlalchemy import and_, desc, false, true
|
||||
|
||||
from galaxy import managers, model, util, web
|
||||
from galaxy.model.item_attrs import UsesItemRatings
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.util.json import loads
|
||||
from galaxy.util.sanitize_html import sanitize_html, _BaseHTMLProcessor
|
||||
from galaxy.web import error, url_for
|
||||
@@ -625,7 +626,7 @@ class PageController( BaseUIController, SharableMixin,
|
||||
ave_item_rating, num_ratings = self.get_ave_item_rating_data( trans.sa_session, page )
|
||||
|
||||
# Output is string, so convert to unicode for display.
|
||||
page_content = unicode( processor.output(), 'utf-8' )
|
||||
page_content = unicodify( processor.output(), 'utf-8' )
|
||||
return trans.fill_template_mako( "page/display.mako", item=page,
|
||||
item_data=page_content,
|
||||
user_item_rating=user_item_rating,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from __future__ import absolute_import
|
||||
import logging
|
||||
import os
|
||||
from six import text_type
|
||||
|
||||
from galaxy import model, util
|
||||
from galaxy.web.base.controller import BaseUIController, UsesFormDefinitionsMixin, web
|
||||
@@ -465,7 +466,7 @@ class RequestsAdmin( BaseUIController, UsesFormDefinitionsMixin ):
|
||||
# Eliminate the output created using ssh from the tree
|
||||
if password_str in output:
|
||||
output = output.replace( password_str, '' )
|
||||
return unicode( output.replace( '\r\n', '<br/>' ) )
|
||||
return text_type( output.replace( '\r\n', '<br/>' ) )
|
||||
|
||||
@web.json
|
||||
def open_folder( self, trans, request_id, external_service_id, key ):
|
||||
|
||||
@@ -6,6 +6,7 @@ from sqlalchemy import and_, false, func, select
|
||||
from markupsafe import escape
|
||||
|
||||
from galaxy import model, util, web
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.security.validate_user_input import validate_email
|
||||
from galaxy.web.base.controller import BaseUIController, UsesFormDefinitionsMixin
|
||||
from galaxy.web.form_builder import build_select_field, CheckboxField, SelectField, TextField
|
||||
@@ -121,9 +122,9 @@ class RequestsCommon( BaseUIController, UsesFormDefinitionsMixin ):
|
||||
sample = trans.sa_session.query( self.app.model.Sample ).get( id )
|
||||
if sample.state.name != state:
|
||||
rval[ id ] = { "state": sample.state.name,
|
||||
"html_state": unicode( trans.fill_template( "requests/common/sample_state.mako",
|
||||
sample=sample),
|
||||
'utf-8' ) }
|
||||
"html_state": unicodify( trans.fill_template( "requests/common/sample_state.mako",
|
||||
sample=sample),
|
||||
'utf-8' ) }
|
||||
return rval
|
||||
|
||||
@web.json
|
||||
@@ -142,9 +143,9 @@ class RequestsCommon( BaseUIController, UsesFormDefinitionsMixin ):
|
||||
sample = trans.sa_session.query( self.app.model.Sample ).get( id )
|
||||
if len( sample.datasets ) != number_of_datasets:
|
||||
rval[ id ] = { "datasets": len( sample.datasets ),
|
||||
"html_datasets": unicode( trans.fill_template( "requests/common/sample_datasets.mako",
|
||||
sample=sample),
|
||||
'utf-8' ) }
|
||||
"html_datasets": unicodify( trans.fill_template( "requests/common/sample_datasets.mako",
|
||||
sample=sample),
|
||||
'utf-8' ) }
|
||||
return rval
|
||||
|
||||
@web.json
|
||||
@@ -163,9 +164,9 @@ class RequestsCommon( BaseUIController, UsesFormDefinitionsMixin ):
|
||||
sample_dataset = trans.sa_session.query( self.app.model.SampleDataset ).get( trans.security.decode_id( id ) )
|
||||
if sample_dataset.status != transfer_status:
|
||||
rval[ id ] = { "status": sample_dataset.status,
|
||||
"html_status": unicode( trans.fill_template( "requests/common/sample_dataset_transfer_status.mako",
|
||||
sample_dataset=sample_dataset),
|
||||
'utf-8' ) }
|
||||
"html_status": unicodify( trans.fill_template( "requests/common/sample_dataset_transfer_status.mako",
|
||||
sample_dataset=sample_dataset),
|
||||
'utf-8' ) }
|
||||
return rval
|
||||
|
||||
@web.expose
|
||||
|
||||
@@ -3,12 +3,13 @@ Tags Controller: handles tagging/untagging of entities
|
||||
and provides autocomplete support.
|
||||
"""
|
||||
|
||||
from galaxy import web
|
||||
from galaxy.web.base.controller import BaseUIController, UsesTagsMixin
|
||||
|
||||
from six import text_type
|
||||
from sqlalchemy.sql import select
|
||||
from sqlalchemy.sql.expression import and_, func
|
||||
|
||||
from galaxy import web
|
||||
from galaxy.web.base.controller import BaseUIController, UsesTagsMixin
|
||||
|
||||
import logging
|
||||
log = logging.getLogger( __name__ )
|
||||
|
||||
@@ -47,7 +48,7 @@ class TagsController ( BaseUIController, UsesTagsMixin ):
|
||||
trans.sa_session.flush()
|
||||
# Log.
|
||||
params = dict( item_id=item.id, item_class=item_class, tag=new_tag )
|
||||
trans.log_action( user, unicode( "tag" ), context, params )
|
||||
trans.log_action( user, text_type( "tag" ), context, params )
|
||||
|
||||
@web.expose
|
||||
@web.require_login( "remove tag from an item" )
|
||||
@@ -62,7 +63,7 @@ class TagsController ( BaseUIController, UsesTagsMixin ):
|
||||
trans.sa_session.flush()
|
||||
# Log.
|
||||
params = dict( item_id=item.id, item_class=item_class, tag=tag_name )
|
||||
trans.log_action( user, unicode( "untag" ), context, params )
|
||||
trans.log_action( user, text_type( "untag" ), context, params )
|
||||
|
||||
# Retag an item. All previous tags are deleted and new tags are applied.
|
||||
@web.expose
|
||||
|
||||
@@ -2,9 +2,10 @@ from __future__ import absolute_import
|
||||
|
||||
import logging
|
||||
|
||||
from sqlalchemy import and_, desc, false, or_, true
|
||||
from paste.httpexceptions import HTTPNotFound, HTTPBadRequest
|
||||
from markupsafe import escape
|
||||
from paste.httpexceptions import HTTPNotFound, HTTPBadRequest
|
||||
from six import string_types
|
||||
from sqlalchemy import and_, desc, false, or_, true
|
||||
|
||||
from galaxy import managers
|
||||
from galaxy import model, web
|
||||
@@ -808,7 +809,7 @@ class VisualizationController( BaseUIController, SharableMixin, UsesVisualizatio
|
||||
# post to saved in order to save a visualization
|
||||
if type is None or config is None:
|
||||
return HTTPBadRequest( 'A visualization type and config are required to save a visualization' )
|
||||
if isinstance( config, basestring ):
|
||||
if isinstance( config, string_types ):
|
||||
config = loads( config )
|
||||
title = title or DEFAULT_VISUALIZATION_NAME
|
||||
|
||||
@@ -931,7 +932,7 @@ class VisualizationController( BaseUIController, SharableMixin, UsesVisualizatio
|
||||
dataset = self.get_hda_or_ldda( trans, dataset_dict[ 'hda_ldda'], dataset_dict[ 'id' ] )
|
||||
|
||||
genome_data = self._get_genome_data( trans, dataset, dbkey )
|
||||
if not isinstance( genome_data, str ):
|
||||
if not isinstance( genome_data, string_types ):
|
||||
track[ 'preloaded_data' ] = genome_data
|
||||
|
||||
# define app configuration for generic mako template
|
||||
|
||||
@@ -19,6 +19,7 @@ from galaxy import web
|
||||
from galaxy.managers import workflows
|
||||
from galaxy.model.item_attrs import UsesItemRatings
|
||||
from galaxy.model.mapping import desc
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.util.sanitize_html import sanitize_html
|
||||
from galaxy.web import error, url_for
|
||||
from galaxy.web.base.controller import BaseUIController, SharableMixin, UsesStoredWorkflowMixin
|
||||
@@ -752,7 +753,7 @@ class WorkflowController( BaseUIController, SharableMixin, UsesStoredWorkflowMix
|
||||
workflow_svg=self._workflow_to_svg_canvas( trans, stored ).standalone_xml()
|
||||
)
|
||||
# strip() b/c myExperiment XML parser doesn't allow white space before XML; utf-8 handles unicode characters.
|
||||
request = unicode( request_raw.strip(), 'utf-8' )
|
||||
request = unicodify( request_raw.strip(), 'utf-8' )
|
||||
|
||||
# Do request and get result.
|
||||
auth_header = base64.b64encode( '%s:%s' % ( myexp_username, myexp_password ))
|
||||
|
||||
@@ -9,6 +9,7 @@ import urlparse
|
||||
from paste.auth.basic import AuthBasicAuthenticator
|
||||
from paste.httpheaders import AUTH_TYPE
|
||||
from paste.httpheaders import REMOTE_USER
|
||||
from six import string_types
|
||||
|
||||
from galaxy.util import asbool
|
||||
from galaxy.util.hash_util import new_secure_hash
|
||||
@@ -99,7 +100,7 @@ class Hg( object ):
|
||||
# If all of these mechanisms fail, Mercurial will fail, printing an error message. In this case, it
|
||||
# will not let you commit until you set up a username.
|
||||
result = self.authentication( environ )
|
||||
if not isinstance( result, str ) and cmd == 'unbundle' and 'wsgi.input' in environ:
|
||||
if not isinstance( result, string_types ) and cmd == 'unbundle' and 'wsgi.input' in environ:
|
||||
bundle_data_stream = environ[ 'wsgi.input' ]
|
||||
# Convert the incoming mercurial bundle into a json object and persit it to a temporary file for inspection.
|
||||
fh = tempfile.NamedTemporaryFile( 'wb', prefix="tmp-hg-bundle" )
|
||||
@@ -139,7 +140,7 @@ class Hg( object ):
|
||||
if len( entry ) == 2:
|
||||
# We possibly found an altered file entry.
|
||||
filename, change_list = entry
|
||||
if filename and isinstance( filename, str ):
|
||||
if filename and isinstance( filename, string_types ):
|
||||
if filename == rt_util.REPOSITORY_DEPENDENCY_DEFINITION_FILENAME:
|
||||
# Make sure the any complex repository dependency definitions contain valid <repository> tags.
|
||||
is_valid, error_msg = self.repository_tags_are_valid( filename, change_list )
|
||||
@@ -158,7 +159,7 @@ class Hg( object ):
|
||||
if len( entry ) == 2:
|
||||
# We possibly found an altered file entry.
|
||||
filename, change_list = entry
|
||||
if filename and isinstance( filename, str ):
|
||||
if filename and isinstance( filename, string_types ):
|
||||
if filename == rt_util.TOOL_DEPENDENCY_DEFINITION_FILENAME:
|
||||
# Make sure the any complex repository dependency definitions contain valid <repository> tags.
|
||||
is_valid, error_msg = self.repository_tags_are_valid( filename, change_list )
|
||||
@@ -179,7 +180,7 @@ class Hg( object ):
|
||||
if len( entry ) == 2:
|
||||
# We possibly found an altered file entry.
|
||||
filename, change_list = entry
|
||||
if filename and isinstance( filename, str ):
|
||||
if filename and isinstance( filename, string_types ):
|
||||
if filename in [ rt_util.REPOSITORY_DEPENDENCY_DEFINITION_FILENAME,
|
||||
rt_util.TOOL_DEPENDENCY_DEFINITION_FILENAME ]:
|
||||
# We check both files since tool dependency definitions files can contain complex
|
||||
@@ -188,7 +189,7 @@ class Hg( object ):
|
||||
if not is_valid:
|
||||
log.debug( error_msg )
|
||||
return self.__display_exception_remotely( start_response, error_msg )
|
||||
if isinstance( result, str ):
|
||||
if isinstance( result, string_types ):
|
||||
# Authentication was successful
|
||||
AUTH_TYPE.update( environ, 'basic' )
|
||||
REMOTE_USER.update( environ, result )
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
# Dan Blankenberg
|
||||
from six import string_types
|
||||
|
||||
|
||||
class fastaSequence( object ):
|
||||
@@ -63,7 +64,7 @@ class fastaNamedReader( object ):
|
||||
return self.file.close()
|
||||
|
||||
def get( self, sequence_id ):
|
||||
if not isinstance( sequence_id, basestring ):
|
||||
if not isinstance( sequence_id, string_types ):
|
||||
sequence_id = sequence_id.identifier
|
||||
rval = None
|
||||
if sequence_id in self.offset_dict:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import math
|
||||
import string
|
||||
import transform
|
||||
from six import string_types
|
||||
from sequence import SequencingRead
|
||||
from fasta import fastaSequence
|
||||
|
||||
@@ -633,7 +634,7 @@ class fastqNamedReader( object ):
|
||||
|
||||
def get( self, sequence_identifier ):
|
||||
# Input is either a sequence ID or a sequence object
|
||||
if not isinstance( sequence_identifier, basestring ):
|
||||
if not isinstance( sequence_identifier, string_types ):
|
||||
# Input was a sequence object (not a sequence ID). Get the sequence ID
|
||||
sequence_identifier = sequence_identifier.identifier
|
||||
# Get only the ID part of the sequence header
|
||||
@@ -764,7 +765,7 @@ class fastqJoiner( object ):
|
||||
|
||||
def is_first_mate( self, sequence_id ):
|
||||
is_first = None
|
||||
if not isinstance( sequence_id, basestring ):
|
||||
if not isinstance( sequence_id, string_types ):
|
||||
sequence_id = sequence_id.identifier
|
||||
sequence_id, sequence_sep, sequence_desc = sequence_id.partition(' ')
|
||||
if sequence_id[-2] == '/':
|
||||
|
||||
@@ -3,10 +3,8 @@ from abc import abstractmethod
|
||||
from string import Template
|
||||
|
||||
from six import BytesIO
|
||||
try:
|
||||
from six import text_type
|
||||
except ImportError:
|
||||
from galaxy.util import unicodify as text_type
|
||||
from six import text_type
|
||||
|
||||
try:
|
||||
from urllib import urlencode
|
||||
except ImportError:
|
||||
|
||||
@@ -5,6 +5,7 @@ try:
|
||||
except ImportError:
|
||||
from queue import Queue
|
||||
from os import getenv
|
||||
from six import string_types
|
||||
|
||||
from .client import JobClient
|
||||
from .client import InputCachingJobClient
|
||||
@@ -261,11 +262,7 @@ class ClientCacher(object):
|
||||
|
||||
|
||||
def _parse_destination_params(destination_params):
|
||||
try:
|
||||
unicode_type = unicode
|
||||
except NameError:
|
||||
unicode_type = str
|
||||
if isinstance(destination_params, str) or isinstance(destination_params, unicode_type):
|
||||
if isinstance(destination_params, string_types):
|
||||
destination_params = url_to_destination_params(destination_params)
|
||||
return destination_params
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import tempfile
|
||||
import traceback
|
||||
|
||||
from fabric.api import lcd
|
||||
from six import string_types
|
||||
from sqlalchemy import or_
|
||||
|
||||
from galaxy import exceptions, util
|
||||
@@ -842,7 +843,7 @@ class InstallRepositoryManager( object ):
|
||||
str( tool_panel_section_key ) )
|
||||
else:
|
||||
tool_section = None
|
||||
if isinstance( repo_info_dict, basestring ):
|
||||
if isinstance( repo_info_dict, string_types ):
|
||||
repo_info_dict = encoding_util.tool_shed_decode( repo_info_dict )
|
||||
# Clone each repository to the configured location.
|
||||
self.update_tool_shed_repository_status( tool_shed_repository,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import logging
|
||||
import os
|
||||
import stat
|
||||
from six import string_types
|
||||
|
||||
log = logging.getLogger( __name__ )
|
||||
|
||||
@@ -76,7 +77,7 @@ class EnvFileBuilder( object ):
|
||||
log.exception( str( e ) )
|
||||
return 1
|
||||
# Convert the received text to a list, in order to support adding one or more lines to the file.
|
||||
if isinstance( text, basestring ):
|
||||
if isinstance( text, string_types ):
|
||||
text = [ text ]
|
||||
for line in text:
|
||||
line = line.rstrip()
|
||||
|
||||
@@ -5,6 +5,7 @@ import sys
|
||||
from string import Template
|
||||
|
||||
import markupsafe
|
||||
from six import text_type
|
||||
|
||||
from galaxy.util import nice_size, unicodify
|
||||
|
||||
@@ -144,7 +145,7 @@ def to_html_string( text ):
|
||||
text = unicodify( text )
|
||||
except UnicodeDecodeError, e:
|
||||
return "Error decoding string: %s" % str( e )
|
||||
text = unicode( markupsafe.escape( text ) )
|
||||
text = text_type( markupsafe.escape( text ) )
|
||||
text = text.replace( '\n', '<br/>' )
|
||||
text = text.replace( ' ', ' ' )
|
||||
text = text.replace( ' ', ' ' )
|
||||
|
||||
@@ -3,6 +3,7 @@ import logging
|
||||
import os
|
||||
import urllib
|
||||
import urllib2
|
||||
from six import string_types
|
||||
|
||||
from galaxy import util
|
||||
from galaxy.util.odict import odict
|
||||
@@ -363,7 +364,7 @@ def url_join( base_url, pathspec=None, params=None ):
|
||||
"""Return a valid URL produced by appending a base URL and a set of request parameters."""
|
||||
url = base_url.rstrip( '/' )
|
||||
if pathspec is not None:
|
||||
if not isinstance( pathspec, basestring ):
|
||||
if not isinstance( pathspec, string_types ):
|
||||
pathspec = '/'.join( pathspec )
|
||||
url = '%s/%s' % ( url, pathspec )
|
||||
if params is not None:
|
||||
|
||||
@@ -5,6 +5,7 @@ import shutil
|
||||
import galaxy.tools
|
||||
from galaxy import util
|
||||
from galaxy.util import checkers
|
||||
from galaxy.util import unicodify
|
||||
from galaxy.util.expressions import ExpressionContext
|
||||
from galaxy.web.form_builder import SelectField
|
||||
|
||||
@@ -131,7 +132,7 @@ def get_headers( fname, sep, count=60, is_multi_byte=False ):
|
||||
for idx, line in enumerate( file( fname ) ):
|
||||
line = line.rstrip( '\n\r' )
|
||||
if is_multi_byte:
|
||||
line = unicode( line, 'utf-8' )
|
||||
line = unicodify( line, 'utf-8' )
|
||||
sep = sep.encode( 'utf-8' )
|
||||
headers.append( line.split( sep ) )
|
||||
if idx == count:
|
||||
|
||||
Reference in New Issue
Block a user