Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
galaxy.util package¶
Utility functions used systemwide.
-
galaxy.util.
remove_protocol_from_url
(url)[source]¶ Supplied URL may be null, if not ensure http:// or https:// etc… is stripped off.
-
galaxy.util.
is_binary
(value)[source]¶ File is binary if it contains a null-byte by default (e.g. behavior of grep, etc.). This may fail for utf-16 files, but so would ASCII encoding. >>> is_binary( string.printable ) False >>> is_binary( b’xcex94’ ) False >>> is_binary( b’x00’ ) True
-
galaxy.util.
is_uuid
(value)[source]¶ This method returns True if value is a UUID, otherwise False. >>> is_uuid( “123e4567-e89b-12d3-a456-426655440000” ) True >>> is_uuid( “0x3242340298902834” ) False
-
galaxy.util.
directory_hash_id
(id)[source]¶ >>> directory_hash_id( 100 ) ['000'] >>> directory_hash_id( "90000" ) ['090'] >>> directory_hash_id("777777777") ['000', '777', '777'] >>> directory_hash_id("135ee48a-4f51-470c-ae2f-ce8bd78799e6") ['1', '3', '5']
-
galaxy.util.
synchronized
(func)[source]¶ This wrapper will serialize access to ‘func’ to a single thread. Use it as a decorator.
-
galaxy.util.
iter_start_of_line
(fh, chunk_size=None)[source]¶ Iterate over fh and call readline(chunk_size)
-
galaxy.util.
file_reader
(fp, chunk_size=65536)[source]¶ This generator yields the open fileobject in chunks (default 64k). Closes the file at the end
-
galaxy.util.
chunk_iterable
(it: Iterable, size: int = 1000)[source]¶ Break an iterable into chunks of
size
elements.>>> list(chunk_iterable([1, 2, 3, 4, 5, 6, 7], 3)) [(1, 2, 3), (4, 5, 6), (7,)]
-
galaxy.util.
unique_id
(KEY_SIZE=128)[source]¶ Generates an unique id
>>> ids = [ unique_id() for i in range(1000) ] >>> len(set(ids)) 1000
-
galaxy.util.
parse_xml
(fname, strip_whitespace=True, remove_comments=True)[source]¶ Returns a parsed xml tree
-
galaxy.util.
shrink_stream_by_size
(value, size, join_by=b'..', left_larger=True, beginning_on_size_error=False, end_on_size_error=False)[source]¶ Shrinks bytes read from value to size.
value needs to implement tell/seek, so files need to be opened in binary mode. Returns unicode text with invalid characters replaced.
-
galaxy.util.
shrink_string_by_size
(value, size, join_by='..', left_larger=True, beginning_on_size_error=False, end_on_size_error=False)[source]¶
-
galaxy.util.
pretty_print_time_interval
(time=False, precise=False, utc=False)[source]¶ Get a datetime object or a int() Epoch timestamp and return a pretty string like ‘an hour ago’, ‘Yesterday’, ‘3 months ago’, ‘just now’, etc credit: http://stackoverflow.com/questions/1551382/user-friendly-time-format-in-python
-
galaxy.util.
restore_text
(text, character_map={'\t': '__tc__', '\n': '__cn__', '\r': '__cr__', '"': '__dq__', '#': '__pd__', "'": '__sq__', '<': '__lt__', '>': '__gt__', '@': '__at__', '[': '__ob__', ']': '__cb__', '{': '__oc__', '}': '__cc__'})[source]¶ Restores sanitized text
-
galaxy.util.
sanitize_text
(text, valid_characters={' ', '!', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', '=', '?', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '^', '_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}, character_map={'\t': '__tc__', '\n': '__cn__', '\r': '__cr__', '"': '__dq__', '#': '__pd__', "'": '__sq__', '<': '__lt__', '>': '__gt__', '@': '__at__', '[': '__ob__', ']': '__cb__', '{': '__oc__', '}': '__cc__'}, invalid_character='X')[source]¶ Restricts the characters that are allowed in text; accepts both strings and lists of strings; non-string entities will be cast to strings.
-
galaxy.util.
sanitize_lists_to_string
(values, valid_characters={' ', '!', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', '=', '?', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '^', '_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}, character_map={'\t': '__tc__', '\n': '__cn__', '\r': '__cr__', '"': '__dq__', '#': '__pd__', "'": '__sq__', '<': '__lt__', '>': '__gt__', '@': '__at__', '[': '__ob__', ']': '__cb__', '{': '__oc__', '}': '__cc__'}, invalid_character='X')[source]¶
-
galaxy.util.
sanitize_param
(value, valid_characters={' ', '!', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', '=', '?', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '^', '_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}, character_map={'\t': '__tc__', '\n': '__cn__', '\r': '__cr__', '"': '__dq__', '#': '__pd__', "'": '__sq__', '<': '__lt__', '>': '__gt__', '@': '__at__', '[': '__ob__', ']': '__cb__', '{': '__oc__', '}': '__cc__'}, invalid_character='X')[source]¶ Clean incoming parameters (strings or lists)
-
galaxy.util.
sanitize_for_filename
(text, default=None)[source]¶ Restricts the characters that are allowed in a filename portion; Returns default value or a unique id string if result is not a valid name. Method is overly aggressive to minimize possible complications, but a maximum length is not considered.
-
galaxy.util.
find_instance_nested
(item, instances)[source]¶ Recursively find instances from lists, dicts, tuples.
instances should be a tuple of valid instances. Returns a dictionary, where keys are the deepest key at which an instance has been found, and the value is the matched instance.
-
galaxy.util.
mask_password_from_url
(url)[source]¶ Masks out passwords from connection urls like the database connection in galaxy.ini
>>> mask_password_from_url( 'sqlite+postgresql://user:password@localhost/' ) 'sqlite+postgresql://user:********@localhost/' >>> mask_password_from_url( 'amqp://user:amqp@localhost' ) 'amqp://user:********@localhost' >>> mask_password_from_url( 'amqp://localhost') 'amqp://localhost'
-
galaxy.util.
ready_name_for_url
(raw_name)[source]¶ General method to convert a string (i.e. object name) to a URL-ready slug.
>>> ready_name_for_url( "My Cool Object" ) 'My-Cool-Object' >>> ready_name_for_url( "!My Cool Object!" ) 'My-Cool-Object' >>> ready_name_for_url( "Hello₩◎ґʟⅾ" ) 'Hello'
-
galaxy.util.
in_directory
(file, directory, local_path_module=<module 'posixpath' from '/opt/hostedtoolcache/Python/3.7.17/x64/lib/python3.7/posixpath.py'>)[source]¶ Return true, if the common prefix of both is equal to directory e.g. /a/b/c/d.rst and directory is /a/b, the common prefix is /a/b. This function isn’t used exclusively for security checks, but if it is used for such checks it is assumed that
directory
is a “trusted” path - supplied by Galaxy or by the admin andfile
is something generated by a tool, configuration, external web server, or user supplied input.local_path_module is used by Pulsar to check Windows paths while running on a POSIX-like system.
>>> base_dir = tempfile.mkdtemp() >>> safe_dir = os.path.join(base_dir, "user") >>> os.mkdir(safe_dir) >>> good_file = os.path.join(safe_dir, "1") >>> with open(good_file, "w") as f: _ = f.write("hello") >>> in_directory(good_file, safe_dir) True >>> in_directory("/other/file/is/here.txt", safe_dir) False >>> unsafe_link = os.path.join(safe_dir, "2") >>> os.symlink("/other/file/bad.fasta", unsafe_link) >>> in_directory(unsafe_link, safe_dir) False
-
galaxy.util.
merge_sorted_iterables
(operator, *iterables)[source]¶ >>> operator = lambda x: x >>> list( merge_sorted_iterables( operator, [1,2,3], [4,5] ) ) [1, 2, 3, 4, 5] >>> list( merge_sorted_iterables( operator, [4, 5], [1,2,3] ) ) [1, 2, 3, 4, 5] >>> list( merge_sorted_iterables( operator, [1, 4, 5], [2], [3] ) ) [1, 2, 3, 4, 5]
-
class
galaxy.util.
Params
(params, sanitize=True)[source]¶ Bases:
object
Stores and ‘sanitizes’ parameters. Alphanumeric characters and the non-alphanumeric ones that are deemed safe are let to pass through (see L{valid_chars}). Some non-safe characters are escaped to safe forms for example C{>} becomes C{__lt__} (see L{mapped_chars}). All other characters are replaced with C{X}.
Operates on string or list values only (HTTP parameters).
>>> values = { 'status':'on', 'symbols':[ 'alpha', '<>', '$rm&#!' ] } >>> par = Params(values) >>> par.status 'on' >>> par.value == None # missing attributes return None True >>> par.get('price', 0) 0 >>> par.symbols # replaces unknown symbols with X ['alpha', '__lt____gt__', 'XrmX__pd__!'] >>> sorted(par.flatten()) # flattening to a list [('status', 'on'), ('symbols', 'XrmX__pd__!'), ('symbols', '__lt____gt__'), ('symbols', 'alpha')]
-
NEVER_SANITIZE
= ['file_data', 'url_paste', 'URL', 'filesystem_paths']¶
-
__init__
(params, sanitize=True)[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
-
galaxy.util.
parse_resource_parameters
(resource_param_file)[source]¶ Code shared between jobs and workflows for reading resource parameter configuration files.
TODO: Allow YAML in addition to XML.
-
galaxy.util.
string_as_bool_or_none
(string)[source]¶ - Returns True, None or False based on the argument:
True if passed True, ‘True’, ‘Yes’, or ‘On’ None if passed None or ‘None’ False otherwise
Note: string comparison is case-insensitive so lowecase versions of those function equivalently.
-
galaxy.util.
listify
(item, do_strip=False)[source]¶ Make a single item a single item list.
If item is a string, it is split on comma (
,
) characters to produce the list. Optionally, if do_strip is true, any extra whitespace around the split items is stripped.If item is a list it is returned unchanged. If item is a tuple, it is converted to a list and returned. If item evaluates to False, an empty list is returned.
-
galaxy.util.
roundify
(amount, sfs=2)[source]¶ Take a number in string form and truncate to ‘sfs’ significant figures.
-
galaxy.util.
unicodify
(value, encoding='utf-8', error='replace', strip_null=False, log_exception=True)[source]¶ Returns a Unicode string or None.
>>> assert unicodify(None) is None >>> assert unicodify('simple string') == 'simple string' >>> assert unicodify(3) == '3' >>> assert unicodify(bytearray([115, 116, 114, 196, 169, 195, 177, 103])) == 'strĩñg' >>> assert unicodify(Exception('strĩñg')) == 'strĩñg' >>> assert unicodify('cómplǐcḁtëd strĩñg') == 'cómplǐcḁtëd strĩñg' >>> s = 'cómplǐcḁtëd strĩñg'; assert unicodify(s) == s >>> s = 'lâtín strìñg'; assert unicodify(s.encode('latin-1'), 'latin-1') == s >>> s = 'lâtín strìñg'; assert unicodify(s.encode('latin-1')) == 'l�t�n str��g' >>> s = 'lâtín strìñg'; assert unicodify(s.encode('latin-1'), error='ignore') == 'ltn strg'
-
galaxy.util.
smart_str
(s, encoding='utf-8', strings_only=False, errors='strict')[source]¶ Returns a bytestring version of ‘s’, encoded as specified in ‘encoding’.
If strings_only is True, don’t convert (some) non-string-like objects.
Adapted from an older, simpler version of django.utils.encoding.smart_str.
>>> assert smart_str(None) == b'None' >>> assert smart_str(None, strings_only=True) is None >>> assert smart_str(3) == b'3' >>> assert smart_str(3, strings_only=True) == 3 >>> s = b'a bytes string'; assert smart_str(s) == s >>> s = bytearray(b'a bytes string'); assert smart_str(s) == s >>> assert smart_str('a simple unicode string') == b'a simple unicode string' >>> assert smart_str('à strange ünicode ڃtring') == b'\xc3\xa0 strange \xc3\xbcnicode \xda\x83tring' >>> assert smart_str(b'\xc3\xa0n \xc3\xabncoded utf-8 string', encoding='latin-1') == b'\xe0n \xebncoded utf-8 string' >>> assert smart_str(bytearray(b'\xc3\xa0n \xc3\xabncoded utf-8 string'), encoding='latin-1') == b'\xe0n \xebncoded utf-8 string'
-
galaxy.util.
clean_multiline_string
(multiline_string, sep='\n')[source]¶ Dedent, split, remove first and last empty lines, rejoin.
-
class
galaxy.util.
ParamsWithSpecs
(specs=None, params=None)[source]¶ Bases:
collections.defaultdict
-
galaxy.util.
compare_urls
(url1, url2, compare_scheme=True, compare_hostname=True, compare_path=True)[source]¶
-
galaxy.util.
read_build_sites
(filename, check_builds=True)[source]¶ read db names to ucsc mappings from file, this file should probably be merged with the one above
-
galaxy.util.
mkstemp_ln
(src, prefix='mkstemp_ln_')[source]¶ From tempfile._mkstemp_inner, generate a hard link in the same dir with a random name. Created so we can persist the underlying file of a NamedTemporaryFile upon its closure.
-
galaxy.util.
umask_fix_perms
(path, umask, unmasked_perms, gid=None)[source]¶ umask-friendly permissions fixing
-
galaxy.util.
docstring_trim
(docstring)[source]¶ Trimming python doc strings. Taken from: http://www.python.org/dev/peps/pep-0257/
-
galaxy.util.
nice_size
(size)[source]¶ Returns a readably formatted string with the size
>>> nice_size(100) '100 bytes' >>> nice_size(10000) '9.8 KB' >>> nice_size(1000000) '976.6 KB' >>> nice_size(100000000) '95.4 MB'
-
galaxy.util.
size_to_bytes
(size)[source]¶ Returns a number of bytes (as integer) if given a reasonably formatted string with the size
>>> size_to_bytes('1024') 1024 >>> size_to_bytes('1.0') 1 >>> size_to_bytes('10 bytes') 10 >>> size_to_bytes('4k') 4096 >>> size_to_bytes('2.2 TB') 2418925581107 >>> size_to_bytes('.01 TB') 10995116277 >>> size_to_bytes('1.b') 1 >>> size_to_bytes('1.2E2k') 122880
-
galaxy.util.
send_mail
(frm, to, subject, body, config, html=None)[source]¶ Sends an email.
- Parameters
frm (str) – from address
to (str) – to address
subject (str) – Subject line
body (str) – Body text (should be plain text)
config (object) – Galaxy configuration object
html (str) – Alternative HTML representation of the body content. If provided will convert the message to a MIMEMultipart. (Default ‘None’)
-
galaxy.util.
safe_str_cmp
(a, b)[source]¶ safely compare two strings in a timing-attack-resistant manner
-
galaxy.util.
config_directories_from_setting
(directories_setting, galaxy_root='/home/runner/work/galaxy/galaxy/lib/galaxy/util/../../..')[source]¶ Parse the
directories_setting
into a list of relative or absolute filesystem paths that will be searched to discover plugins.- Parameters
galaxy_root (string) – the root path of this galaxy installation
directories_setting (string (default: None)) – the filesystem path (or paths) to search for plugins. Can be CSV string of paths. Will be treated as absolute if a path starts with ‘/’, relative otherwise.
- Return type
list of strings
- Returns
list of filesystem paths
-
galaxy.util.
parse_non_hex_float
(s)[source]¶ Parse string s into a float but throw a ValueError if the string is in the otherwise acceptable format d+ed+ (e.g. 40000000000000e5.)
This can be passed into json.loads to prevent a hex string in the above format from being incorrectly parsed as a float in scientific notation.
>>> parse_non_hex_float( '123.4' ) 123.4 >>> parse_non_hex_float( '2.45e+3' ) 2450.0 >>> parse_non_hex_float( '2.45e-3' ) 0.00245 >>> parse_non_hex_float( '40000000000000e5' ) Traceback (most recent call last): ... ValueError: could not convert string to float: 40000000000000e5
-
galaxy.util.
build_url
(base_url, port=80, scheme='http', pathspec=None, params=None, doseq=False)[source]¶
-
galaxy.util.
url_get
(base_url, auth=None, pathspec=None, params=None, max_retries=5, backoff_factor=1)[source]¶ Make contact with the uri provided and return any contents.
-
galaxy.util.
is_url
(uri, allow_list=None)[source]¶ Check if uri is (most likely) an URL, more precisely the function checks if uri starts with a scheme from the allow list (defaults to “http://”, “https://”, “ftp://”) >>> is_url(‘https://zenodo.org/record/4104428/files/UCSC-hg38-chr22-Coding-Exons.bed’) True >>> is_url(‘file:///some/path’) False >>> is_url(‘/some/path’) False
-
galaxy.util.
download_to_file
(url, dest_file_path, timeout=30, chunk_size=1048576)[source]¶ Download a URL to a file in chunks.
-
class
galaxy.util.
StructuredExecutionTimer
(timer_id, template, **tags)[source]¶ Bases:
object
-
__init__
(timer_id, template, **tags)[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
property
elapsed
¶
-
Subpackages¶
Submodules¶
galaxy.util.aliaspickler module¶
-
class
galaxy.util.aliaspickler.
AliasUnpickler
(aliases, *args, **kw)[source]¶ Bases:
_pickle.Unpickler
-
__init__
(aliases, *args, **kw)[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
find_class
(module, name)[source]¶ Return an object from a specified module.
If necessary, the module will be imported. Subclasses may override this method (e.g. to restrict unpickling of arbitrary classes and functions).
This method is called whenever a class or a function object is needed. Both arguments passed are str objects.
-
galaxy.util.bunch module¶
-
class
galaxy.util.bunch.
Bunch
(**kwds)[source]¶ Bases:
object
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52308
Often we want to just collect a bunch of stuff together, naming each item of the bunch; a dictionary’s OK for that, but a small do-nothing class is even handier, and prettier to use.
galaxy.util.bytesize module¶
-
class
galaxy.util.bytesize.
ByteSize
(value)[source]¶ Bases:
object
Convert multiples of bytes to various units.
-
__init__
(value)[source]¶ Represents a quantity of bytes.
value may be an integer, in which case it is assumed to be bytes. If value is a string, it is parsed as bytes if no suffix (Mi, M, Gi, G …) is found.
>>> values = [128974848, '129e6', '129M', '123Mi' ] >>> [ByteSize(v).to_unit('M') for v in values] ['128M', '129M', '129M', '128M']
-
galaxy.util.checkers module¶
-
galaxy.util.checkers.
check_html
(name, file_path=True)[source]¶ Returns True if the file/string contains HTML code.
galaxy.util.commands module¶
Generic I/O and shell processing code used by Galaxy tool dependencies.
-
galaxy.util.commands.
argv_to_str
(command_argv, quote=True)[source]¶ Convert an argv command list to a string for shell subprocess.
If None appears in the command list it is simply excluded.
Arguments are quoted with shlex.quote(). That said, this method is not meant to be used in security critical paths of code and should not be used to sanitize code.
-
exception
galaxy.util.commands.
CommandLineException
(command, stdout, stderr, returncode)[source]¶ Bases:
Exception
An exception indicating a non-zero command-line exit.
-
galaxy.util.commands.
download_command
(url, to='-')[source]¶ Build a command line to download a URL.
By default the URL will be downloaded to standard output but a specific file can be specified with the to argument.
-
galaxy.util.commands.
execute
(cmds, input=None)[source]¶ Execute commands and throw an exception on a non-zero exit. if input is not None then the string is sent to the process’ stdin.
Return the standard output if the commands are successful
-
galaxy.util.commands.
redirect_aware_commmunicate
(p, sys=<module 'sys' (built-in)>)[source]¶ Variant of process.communicate that works with in process I/O redirection.
-
galaxy.util.commands.
redirecting_io
(sys=<module 'sys' (built-in)>)[source]¶ Predicate to determine if we are redicting stdout in process.
-
galaxy.util.commands.
shell
(cmds, env=None, **kwds)[source]¶ Run shell commands with shell_process and wait.
galaxy.util.compression_utils module¶
-
galaxy.util.compression_utils.
get_fileobj
(filename, mode='r', compressed_formats=None)[source]¶ Returns a fileobj. If the file is compressed, return an appropriate file reader. In text mode, always use ‘utf-8’ encoding.
- Parameters
filename – path to file that should be opened
mode – mode to pass to opener
compressed_formats – list of allowed compressed file formats among ‘bz2’, ‘gzip’ and ‘zip’. If left to None, all 3 formats are allowed
-
galaxy.util.compression_utils.
file_iter
(fname, sep=None)[source]¶ This generator iterates over a file and yields its lines splitted via the C{sep} parameter. Skips empty lines and lines starting with the C{#} character.
>>> lines = [ line for line in file_iter(__file__) ] >>> len(lines) != 0 True
-
class
galaxy.util.compression_utils.
CompressedFile
(file_path, mode='r')[source]¶ Bases:
object
-
__init__
(file_path, mode='r')[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
property
common_prefix_dir
¶ Get the common prefix directory for all the files in the archive, if any.
Returns ‘’ if the archive contains multiple files and/or directories at the root of the archive.
-
galaxy.util.dbkeys module¶
Functionality for dealing with dbkeys.
-
class
galaxy.util.dbkeys.
GenomeBuilds
(app, data_table_name='__dbkeys__', load_old_style=True)[source]¶ Bases:
object
-
default_value
= '?'¶
-
default_name
= 'unspecified (?)'¶
-
galaxy.util.dictifiable module¶
galaxy.util.expressions module¶
Expression evaluation support.
For the moment this depends on python’s eval. In the future it should be replaced with a “safe” parser.
galaxy.util.facts module¶
Return various facts for string formatting.
-
class
galaxy.util.facts.
Facts
(config=None, **kwargs)[source]¶ Bases:
collections.abc.MutableMapping
A dict-like object that evaluates values at access time.
galaxy.util.filelock module¶
Code obtained from https://github.com/dmfrey/FileLock.
See full license at:
https://github.com/dmfrey/FileLock/blob/master/LICENSE.txt
-
class
galaxy.util.filelock.
FileLock
(file_name, timeout=10, delay=0.05)[source]¶ Bases:
object
A file locking mechanism that has context-manager support so you can use it in a with statement. This should be relatively cross compatible as it doesn’t rely on msvcrt or fcntl for the locking.
-
__init__
(file_name, timeout=10, delay=0.05)[source]¶ Prepare the file locker. Specify the file to lock and optionally the maximum timeout and the delay between each attempt to lock.
-
galaxy.util.form_builder module¶
Classes for generating HTML forms
-
class
galaxy.util.form_builder.
BaseField
(name, value=None, label=None, **kwds)[source]¶ Bases:
object
-
class
galaxy.util.form_builder.
TextField
(name, value=None, label=None, **kwds)[source]¶ Bases:
galaxy.util.form_builder.BaseField
A standard text input box.
-
class
galaxy.util.form_builder.
PasswordField
(name, value=None, label=None, **kwds)[source]¶ Bases:
galaxy.util.form_builder.BaseField
A password input box. text appears as “**”
-
class
galaxy.util.form_builder.
TextArea
(name, value=None, label=None, **kwds)[source]¶ Bases:
galaxy.util.form_builder.BaseField
A standard text area box.
-
class
galaxy.util.form_builder.
CheckboxField
(name, value=None, label=None, **kwds)[source]¶ Bases:
galaxy.util.form_builder.BaseField
A checkbox (boolean input)
-
class
galaxy.util.form_builder.
SelectField
(name, multiple=None, display=None, field_id=None, value=None, selectlist=None, refresh_on_change=False, **kwds)[source]¶ Bases:
galaxy.util.form_builder.BaseField
A select field.
-
class
galaxy.util.form_builder.
AddressField
(name, user=None, value=None, security=None, **kwds)[source]¶
-
class
galaxy.util.form_builder.
WorkflowField
(name, user=None, value=None, security=None, **kwds)[source]¶
-
class
galaxy.util.form_builder.
HistoryField
(name, user=None, value=None, security=None, **kwds)[source]¶
galaxy.util.hash_util module¶
Utility functions for bi-directional Python version compatibility. Python 2.5 introduced hashlib which replaced sha in Python 2.4 and previous versions.
-
galaxy.util.hash_util.
md5
()¶ Returns a md5 hash object; optionally initialized with a string
-
galaxy.util.hash_util.
sha1
()¶ Returns a sha1 hash object; optionally initialized with a string
-
galaxy.util.hash_util.
sha
()¶ Returns a sha1 hash object; optionally initialized with a string
galaxy.util.heartbeat module¶
-
galaxy.util.heartbeat.
get_current_thread_object_dict
()[source]¶ Get a dictionary of all ‘Thread’ objects created via the threading module keyed by thread_id. Note that not all interpreter threads have a thread objects, only the main thread and any created via the ‘threading’ module. Threads created via the low level ‘thread’ module will not be in the returned dictionary.
- HACK: This mucks with the internals of the threading module since that
module does not expose any way to match ‘Thread’ objects with intepreter thread identifiers (though it should).
-
class
galaxy.util.heartbeat.
Heartbeat
(config, name='Heartbeat Thread', period=20, fname='heartbeat.log')[source]¶ Bases:
threading.Thread
Thread that periodically dumps the state of all threads to a file
-
__init__
(config, name='Heartbeat Thread', period=20, fname='heartbeat.log')[source]¶ This constructor should always be called with keyword arguments. Arguments are:
group should be None; reserved for future extension when a ThreadGroup class is implemented.
target is the callable object to be invoked by the run() method. Defaults to None, meaning nothing is called.
name is the thread name. By default, a unique name is constructed of the form “Thread-N” where N is a small decimal number.
args is the argument tuple for the target invocation. Defaults to ().
kwargs is a dictionary of keyword arguments for the target invocation. Defaults to {}.
If a subclass overrides the constructor, it must make sure to invoke the base class constructor (Thread.__init__()) before doing anything else to the thread.
-
run
()[source]¶ Method representing the thread’s activity.
You may override this method in a subclass. The standard run() method invokes the callable object passed to the object’s constructor as the target argument, if any, with sequential and keyword arguments taken from the args and kwargs arguments, respectively.
-
thread_is_sleeping
(last_stack_frame)[source]¶ Returns True if the given stack-frame represents a known sleeper function (at least in python 2.5)
-
galaxy.util.image_util module¶
Provides utilities for working with image files.
galaxy.util.inflection module¶
-
class
galaxy.util.inflection.
Inflector
[source]¶ Bases:
object
Inflector for pluralizing and singularizing English nouns.
-
NONCHANGING_WORDS
= {'equipment', 'information', 'money', 'rice', 'series', 'sheep', 'sms', 'species'}¶
-
IRREGULAR_WORDS
= {'child': 'children', 'man': 'men', 'move': 'moves', 'octopus': 'octopi', 'person': 'people', 'sex': 'sexes'}¶
-
PLURALIZE_RULES
= (('(?i)(quiz)$', '\\1zes'), ('(?i)^(ox)$', '\\1en'), ('(?i)([m|l])ouse$', '\\1ice'), ('(?i)(matr|vert|ind)ix|ex$', '\\1ices'), ('(?i)(x|ch|ss|sh)$', '\\1es'), ('(?i)([^aeiouy]|qu)ies$', '\\1y'), ('(?i)([^aeiouy]|qu)y$', '\\1ies'), ('(?i)(hive)$', '\\1s'), ('(?i)(?:([^f])fe|([lr])f)$', '\\1\\2ves'), ('(?i)sis$', 'ses'), ('(?i)([ti])um$', '\\1a'), ('(?i)(buffal|tomat)o$', '\\1oes'), ('(?i)(bu)s$', '\\1ses'), ('(?i)(alias|status|virus)', '\\1es'), ('(?i)(ax|test)is$', '\\1es'), ('(?i)s$', 's'), ('(?i)$', 's'))¶
-
SINGULARIZE_RULES
= (('(?i)(quiz)zes$', '\\1'), ('(?i)(matr)ices$', '\\1ix'), ('(?i)(vert|ind)ices$', '\\1ex'), ('(?i)^(ox)en', '\\1'), ('(?i)(alias|status|virus)es$', '\\1'), ('(?i)(cris|ax|test)es$', '\\1is'), ('(?i)(shoe)s$', '\\1'), ('(?i)(o)es$', '\\1'), ('(?i)(bus)es$', '\\1'), ('(?i)([m|l])ice$', '\\1ouse'), ('(?i)(x|ch|ss|sh)es$', '\\1'), ('(?i)(m)ovies$', '\\1ovie'), ('(?i)(s)eries$', '\\1eries'), ('(?i)([^aeiouy]|qu)ies$', '\\1y'), ('(?i)([lr])ves$', '\\1f'), ('(?i)(tive)s$', '\\1'), ('(?i)(hive)s$', '\\1'), ('(?i)([^f])ves$', '\\1fe'), ('(?i)(^analy)ses$', '\\1sis'), ('(?i)((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$', '\\1\\2sis'), ('(?i)([ti])a$', '\\1um'), ('(?i)(n)ews$', '\\1ews'), ('(?i)s$', ''))¶
-
galaxy.util.json module¶
galaxy.util.jstree module¶
-
class
galaxy.util.jstree.
Path
(path, id, options)¶ Bases:
tuple
-
property
id
¶ Alias for field number 1
-
property
options
¶ Alias for field number 2
-
property
path
¶ Alias for field number 0
-
property
-
class
galaxy.util.jstree.
Node
(path, oid, **kwargs)[source]¶ Bases:
dictobj.DictionaryObject
Copyright 2012 “Grim Apps”
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Helper class written by William Grim - grimwm Original repo: https://github.com/grimwm/py-jstree Code adjusted according to the idea of Frank Blechschmidt - FraBle Thank you! ******************** This class exists as a helper to the JSTree. Its “jsonData” method can generate sub-tree JSON without putting the logic directly into the JSTree.
This data structure is only semi-immutable. The JSTree uses a directly iterative (i.e. no stack is managed) builder pattern to construct a tree out of paths. Therefore, the children are not known in advance, and we have to keep the children attribute mutable.
-
__init__
(path, oid, **kwargs)[source]¶ kwargs allows users to pass arbitrary information into a Node that will later be output in jsonData(). It allows for more advanced configuration than the default path handling that JSTree currently allows. For example, users may want to pass “attr” or some other valid jsTree options.
- Example:
>>> node = Node('a', None) >>> assert node._items == {'text': 'a', 'children': dictobj.MutableDictionaryObject({})} >>> assert node.jsonData() == {'text': 'a'}
>>> node = Node('a', 1) >>> assert node._items == {'text': 'a', 'children': dictobj.MutableDictionaryObject({}), 'li_attr': dictobj.DictionaryObject({'id': 1}), 'id': 1} >>> assert node.jsonData() == {'text': 'a', 'id': 1, 'li_attr': {'id': 1}}
>>> node = Node('a', 5, icon="folder", state = {'opened': True}) >>> assert node._items == {'text': 'a', 'id': 5, 'state': dictobj.DictionaryObject({'opened': True}), 'children': dictobj.MutableDictionaryObject({}), 'li_attr': dictobj.DictionaryObject({'id': 5}), 'icon': 'folder'} >>> assert node.jsonData() == {'text': 'a', 'state': {'opened': True}, 'id': 5, 'li_attr': {'id': 5}, 'icon': 'folder'}
-
-
class
galaxy.util.jstree.
JSTree
(paths, **kwargs)[source]¶ Bases:
dictobj.DictionaryObject
An immutable dictionary-like object that converts a list of “paths” into a tree structure suitable for jQuery’s jsTree.
-
__init__
(paths, **kwargs)[source]¶ Take a list of paths and put them into a tree. Paths with the same prefix should be at the same level in the tree.
kwargs may be standard jsTree options used at all levels in the tree. These will be outputted in the JSON.
-
galaxy.util.lazy_process module¶
-
class
galaxy.util.lazy_process.
LazyProcess
(command_and_args)[source]¶ Bases:
object
Abstraction describing a command line launching a service - probably as needed as functionality is accessed in Galaxy.
-
property
running
¶
-
property
galaxy.util.monitors module¶
galaxy.util.object_wrapper module¶
Classes for wrapping Objects and Sanitizing string output.
-
galaxy.util.object_wrapper.
sanitize_lists_to_string
(values, valid_characters={' ', '!', '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', '=', '?', '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '^', '_', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}, character_map={'\t': '__tc__', '\n': '__cn__', '\r': '__cr__', '"': '__dq__', '#': '__pd__', "'": '__sq__', '<': '__lt__', '>': '__gt__', '[': '__ob__', ']': '__cb__', '{': '__oc__', '}': '__cc__'}, invalid_character='X')[source]¶
-
galaxy.util.object_wrapper.
wrap_with_safe_string
(value, no_wrap_classes=None)[source]¶ Recursively wrap values that should be wrapped.
-
class
galaxy.util.object_wrapper.
SafeStringWrapper
(*arg, **kwd)[source]¶ Bases:
object
Class that wraps and sanitizes any provided value’s attributes that will attempt to be cast into a string.
Attempts to mimic behavior of original class, including operands.
To ensure proper handling of e.g. subclass checks, the wrap_with_safe_string() method should be used.
This wrapping occurs in a recursive/parasitic fashion, as all called attributes of the originally wrapped object will also be wrapped and sanitized, unless the attribute is of a type found in __DONT_SANITIZE_TYPES__ + __DONT_WRAP_TYPES__, where e.g. ~(strings will still be sanitized, but not wrapped), and e.g. integers will have neither.
galaxy.util.odict module¶
Ordered dictionary implementation with insert functionality.
- This is only used in one specific place in the codebase:
galaxy.tools.toolbox.panel
Whenever possible the stdlib collections.OrderedDict should be used instead of this custom implementation.
-
class
galaxy.util.odict.
odict
(dict=None)[source]¶ Bases:
collections.UserDict
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/107747
This dictionary class extends UserDict to record the order in which items are added. Calling keys(), values(), items(), etc. will return results in this order.
-
popitem
() → (k, v), remove and return some (key, value) pair[source]¶ as a 2-tuple; but raise KeyError if D is empty.
-
galaxy.util.oset module¶
Ordered set implementation from https://code.activestate.com/recipes/576694/
-
class
galaxy.util.oset.
OrderedSet
(iterable=None)[source]¶ Bases:
collections.abc.MutableSet
galaxy.util.permutations module¶
There is some shared logic between matching/multiplying inputs in workflows and tools. This module is meant to capture some general permutation logic that can be applicable for both cases but will only be used in the newer tools case first.
Maybe this doesn’t make sense and maybe much of this stuff could be replaced with itertools product and permutations. These are open questions.
-
exception
galaxy.util.permutations.
InputMatchedException
(err_msg=None, type='info', **extra_error_info)[source]¶ Bases:
galaxy.exceptions.MessageException
Indicates problem matching inputs while building up inputs permutations.
galaxy.util.plugin_config module¶
-
class
galaxy.util.plugin_config.
PluginConfigSource
(type, source)¶ Bases:
tuple
-
property
source
¶ Alias for field number 1
-
property
type
¶ Alias for field number 0
-
property
-
galaxy.util.plugin_config.
plugins_dict
(module, plugin_type_identifier)[source]¶ Walk through all classes in submodules of module and find ones labelled with specified plugin_type_identifier and throw in a dictionary to allow constructions from plugins by these types later on.
galaxy.util.properties module¶
Module used to blend ini, environment, and explicit dictionary properties to determine application configuration. Some hard coded defaults for Galaxy but this should be reusable by tool shed and pulsar as well.
-
galaxy.util.properties.
find_config_file
(names, exts=None, dirs=None, include_samples=False)[source]¶ Locate a config file in multiple directories, with multiple extensions.
>>> from shutil import rmtree >>> from tempfile import mkdtemp >>> def touch(d, f): ... open(os.path.join(d, f), 'w').close() >>> def _find_config_file(*args, **kwargs): ... return find_config_file(*args, **kwargs).replace(d, '') >>> d = mkdtemp() >>> d1 = os.path.join(d, 'd1') >>> d2 = os.path.join(d, 'd2') >>> os.makedirs(d1) >>> os.makedirs(d2) >>> touch(d1, 'foo.ini') >>> touch(d1, 'foo.bar') >>> touch(d1, 'baz.ini.sample') >>> touch(d2, 'foo.yaml') >>> touch(d2, 'baz.yml') >>> _find_config_file('foo', dirs=(d1, d2)) '/d1/foo.ini' >>> _find_config_file('baz', dirs=(d1, d2)) '/d2/baz.yml' >>> _find_config_file('baz', dirs=(d1, d2), include_samples=True) '/d2/baz.yml' >>> _find_config_file('baz', dirs=(d1,), include_samples=True) '/d1/baz.ini.sample' >>> _find_config_file('foo', dirs=(d2, d1)) '/d2/foo.yaml' >>> find_config_file('quux', dirs=(d,)) >>> _find_config_file('foo', exts=('bar', 'ini'), dirs=(d1,)) '/d1/foo.bar' >>> rmtree(d)
-
galaxy.util.properties.
load_app_properties
(kwds=None, ini_file=None, ini_section=None, config_file=None, config_section=None, config_prefix='GALAXY_CONFIG_')[source]¶
-
class
galaxy.util.properties.
NicerConfigParser
(filename, *args, **kw)[source]¶ Bases:
configparser.ConfigParser
-
__init__
(filename, *args, **kw)[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
read_file
(f, source=None)¶
-
galaxy.util.renamed_temporary_file module¶
Safely write file to temporary file and then move file into place.
galaxy.util.rules_dsl module¶
-
class
galaxy.util.rules_dsl.
BaseRuleDefinition
[source]¶ Bases:
object
-
abstract property
rule_type
¶ Short string describing type of rule (plugin class) to use.
-
abstract property
-
class
galaxy.util.rules_dsl.
AddColumnMetadataRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_column_metadata'¶
-
-
class
galaxy.util.rules_dsl.
AddColumnGroupTagValueRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_column_group_tag_value'¶
-
-
class
galaxy.util.rules_dsl.
AddColumnConcatenateRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_column_concatenate'¶
-
-
class
galaxy.util.rules_dsl.
AddColumnBasenameRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_column_basename'¶
-
-
class
galaxy.util.rules_dsl.
AddColumnRegexRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_column_regex'¶
-
-
class
galaxy.util.rules_dsl.
AddColumnRownumRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_column_rownum'¶
-
-
class
galaxy.util.rules_dsl.
AddColumnValueRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_column_value'¶
-
-
class
galaxy.util.rules_dsl.
AddColumnSubstrRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_column_substr'¶
-
-
class
galaxy.util.rules_dsl.
RemoveColumnsRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'remove_columns'¶
-
-
class
galaxy.util.rules_dsl.
AddFilterRegexRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_filter_regex'¶
-
-
class
galaxy.util.rules_dsl.
AddFilterCountRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_filter_count'¶
-
-
class
galaxy.util.rules_dsl.
AddFilterEmptyRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_filter_empty'¶
-
-
class
galaxy.util.rules_dsl.
AddFilterMatchesRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_filter_matches'¶
-
-
class
galaxy.util.rules_dsl.
AddFilterCompareRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'add_filter_compare'¶
-
-
class
galaxy.util.rules_dsl.
SortRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'sort'¶
-
-
class
galaxy.util.rules_dsl.
SwapColumnsRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'swap_columns'¶
-
-
class
galaxy.util.rules_dsl.
SplitColumnsRuleDefinition
[source]¶ Bases:
galaxy.util.rules_dsl.BaseRuleDefinition
-
rule_type
= 'split_columns'¶
-
-
class
galaxy.util.rules_dsl.
RuleSet
(rule_set_as_dict)[source]¶ Bases:
object
-
property
rules
¶
-
property
has_errors
¶
-
property
mapping_as_dict
¶
-
property
identifier_columns
¶
-
property
collection_type
¶
-
property
display
¶
-
property
-
galaxy.util.rules_dsl.
rule_class
¶
galaxy.util.sanitize_html module¶
HTML Sanitizer (lists of acceptable_* ripped from feedparser)
galaxy.util.script module¶
Utilities for Galaxy scripts
galaxy.util.search module¶
-
galaxy.util.search.
parse_filters
(search_term, filters)[source]¶ Support github-like filters for narrowing the results.
Order of chunks does not matter, only recognized filter names are allowed.
- Parameters
search_term – the original search str from user input
- Returns allow_query
whoosh Query object used for filtering results of searching in index
- Returns search_term_without_filters
str that represents user’s search phrase without the filters
galaxy.util.simplegraph module¶
Fencepost-simple graph structure implementation.
-
class
galaxy.util.simplegraph.
SimpleGraphNode
(index, **data)[source]¶ Bases:
object
Node representation.
-
class
galaxy.util.simplegraph.
SimpleGraphEdge
(source_index, target_index, **data)[source]¶ Bases:
object
Edge representation.
-
class
galaxy.util.simplegraph.
SimpleGraph
(nodes=None, edges=None)[source]¶ Bases:
object
Each node is unique (by id) and stores its own index in the node list/odict. Each edge is represented as two indeces into the node list/odict. Both nodes and edges allow storing extra information if needed.
- Allows:
multiple edges between two nodes self referential edges (an edge from a node to itself)
These graphs are not specifically directed but since source and targets on the edges are listed - it could easily be used that way.
-
__init__
(nodes=None, edges=None)[source]¶ Initialize self. See help(type(self)) for accurate signature.
-
add_node
(node_id, **data)[source]¶ Adds a new node only if it doesn’t already exist. :param node_id: some unique identifier :type node_id: (hashable) :param data: any extra data that needs to be saved :type data: (variadic dictionary) :returns: the new node
-
add_edge
(source_id, target_id, **data)[source]¶ Adds a new node only if it doesn’t already exist. :param source_id: the id of the source node :type source_id: (hashable) :param target_id: the id of the target node :type target_id: (hashable) :param data: any extra data that needs to be saved for the edge :type data: (variadic dictionary) :returns: the new node
..note: that, although this will create new nodes if necessary, there’s no way to pass data to them - so if you need to assoc. more data with the nodes, use add_node first.
-
gen_node_dicts
()[source]¶ - Returns a generator that yields node dictionaries in the form:
{ ‘id’: <the nodes unique id>, ‘data’: <any additional node data> }
galaxy.util.sleeper module¶
galaxy.util.sockets module¶
galaxy.util.specs module¶
galaxy.util.sqlite module¶
galaxy.util.submodules module¶
-
galaxy.util.submodules.
import_submodules
(module, ordered=True, recursive=False)[source]¶ Import all submodules of a module
- Parameters
module (str | module) – module (package name or actual module)
ordered (bool) – Whether to order the returned modules. The default is True, and modules are returned in reverse order to allow hierarchical overrides i.e. 000_galaxy_rules.py, 100_site_rules.py, 200_instance_rules.py
recursive (bool) – Recursively returns all subpackages
- Return type
[module]
galaxy.util.template module¶
Entry point for the usage of Cheetah templating within Galaxy.
-
class
galaxy.util.template.
FixedModuleCodeCompiler
(source=None, file=None, moduleName='DynamicallyCompiledCheetahTemplate', mainClassName=None, mainMethodName=None, baseclassName=None, extraImportStatements=None, settings=None)[source]¶ Bases:
Cheetah.Compiler.ModuleCompiler
-
module_code
= None¶
-
-
galaxy.util.template.
fill_template
(template_text, context=None, retry=10, compiler_class=<class 'Cheetah.Compiler.ModuleCompiler'>, first_exception=None, futurized=False, python_template_version='3', **kwargs)[source]¶ Fill a cheetah template out for specified context.
If template_text is None, an exception will be thrown, if context is None (the default) - keyword arguments to this function will be used as the context.
galaxy.util.tool_version module¶
galaxy.util.topsort module¶
Topological sort.
- From Tim Peters, see:
http://mail.python.org/pipermail/python-list/1999-July/006660.html
topsort takes a list of pairs, where each pair (x, y) is taken to mean that x <= y wrt some abstract partial ordering. The return value is a list, representing a total ordering that respects all the input constraints. E.g.,
topsort( [(1,2), (3,3)] )
Valid topological sorts would be any of (but nothing other than)
[3, 1, 2] [1, 3, 2] [1, 2, 3]
… however this variant ensures that ‘key’ order (first element of tuple) is preserved so the following will be result returned:
[1, 3, 2]
because those are the permutations of the input elements that respect the “1 precedes 2” and “3 precedes 3” input constraints. Note that a constraint of the form (x, x) is really just a trick to make sure x appears somewhere in the output list.
If there’s a cycle in the constraints, say
topsort( [(1,2), (2,1)] )
then CycleError is raised, and the exception object supports many methods to help analyze and break the cycles. This requires a good deal more code than topsort itself!
galaxy.util.ucsc module¶
Utilities for dealing with UCSC data.
galaxy.util.validation module¶
Module for validation of incoming inputs.
TODO: Refactor BaseController references to similar methods to use this module.
galaxy.util.watcher module¶
-
galaxy.util.watcher.
get_observer_class
(config_name, config_value, default, monitor_what_str)[source]¶
-
galaxy.util.watcher.
get_watcher
(config, config_name, default='False', monitor_what_str=None, watcher_class=None, event_handler_class=None, **kwargs)[source]¶
-
class
galaxy.util.watcher.
BaseWatcher
(observer_class, even_handler_class, **kwargs)[source]¶ Bases:
object
-
class
galaxy.util.watcher.
Watcher
(observer_class, event_handler_class, **kwargs)[source]¶
galaxy.util.web_compat module¶
Work around for gross circular dependency between galaxy.util and galaxy.web_stack.
Provide a function that will delay to forking in a uwsgi environment but run immediately otherwise.
galaxy.util.xml_macros module¶
-
galaxy.util.xml_macros.
load_with_references
(path)[source]¶ Load XML documentation from file system and preprocesses XML macros.
Return the XML representation of the expanded tree and paths to referenced files that were imported (macros).
galaxy.util.yaml_util module¶
-
galaxy.util.yaml_util.
ordered_load
(stream, merge_duplicate_keys=False)[source]¶ Parse the first YAML document in a stream and produce the corresponding Python object.
If merge_duplicate_keys is True, merge the values of duplicate mapping keys into a list, as the uWSGI “dumb” YAML parser would do. Otherwise, following YAML 1.2 specification which says that “each key is unique in the association”, raise a ConstructionError exception.