Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/ephemeris/shed_tools_methods.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
| author | shellac |
|---|---|
| date | Mon, 01 Jun 2020 08:59:25 -0400 |
| parents | 79f47841a781 |
| children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/ephemeris/shed_tools_methods.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ -from bioblend.toolshed import ToolShedInstance - - -VALID_KEYS = [ - "name", - "owner", - "changeset_revision", - "tool_panel_section_id", - "tool_panel_section_label", - "tool_shed_url", - "install_repository_dependencies", - "install_resolver_dependencies", - "install_tool_dependencies" -] - - -def complete_repo_information(tool, - default_toolshed_url, - require_tool_panel_info, - default_install_tool_dependencies, - default_install_repository_dependencies, - default_install_resolver_dependencies, - force_latest_revision): - repo = dict() - # We need those values. Throw a KeyError when not present - repo['name'] = tool['name'] - repo['owner'] = tool['owner'] - repo['tool_panel_section_id'] = tool.get('tool_panel_section_id') - repo['tool_panel_section_label'] = tool.get('tool_panel_section_label') - if require_tool_panel_info and repo['tool_panel_section_id'] is None and repo[ - 'tool_panel_section_label'] is None and 'data_manager' not in repo.get('name'): - raise KeyError("Either tool_panel_section_id or tool_panel_section_name must be defined for tool '{0}'.".format( - repo.get('name'))) - repo['tool_shed_url'] = format_tool_shed_url(tool.get('tool_shed_url', default_toolshed_url)) - repo['changeset_revision'] = tool.get('changeset_revision') - repo = get_changeset_revisions(repo, force_latest_revision) - repo['install_repository_dependencies'] = tool.get('install_repository_dependencies', - default_install_repository_dependencies) - repo['install_resolver_dependencies'] = tool.get('install_resolver_dependencies', - default_install_resolver_dependencies) - repo['install_tool_dependencies'] = tool.get('install_tool_dependencies', default_install_tool_dependencies) - return repo - - -def format_tool_shed_url(tool_shed_url): - formatted_tool_shed_url = tool_shed_url - if not formatted_tool_shed_url.endswith('/'): - formatted_tool_shed_url += '/' - if not formatted_tool_shed_url.startswith('http'): - formatted_tool_shed_url = 'https://' + formatted_tool_shed_url - return formatted_tool_shed_url - - -def get_changeset_revisions(repository, force_latest_revision=False): - """ - Select the correct changeset revision for a repository, - and make sure the repository exists - (i.e a request to the tool shed with name and owner returns a list of revisions). - Return repository or None, if the repository could not be found on the specified tool shed. - """ - # Do not connect to the internet when not necessary - if repository.get('changeset_revision') is None or force_latest_revision: - ts = ToolShedInstance(url=repository['tool_shed_url']) - # Get the set revision or set it to the latest installable revision - installable_revisions = ts.repositories.get_ordered_installable_revisions(repository['name'], - repository['owner']) - if not installable_revisions: # - raise LookupError("Repo does not exist in tool shed: {0}".format(repository)) - repository['changeset_revision'] = installable_revisions[-1] - - return repository - - -def flatten_repo_info(repositories): - """ - Flatten the dict containing info about what tools to install. - The tool definition YAML file allows multiple revisions to be listed for - the same tool. To enable simple, iterative processing of the info in this - script, flatten the `tools_info` list to include one entry per tool revision. - - :type repositories: list of dicts - :param repositories: Each dict in this list should contain info about a tool. - :rtype: list of dicts - :return: Return a list of dicts that correspond to the input argument such - that if an input element contained `revisions` key with multiple - values, those will be returned as separate list items. - """ - - flattened_list = [] - for repo_info in repositories: - new_repo_info = dict() - for key, value in repo_info.items(): - if key in VALID_KEYS: - new_repo_info[key] = value - if 'revisions' in repo_info: - revisions = repo_info.get('revisions', []) - if not revisions: # Revisions are empty list or None - flattened_list.append(new_repo_info) - else: - for revision in revisions: - # A new dictionary must be created, otherwise there will - # be aliasing of dictionaries. Which leads to multiple - # repos with the same revision in the end result. - new_revision_dict = dict(**new_repo_info) - new_revision_dict['changeset_revision'] = revision - flattened_list.append(new_revision_dict) - else: # Revision was not defined at all - flattened_list.append(new_repo_info) - return flattened_list
