diff --git a/lib/galaxy/datatypes/blast.py b/lib/galaxy/datatypes/blast.py index 90a88c08a2d..2641b392212 100644 --- a/lib/galaxy/datatypes/blast.py +++ b/lib/galaxy/datatypes/blast.py @@ -173,8 +173,7 @@ class BlastXml(GenericXml): # Enough to check and match h.close() raise ValueError( - "BLAST XML headers don't match for %s and %s - have:\n%s\n...\n\nAnd:\n%s\n...\n" - % (split_files[0], f, old_header[:300], header[:300]) + f"BLAST XML headers don't match for {split_files[0]} and {f} - have:\n{old_header[:300]}\n...\n\nAnd:\n{header[:300]}\n...\n" ) else: out.write(" \n") diff --git a/lib/galaxy/datatypes/registry.py b/lib/galaxy/datatypes/registry.py index 714dc51217f..8c14bb64d8d 100644 --- a/lib/galaxy/datatypes/registry.py +++ b/lib/galaxy/datatypes/registry.py @@ -237,8 +237,9 @@ class Registry: # Because of the way that the value of can_process_datatype was set above, we know that the value of # override is True. self.log.debug( - "Overriding conflicting datatype with extension '%s', using datatype from %s." - % (str(extension), str(config)) + "Overriding conflicting datatype with extension '%s', using datatype from %s.", + extension, + config, ) if make_subclass: datatype_class = type(datatype_class_name, (datatype_class,), {}) diff --git a/lib/galaxy/datatypes/sequence.py b/lib/galaxy/datatypes/sequence.py index d1c65eb2270..5fe01c38f9f 100644 --- a/lib/galaxy/datatypes/sequence.py +++ b/lib/galaxy/datatypes/sequence.py @@ -277,8 +277,7 @@ class Sequence(data.Text): start_chunk = -1 # extract, unzip, trim, recompress result.append( - "(dd bs=1 skip=%s count=%s if=%s 2> /dev/null )| zcat | ( tail -n +%s 2> /dev/null) | head -%s | gzip -c >> %s" - % ( + "(dd bs=1 skip={} count={} if={} 2> /dev/null )| zcat | ( tail -n +{} 2> /dev/null) | head -{} | gzip -c >> {}".format( start_copy, end_copy - start_copy, input_name, diff --git a/lib/galaxy/datatypes/spaln.py b/lib/galaxy/datatypes/spaln.py index 39e50167c17..ddd1433e8c0 100644 --- a/lib/galaxy/datatypes/spaln.py +++ b/lib/galaxy/datatypes/spaln.py @@ -71,8 +71,9 @@ class _SpalnDb(Data): opt_text = "" if composite_file.get("description"): rval.append( - '
  • %s (%s)%s
  • ' - % (fn, fn, composite_file.get("description"), opt_text) + '
  • {} ({}){}
  • '.format( + fn, fn, composite_file.get("description"), opt_text + ) ) else: rval.append(f'
  • {fn}{opt_text}
  • ') @@ -86,8 +87,7 @@ class _SpalnDb(Data): efp = dataset.extra_files_path flist = os.listdir(efp) rval = [ - "Files for Composite Dataset %s

    Composite %s contains:

      " - % (dataset.name, dataset.name) + f"Files for Composite Dataset {dataset.name}

      Composite {dataset.name} contains:

        " ] for fname in flist: sfname = os.path.split(fname)[-1] diff --git a/lib/galaxy/dependencies/pinned-lint-requirements.txt b/lib/galaxy/dependencies/pinned-lint-requirements.txt index 4869fe50282..579dfbd55cf 100644 --- a/lib/galaxy/dependencies/pinned-lint-requirements.txt +++ b/lib/galaxy/dependencies/pinned-lint-requirements.txt @@ -5,6 +5,6 @@ importlib-metadata==4.2.0 mccabe==0.7.0 pycodestyle==2.9.1 pyflakes==2.5.0 -ruff==0.0.261 +ruff==0.0.264 typing_extensions==4.5.0 zipp==3.15.0 diff --git a/lib/galaxy/jobs/__init__.py b/lib/galaxy/jobs/__init__.py index 81c96809778..69bb8eee38f 100644 --- a/lib/galaxy/jobs/__init__.py +++ b/lib/galaxy/jobs/__init__.py @@ -1887,8 +1887,9 @@ class MinimalJobWrapper(HasResourceParameters): # and when the job is recovered, it won't be found. if os.path.exists(dataset_path.real_path) and os.stat(dataset_path.real_path).st_size > 0: log.warning( - "finish(): %s not found, but %s is not empty, so it will be used instead" - % (dataset_path.false_path, dataset_path.real_path) + "finish(): %s not found, but %s is not empty, so it will be used instead", + dataset_path.false_path, + dataset_path.real_path, ) else: # Prior to fail we need to set job.state @@ -2160,8 +2161,9 @@ class MinimalJobWrapper(HasResourceParameters): ) return ( JobState.runner_states.GLOBAL_WALLTIME_REACHED, - "Job ran longer than the maximum allowed execution time (runtime: %s, limit: %s), please try different inputs or parameters" - % (str(runtime).split(".")[0], self.app.job_config.limits.walltime), + "Job ran longer than the maximum allowed execution time (runtime: {}, limit: {}), please try different inputs or parameters".format( + str(runtime).split(".")[0], self.app.job_config.limits.walltime + ), ) return None diff --git a/lib/galaxy/model/security.py b/lib/galaxy/model/security.py index fb6d6649347..24b35ba89b7 100644 --- a/lib/galaxy/model/security.py +++ b/lib/galaxy/model/security.py @@ -1342,8 +1342,7 @@ class GalaxyRBACAgent(RBACAgent): break else: raise Exception( - "Invalid class (%s) specified for target_library_item (%s)" - % (target_library_item.__class__, target_library_item.__class__.__name__) + f"Invalid class ({target_library_item.__class__}) specified for target_library_item ({target_library_item.__class__.__name__})" ) # Make sure user's private role is included private_role = self.model.security_agent.get_private_user_role(user) diff --git a/lib/galaxy/objectstore/__init__.py b/lib/galaxy/objectstore/__init__.py index 5024a9915f6..f9ab7f1cb83 100644 --- a/lib/galaxy/objectstore/__init__.py +++ b/lib/galaxy/objectstore/__init__.py @@ -960,8 +960,7 @@ class NestedObjectStore(BaseObjectStore): return store.__getattribute__(method)(obj, **kwargs) if default_is_exception: raise default( - "objectstore, _call_method failed: %s on %s, kwargs: %s" - % (method, self._repr_object_for_exception(obj), str(kwargs)) + f"objectstore, _call_method failed: {method} on {self._repr_object_for_exception(obj)}, kwargs: {kwargs}" ) else: return default @@ -1138,8 +1137,10 @@ class DistributedObjectStore(NestedObjectStore): ) else: log.debug( - "Using preferred backend '%s' for creation of %s %s" - % (object_store_id, obj.__class__.__name__, obj.id) + "Using preferred backend '%s' for creation of %s %s", + object_store_id, + obj.__class__.__name__, + obj.id, ) return self.backends[object_store_id].create(obj, **kwargs) else: @@ -1151,8 +1152,7 @@ class DistributedObjectStore(NestedObjectStore): return self.backends[object_store_id].__getattribute__(method)(obj, **kwargs) if default_is_exception: raise default( - "objectstore, _call_method failed: %s on %s, kwargs: %s" - % (method, self._repr_object_for_exception(obj), str(kwargs)) + f"objectstore, _call_method failed: {method} on {self._repr_object_for_exception(obj)}, kwargs: {kwargs}" ) else: return default @@ -1178,8 +1178,10 @@ class DistributedObjectStore(NestedObjectStore): return obj.object_store_id else: log.warning( - "The backend object store ID (%s) for %s object with ID %s is invalid" - % (obj.object_store_id, obj.__class__.__name__, obj.id) + "The backend object store ID (%s) for %s object with ID %s is invalid", + obj.object_store_id, + obj.__class__.__name__, + obj.id, ) elif self.search_for_missing: # if this instance has been switched from a non-distributed to a diff --git a/lib/galaxy/tool_shed/galaxy_install/install_manager.py b/lib/galaxy/tool_shed/galaxy_install/install_manager.py index 00bb47d3d06..4574cfe345c 100644 --- a/lib/galaxy/tool_shed/galaxy_install/install_manager.py +++ b/lib/galaxy/tool_shed/galaxy_install/install_manager.py @@ -101,10 +101,7 @@ class InstallRepositoryManager: repository_revision_dict: RepositoryMetadataInstallInfoDict = items[1] repo_info_dict: ExtraRepoInfo = items[2] else: - message = ( - "Unable to retrieve installation information from tool shed %s for revision %s of repository %s owned by %s" - % (str(tool_shed_url), str(changeset_revision), str(name), str(owner)) - ) + message = f"Unable to retrieve installation information from tool shed {tool_shed_url} for revision {changeset_revision} of repository {name} owned by {owner}" log.warning(message) raise exceptions.InternalServerError(message) # Make sure the tool shed returned everything we need for installing the repository. diff --git a/lib/galaxy/tool_shed/galaxy_install/installed_repository_manager.py b/lib/galaxy/tool_shed/galaxy_install/installed_repository_manager.py index 11a08b6d65f..d6a545290fb 100644 --- a/lib/galaxy/tool_shed/galaxy_install/installed_repository_manager.py +++ b/lib/galaxy/tool_shed/galaxy_install/installed_repository_manager.py @@ -875,14 +875,12 @@ class InstalledRepositoryManager: if new_dependency_name and new_dependency_type and new_dependency_version: # Update all attributes of the tool_dependency record in the database. log.debug( - "Updating version %s of tool dependency %s %s to have new version %s and type %s." - % ( - str(tool_dependency.version), - str(tool_dependency.type), - str(tool_dependency.name), - str(new_dependency_version), - str(new_dependency_type), - ) + "Updating version %s of tool dependency %s %s to have new version %s and type %s.", + tool_dependency.version, + tool_dependency.type, + tool_dependency.name, + new_dependency_version, + new_dependency_type, ) tool_dependency.type = new_dependency_type tool_dependency.version = new_dependency_version @@ -895,8 +893,10 @@ class InstalledRepositoryManager: # We have no new tool dependency definition based on a matching dependency name, so remove # the existing tool dependency record from the database. log.debug( - "Deleting version %s of tool dependency %s %s from the database since it is no longer defined." - % (str(tool_dependency.version), str(tool_dependency.type), str(tool_dependency.name)) + "Deleting version %s of tool dependency %s %s from the database since it is no longer defined.", + tool_dependency.version, + tool_dependency.type, + tool_dependency.name, ) context.delete(tool_dependency) context.flush() diff --git a/lib/galaxy/tool_shed/galaxy_install/metadata/installed_repository_metadata_manager.py b/lib/galaxy/tool_shed/galaxy_install/metadata/installed_repository_metadata_manager.py index 1d34325225a..be7a42256cf 100644 --- a/lib/galaxy/tool_shed/galaxy_install/metadata/installed_repository_metadata_manager.py +++ b/lib/galaxy/tool_shed/galaxy_install/metadata/installed_repository_metadata_manager.py @@ -156,8 +156,9 @@ class InstalledRepositoryMetadataManager(MetadataGenerator): unsuccessful_count += 1 else: log.debug( - "Successfully reset metadata on repository %s owned by %s" - % (str(repository.name), str(repository.owner)) + "Successfully reset metadata on repository %s owned by %s", + repository.name, + repository.owner, ) successful_count += 1 except Exception: diff --git a/lib/galaxy/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py b/lib/galaxy/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py index 9819fe44c40..c33f97d5443 100644 --- a/lib/galaxy/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py +++ b/lib/galaxy/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py @@ -234,15 +234,14 @@ class RepositoryDependencyInstallManager: install_model.ToolShedRepository.installation_status.INSTALLING_TOOL_DEPENDENCIES, install_model.ToolShedRepository.installation_status.LOADING_PROPRIETARY_DATATYPES, ]: - info_msg = ( + log.info( "Skipping installation of revision %s of repository '%s' because it was installed " - % (changeset_revision, repository_db_record.name) + "with the (possibly updated) revision %s and its current installation status is '%s'.", + changeset_revision, + repository_db_record.name, + installed_changeset_revision, + repository_db_record.status, ) - info_msg += ( - "with the (possibly updated) revision %s and its current installation status is '%s'." - % (installed_changeset_revision, repository_db_record.status) - ) - log.info(info_msg) can_update_db_record = False else: if repository_db_record.status in [ diff --git a/lib/galaxy/tool_shed/galaxy_install/tools/data_manager.py b/lib/galaxy/tool_shed/galaxy_install/tools/data_manager.py index 991fdd70a2b..866faebfb55 100644 --- a/lib/galaxy/tool_shed/galaxy_install/tools/data_manager.py +++ b/lib/galaxy/tool_shed/galaxy_install/tools/data_manager.py @@ -135,15 +135,17 @@ class DataManagerHandler: tool_dict = repository_tools_by_guid.get(tool_guid, None) if tool_dict is None: log.error( - "Data manager tool guid '%s' could not be found for '%s'. Perhaps the tool is invalid?" - % (tool_guid, data_manager_id) + "Data manager tool guid '%s' could not be found for '%s'. Perhaps the tool is invalid?", + tool_guid, + data_manager_id, ) continue tool = tool_dict.get("tool", None) if tool is None: log.error( - "Data manager tool with guid '%s' could not be found for '%s'. Perhaps the tool is invalid?" - % (tool_guid, data_manager_id) + "Data manager tool with guid '%s' could not be found for '%s'. Perhaps the tool is invalid?", + tool_guid, + data_manager_id, ) continue tool_config_filename = tool_dict.get("tool_config_filename", None) diff --git a/lib/galaxy/tool_shed/metadata/metadata_generator.py b/lib/galaxy/tool_shed/metadata/metadata_generator.py index 581b93ce525..a8025d8fd78 100644 --- a/lib/galaxy/tool_shed/metadata/metadata_generator.py +++ b/lib/galaxy/tool_shed/metadata/metadata_generator.py @@ -907,10 +907,9 @@ class MetadataGenerator: # shed may have simply been inaccessible when metadata was being generated for the # installed tool shed repository. error_message = ( - "Ignoring invalid repository dependency definition for tool shed %s, name %s, owner %s, " - % (toolshed, name, owner) + f"Ignoring invalid repository dependency definition for tool shed {toolshed}, name {name}, owner {owner}, " + f"changeset revision {changeset_revision}." ) - error_message += f"changeset revision {changeset_revision}." log.debug(error_message) is_valid = False return repository_dependency_tup, is_valid, error_message @@ -925,10 +924,9 @@ class MetadataGenerator: ) except Exception: error_message = ( - "Ignoring repository dependency definition for tool shed %s, name %s, owner %s, " - % (toolshed, name, owner) + f"Ignoring repository dependency definition for tool shed {toolshed}, name {name}, owner {owner}, " + f"changeset revision {changeset_revision} because the owner is invalid." ) - error_message += f"changeset revision {changeset_revision} because the owner is invalid." log.debug(error_message) is_valid = False return repository_dependency_tup, is_valid, error_message @@ -945,10 +943,9 @@ class MetadataGenerator: ) except Exception: error_message = ( - "Ignoring repository dependency definition for tool shed %s, name %s, owner %s, " - % (toolshed, name, owner) + f"Ignoring repository dependency definition for tool shed {toolshed}, name {name}, owner {owner}, " + f"changeset revision {changeset_revision} because the name is invalid. " ) - error_message += f"changeset revision {changeset_revision} because the name is invalid. " log.debug(error_message) is_valid = False return repository_dependency_tup, is_valid, error_message @@ -980,10 +977,7 @@ class MetadataGenerator: break if not found: error_message = ( - "Ignoring repository dependency definition for tool shed %s, name %s, owner %s, " - % (toolshed, name, owner) - ) - error_message += ( + f"Ignoring repository dependency definition for tool shed {toolshed}, name {name}, owner {owner}, " f"changeset revision {changeset_revision} because the changeset revision is invalid. " ) log.debug(error_message) @@ -993,10 +987,7 @@ class MetadataGenerator: # Repository dependencies are currently supported within a single tool shed. error_message = ( "Repository dependencies are currently supported only within the same tool shed. Ignoring " - ) - error_message += ( - "repository dependency definition for tool shed %s, name %s, owner %s, changeset revision %s. " - % (toolshed, name, owner, changeset_revision) + f"repository dependency definition for tool shed {toolshed}, name {name}, owner {owner}, changeset revision {changeset_revision}. " ) log.debug(error_message) is_valid = False diff --git a/lib/galaxy/tool_shed/util/repository_util.py b/lib/galaxy/tool_shed/util/repository_util.py index 4805767cc97..a0b1bb30962 100644 --- a/lib/galaxy/tool_shed/util/repository_util.py +++ b/lib/galaxy/tool_shed/util/repository_util.py @@ -653,8 +653,9 @@ def get_tool_shed_status_for(tool_shed_registry: Registry, repository: ToolShedR # This should handle backward compatility to the Galaxy 12/20/12 release. We used to only handle updates for an installed revision # using a boolean value. log.debug( - "Error attempting to get tool shed status for installed repository %s: %s\nAttempting older 'check_for_updates' method.\n" - % (str(repository.name), str(e)) + "Error attempting to get tool shed status for installed repository %s: %s\nAttempting older 'check_for_updates' method.\n", + repository.name, + e, ) pathspec = ["repository", "check_for_updates"] params["from_update_manager"] = True diff --git a/lib/galaxy/tool_util/deps/brew_exts.py b/lib/galaxy/tool_util/deps/brew_exts.py index 7f3c0f314f7..7e8b6799167 100755 --- a/lib/galaxy/tool_util/deps/brew_exts.py +++ b/lib/galaxy/tool_util/deps/brew_exts.py @@ -160,14 +160,14 @@ class CommandLineException(Exception): self.stdout = stdout self.stderr = stderr self.message = ( - "Failed to execute command-line %s, stderr was:\n" + "Failed to execute command-line {}, stderr was:\n" "-------->>begin stderr<<--------\n" - "%s\n" + "{}\n" "-------->>end stderr<<--------\n" "-------->>begin stdout<<--------\n" - "%s\n" + "{}\n" "-------->>end stdout<<--------\n" - ) % (command, stderr, stdout) + ).format(command, stderr, stdout) def __str__(self): return self.message diff --git a/lib/galaxy/tools/__init__.py b/lib/galaxy/tools/__init__.py index fe78ab8da28..dcc54ee9325 100644 --- a/lib/galaxy/tools/__init__.py +++ b/lib/galaxy/tools/__init__.py @@ -1608,23 +1608,19 @@ class Tool(Dictifiable): possible_cases.remove(case.value) except Exception: log.debug( - "Tool with id '%s': a when tag has been defined for '%s (%s) --> %s', but does not appear to be selectable." - % ( - self.id, - group_c.name, - group_c.test_param.name, - case.value, - ) - ) - for unspecified_case in possible_cases: - log.warning( - "Tool with id '%s': a when tag has not been defined for '%s (%s) --> %s', assuming empty inputs." - % ( + "Tool with id '%s': a when tag has been defined for '%s (%s) --> %s', but does not appear to be selectable.", self.id, group_c.name, group_c.test_param.name, - unspecified_case, + case.value, ) + for unspecified_case in possible_cases: + log.warning( + "Tool with id '%s': a when tag has not been defined for '%s (%s) --> %s', assuming empty inputs.", + self.id, + group_c.name, + group_c.test_param.name, + unspecified_case, ) case = ConditionalWhen() case.value = unspecified_case diff --git a/lib/galaxy/tools/error_reports/plugins/github.py b/lib/galaxy/tools/error_reports/plugins/github.py index 2542fde7612..06b27124e3c 100644 --- a/lib/galaxy/tools/error_reports/plugins/github.py +++ b/lib/galaxy/tools/error_reports/plugins/github.py @@ -13,7 +13,7 @@ log = logging.getLogger(__name__) class GithubPlugin(BaseGitPlugin): - """Send error report to Github.""" + """Send error report to GitHub.""" plugin_type = "github" @@ -23,7 +23,7 @@ class GithubPlugin(BaseGitPlugin): self.verbose = string_as_bool(kwargs.get("verbose", False)) self.user_submission = string_as_bool(kwargs.get("user_submission", False)) - # Github settings + # GitHub settings self.github_base_url = kwargs.get("github_base_url", "https://github.com") self.github_api_url = kwargs.get("github_api_url", "https://api.github.com") self.git_default_repo_owner = kwargs.get("github_default_repo_owner", False) @@ -46,7 +46,7 @@ class GithubPlugin(BaseGitPlugin): self.label_cache["default"] = {} self._fill_label_cache(repo, "default") except ImportError: - log.error("Please install pygithub to submit bug reports to github") + log.error("Please install pygithub to submit bug reports to GitHub") self.github = None def submit_report(self, dataset, job, tool, **kwargs): @@ -99,9 +99,8 @@ class GithubPlugin(BaseGitPlugin): else: self._append_issue(issue_cache_key, error_title, error_message) return ( - 'Submitted error report to Github. Your issue number is #%s.' - % ( + 'Submitted error report to GitHub. Your issue number is #{}.'.format( self.github_base_url, github_projecturl, self.issue_cache[issue_cache_key][error_title].number, diff --git a/lib/galaxy/tools/error_reports/plugins/gitlab.py b/lib/galaxy/tools/error_reports/plugins/gitlab.py index 881d47320c2..37315d48e2c 100644 --- a/lib/galaxy/tools/error_reports/plugins/gitlab.py +++ b/lib/galaxy/tools/error_reports/plugins/gitlab.py @@ -185,9 +185,8 @@ class GitLabPlugin(BaseGitPlugin): ) return ( - 'Submitted error report to GitLab. Your issue number is #%s.' - % ( + 'Submitted error report to GitLab. Your issue number is #{}.'.format( self.gitlab_base_url, gitlab_projecturl, self.issue_cache[issue_cache_key][error_title], diff --git a/lib/galaxy/util/commands.py b/lib/galaxy/util/commands.py index 4106c16e284..679aba33f4f 100644 --- a/lib/galaxy/util/commands.py +++ b/lib/galaxy/util/commands.py @@ -155,14 +155,14 @@ class CommandLineException(Exception): self.stderr = stderr self.returncode = returncode self.message = ( - "Failed to execute command-line %s, stderr was:\n" + "Failed to execute command-line {}, stderr was:\n" "-------->>begin stderr<<--------\n" - "%s\n" + "{}\n" "-------->>end stderr<<--------\n" "-------->>begin stdout<<--------\n" - "%s\n" + "{}\n" "-------->>end stdout<<--------\n" - ) % (command, stderr, stdout) + ).format(command, stderr, stdout) def __str__(self): """Return a verbose error message indicating the command problem.""" diff --git a/lib/galaxy/util/path/__init__.py b/lib/galaxy/util/path/__init__.py index 1ed4896e88c..a82d6619a0a 100644 --- a/lib/galaxy/util/path/__init__.py +++ b/lib/galaxy/util/path/__init__.py @@ -176,8 +176,7 @@ def safe_walk(path, allowlist=None): if allowlist and i % WALK_MAX_DIRS == 0: raise RuntimeError( - "Breaking out of walk of %r after %s iterations (most likely infinite symlink recursion) at: %r" - % (path, WALK_MAX_DIRS, dirpath) + f"Breaking out of walk of {path!r} after {WALK_MAX_DIRS} iterations (most likely infinite symlink recursion) at: {dirpath!r}" ) _prefix = partial(join, dirpath) diff --git a/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py b/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py index 859d5743f5d..75dcb3056db 100644 --- a/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py +++ b/lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py @@ -105,12 +105,10 @@ class AdminToolshed(AdminGalaxy): repository = get_installed_tool_shed_repository(trans.app, repository_id) tool_shed_url = common_util.get_tool_shed_url_from_tool_shed_registry(trans.app, str(repository.tool_shed)) if tool_shed_url is None or repository_name is None or repository_owner is None or changeset_revision is None: - message = "Unable to retrieve updated repository information from the Tool Shed because one or more of the following " - message += ( - "required parameters is None: tool_shed_url: %s, repository_name: %s, repository_owner: %s, changeset_revision: %s " - % (str(tool_shed_url), str(repository_name), str(repository_owner), str(changeset_revision)) + raise Exception( + "Unable to retrieve updated repository information from the Tool Shed because one or more of the following " + f"required parameters is None: tool_shed_url: {tool_shed_url}, repository_name: {repository_name}, repository_owner: {repository_owner}, changeset_revision: {changeset_revision} " ) - raise Exception(message) params = dict(name=str(repository_name), owner=str(repository_owner), changeset_revision=changeset_revision) pathspec = ["repository", "get_updated_repository_information"] raw_text = util.url_get( diff --git a/lib/galaxy/webapps/galaxy/controllers/dataset.py b/lib/galaxy/webapps/galaxy/controllers/dataset.py index 908436dedc5..1b596bbc5c5 100644 --- a/lib/galaxy/webapps/galaxy/controllers/dataset.py +++ b/lib/galaxy/webapps/galaxy/controllers/dataset.py @@ -1092,8 +1092,7 @@ class DatasetInterface(BaseUIController, UsesAnnotations, UsesItemRatings, UsesE if current_history in target_histories: refresh_frames = ["history"] hist_names_str = ", ".join( - '%s' - % ( + '{}'.format( url_for( controller="history", action="switch_to_history", hist_id=trans.security.encode_id(hist.id) ), diff --git a/lib/galaxy/webapps/galaxy/controllers/visualization.py b/lib/galaxy/webapps/galaxy/controllers/visualization.py index 6a06b54b9e8..6e67020b04f 100644 --- a/lib/galaxy/webapps/galaxy/controllers/visualization.py +++ b/lib/galaxy/webapps/galaxy/controllers/visualization.py @@ -476,8 +476,9 @@ class VisualizationController( # Redirect to load galaxy frames. return trans.show_ok_message( - message="""Visualization "%s" has been imported.
        You can start using this visualization or %s.""" - % (visualization.title, web.url_for("/visualizations/list"), referer_message), + message="""Visualization "{}" has been imported.
        You can start using this visualization or {}.""".format( + visualization.title, web.url_for("/visualizations/list"), referer_message + ), use_panels=True, ) diff --git a/lib/galaxy/webapps/galaxy/controllers/workflow.py b/lib/galaxy/webapps/galaxy/controllers/workflow.py index 916a0e2506c..4d48bfb5005 100644 --- a/lib/galaxy/webapps/galaxy/controllers/workflow.py +++ b/lib/galaxy/webapps/galaxy/controllers/workflow.py @@ -301,8 +301,9 @@ class WorkflowController(BaseUIController, SharableMixin, UsesStoredWorkflowMixi # Redirect to load galaxy frames. return trans.show_ok_message( - message="""Workflow "%s" has been imported.
        You can start using this workflow or %s.""" - % (stored.name, web.url_for("/workflows/list"), referer_message) + message="""Workflow "{}" has been imported.
        You can start using this workflow or {}.""".format( + stored.name, web.url_for("/workflows/list"), referer_message + ) ) @web.expose diff --git a/lib/tool_shed/dependencies/repository/relation_builder.py b/lib/tool_shed/dependencies/repository/relation_builder.py index 4fd485a497c..1f3c175e5d7 100644 --- a/lib/tool_shed/dependencies/repository/relation_builder.py +++ b/lib/tool_shed/dependencies/repository/relation_builder.py @@ -263,21 +263,28 @@ class RelationBuilder: # For backward compatibility to the 12/20/12 Galaxy release. if len(components_list) in (4, 5): rd_only_if_compiling_contained_td = "False" - message = ( + log.debug( "The revision %s defined for repository %s owned by %s is invalid, so repository " - % (str(rd_changeset_revision), str(rd_name), str(rd_owner)) + "dependencies defined for repository %s will be ignored.", + rd_changeset_revision, + rd_name, + rd_owner, + repository_name, ) - message += f"dependencies defined for repository {repository_name} will be ignored." - log.debug(message) else: repository_components_tuple = container_util.get_components_from_key(key) components_list = tool_shed.util.repository_util.extract_components_from_tuple( repository_components_tuple ) toolshed, repository_name, repository_owner, repository_changeset_revision = components_list[0:4] - message = f"The revision {rd_changeset_revision} defined for repository {rd_name} owned by {rd_owner} is invalid, " - message += f"so repository dependencies defined for repository {repository_name} will be ignored." - log.debug(message) + log.debug( + "The revision %s defined for repository %s owned by %s is invalid, " + "so repository dependencies defined for repository %s will be ignored.", + rd_changeset_revision, + rd_name, + rd_owner, + repository_name, + ) return updated_key_rd_dicts def handle_circular_repository_dependency(self, repository_key, repository_dependency): diff --git a/lib/tool_shed/grids/repository_grids.py b/lib/tool_shed/grids/repository_grids.py index 7df800a4409..a61de72dc28 100644 --- a/lib/tool_shed/grids/repository_grids.py +++ b/lib/tool_shed/grids/repository_grids.py @@ -859,14 +859,11 @@ class RepositoriesWithInvalidToolsGrid(RepositoryGrid): invalid_tools = metadata.get("invalid_tools", []) if invalid_tools: for invalid_tool_config in invalid_tools: - href_str = ( - '%s' - % ( - trans.security.encode_id(repository.id), - invalid_tool_config, - repository_metadata.changeset_revision, - invalid_tool_config, - ) + href_str = '{}'.format( + trans.security.encode_id(repository.id), + invalid_tool_config, + repository_metadata.changeset_revision, + invalid_tool_config, ) val += href_str val += "
        " @@ -1421,10 +1418,7 @@ class ValidRepositoryGrid(RepositoryGrid): rval = "
          " if repository.categories: for rca in repository.categories: - rval += ( - '
        • %s
        • ' - % (trans.security.encode_id(rca.category.id), rca.category.name) - ) + rval += f'
        • {rca.category.name}
        • ' else: rval += "
        • not set
        • " rval += "
        " diff --git a/lib/tool_shed/metadata/repository_metadata_manager.py b/lib/tool_shed/metadata/repository_metadata_manager.py index b7ab6bd8438..5a78fb6d68c 100644 --- a/lib/tool_shed/metadata/repository_metadata_manager.py +++ b/lib/tool_shed/metadata/repository_metadata_manager.py @@ -975,8 +975,9 @@ class RepositoryMetadataManager(metadata_generator.MetadataGenerator): unsuccessful_count += 1 else: log.debug( - "Successfully reset metadata on repository %s owned by %s" - % (str(repository.name), str(repository.user.username)) + "Successfully reset metadata on repository %s owned by %s", + repository.name, + repository.user.username, ) successful_count += 1 except Exception: diff --git a/lib/tool_shed/util/metadata_util.py b/lib/tool_shed/util/metadata_util.py index 629ee0ff0ae..99c221715ff 100644 --- a/lib/tool_shed/util/metadata_util.py +++ b/lib/tool_shed/util/metadata_util.py @@ -223,8 +223,9 @@ def get_repository_dependency_tups_from_repository_metadata(app, repository_meta dependency_tups.append(repository_dependency_tup) else: log.debug( - "Cannot locate repository %s owned by %s for inclusion in repository dependency tups." - % (name, owner) + "Cannot locate repository %s owned by %s for inclusion in repository dependency tups.", + name, + owner, ) return dependency_tups diff --git a/lib/tool_shed/webapp/api/repositories.py b/lib/tool_shed/webapp/api/repositories.py index fa98b680159..ab129591fa2 100644 --- a/lib/tool_shed/webapp/api/repositories.py +++ b/lib/tool_shed/webapp/api/repositories.py @@ -262,8 +262,9 @@ class RepositoriesController(BaseAPIController): return repository_dict, repository_metadata_dict, repo_info_dict else: log.debug( - "Unable to locate repository_metadata record for repository id %s and changeset_revision %s" - % (str(repository.id), str(changeset_revision)) + "Unable to locate repository_metadata record for repository id %s and changeset_revision %s", + repository.id, + changeset_revision, ) return repository_dict, {}, {} else: @@ -617,8 +618,9 @@ class RepositoriesController(BaseAPIController): encoded_id = trans.security.encode_id(repository.id) if encoded_id in encoded_ids_to_skip: log.debug( - "Skipping repository with id %s because it is in encoded_ids_to_skip %s" - % (str(repository.id), str(encoded_ids_to_skip)) + "Skipping repository with id %s because it is in encoded_ids_to_skip %s", + repository.id, + encoded_ids_to_skip, ) elif repository.type == rt_util.TOOL_DEPENDENCY_DEFINITION and repository.id not in handled_repository_ids: results = handle_repository(trans, rmm, repository, results) @@ -627,8 +629,9 @@ class RepositoriesController(BaseAPIController): encoded_id = trans.security.encode_id(repository.id) if encoded_id in encoded_ids_to_skip: log.debug( - "Skipping repository with id %s because it is in encoded_ids_to_skip %s" - % (str(repository.id), str(encoded_ids_to_skip)) + "Skipping repository with id %s because it is in encoded_ids_to_skip %s", + repository.id, + encoded_ids_to_skip, ) elif repository.type != rt_util.TOOL_DEPENDENCY_DEFINITION and repository.id not in handled_repository_ids: results = handle_repository(trans, rmm, repository, results) @@ -811,8 +814,9 @@ class RepositoriesController(BaseAPIController): return repository_metadata_dict else: log.debug( - "Unable to locate repository_metadata record for repository id %s and changeset_revision %s" - % (str(id), str(changeset)) + "Unable to locate repository_metadata record for repository id %s and changeset_revision %s", + id, + changeset, ) return {} diff --git a/lib/tool_shed/webapp/api/repository_revisions.py b/lib/tool_shed/webapp/api/repository_revisions.py index 791d94189e3..f4603a9cd27 100644 --- a/lib/tool_shed/webapp/api/repository_revisions.py +++ b/lib/tool_shed/webapp/api/repository_revisions.py @@ -199,15 +199,18 @@ class RepositoryRevisionsController(BaseAPIController): # log information when setting attributes associated with the Tool Shed's install and test framework. if key in ["includes_tools", "missing_test_components"]: log.debug( - "Setting repository_metadata column %s to value %s for changeset_revision %s via the Tool Shed API." - % (str(key), str(new_value), str(repository_metadata.changeset_revision)) + "Setting repository_metadata column %s to value %s for changeset_revision %s via the Tool Shed API.", + key, + new_value, + repository_metadata.changeset_revision, ) setattr(repository_metadata, key, new_value) flush_needed = True if flush_needed: log.debug( - "Updating repository_metadata record with id %s and changeset_revision %s." - % (str(decoded_repository_metadata_id), str(repository_metadata.changeset_revision)) + "Updating repository_metadata record with id %s and changeset_revision %s.", + decoded_repository_metadata_id, + repository_metadata.changeset_revision, ) trans.sa_session.add(repository_metadata) trans.sa_session.flush() diff --git a/lib/tool_shed/webapp/controllers/repository.py b/lib/tool_shed/webapp/controllers/repository.py index 310c87d3993..d711d9361dc 100644 --- a/lib/tool_shed/webapp/controllers/repository.py +++ b/lib/tool_shed/webapp/controllers/repository.py @@ -994,14 +994,13 @@ class RepositoryController(BaseUIController, ratings_util.ItemRatings): self.install_matched_repository_grid.operations = operations return self.install_matched_repository_grid(trans, **kwd) else: - kwd["message"] = ( - "tool id: %s
        tool name: %s
        tool version: %s
        exact matches only: %s" - % ( - basic_util.stringify(tool_ids), - escape(basic_util.stringify(tool_names)), - escape(basic_util.stringify(tool_versions)), - str(exact_matches_checked), - ) + kwd[ + "message" + ] = "tool id: {}
        tool name: {}
        tool version: {}
        exact matches only: {}".format( + basic_util.stringify(tool_ids), + escape(basic_util.stringify(tool_names)), + escape(basic_util.stringify(tool_versions)), + exact_matches_checked, ) self.matched_repository_grid.title = "Repositories with matching tools" return self.matched_repository_grid(trans, **kwd) @@ -2292,8 +2291,9 @@ class RepositoryController(BaseUIController, ratings_util.ItemRatings): return trans.response.send_redirect(web.url_for(controller="repository", action="index", user_id=user_id)) else: return trans.show_error_message( - "The tool shed %s contains no repositories owned by %s." - % (web.url_for("/", qualified=True).rstrip("/"), str(owner)) + "The tool shed {} contains no repositories owned by {}.".format( + web.url_for("/", qualified=True).rstrip("/"), owner + ) ) @web.expose @@ -2316,7 +2316,9 @@ class RepositoryController(BaseUIController, ratings_util.ItemRatings): user = None if user: user_id = trans.security.encode_id(user.id) - message = f"This list of repositories owned by {str(owner)}, does not include one named {str(name)}." + message = ( + f"This list of repositories owned by {owner}, does not include one named {name}." + ) return trans.response.send_redirect( web.url_for( controller="repository", action="index", user_id=user_id, message=message, status="error" @@ -2324,8 +2326,9 @@ class RepositoryController(BaseUIController, ratings_util.ItemRatings): ) else: return trans.show_error_message( - "The tool shed %s contains no repositories named %s with owner %s." - % (web.url_for("/", qualified=True).rstrip("/"), str(name), str(owner)) + "The tool shed {} contains no repositories named {} with owner {}.".format( + web.url_for("/", qualified=True).rstrip("/"), name, owner + ) ) @web.expose @@ -2360,10 +2363,7 @@ class RepositoryController(BaseUIController, ratings_util.ItemRatings): ) ) else: - message = ( - "The change log for the repository named %s owned by %s does not include revision %s." - % (escape(str(name)), escape(str(owner)), escape(str(changeset_revision))) - ) + message = f"The change log for the repository named {escape(str(name))} owned by {escape(str(owner))} does not include revision {escape(str(changeset_revision))}." return trans.response.send_redirect( web.url_for( controller="repository", diff --git a/lib/tool_shed/webapp/framework/decorators.py b/lib/tool_shed/webapp/framework/decorators.py index c66ed2a55b9..d0a4592a243 100644 --- a/lib/tool_shed/webapp/framework/decorators.py +++ b/lib/tool_shed/webapp/framework/decorators.py @@ -14,8 +14,9 @@ def require_login(verb="perform this action", use_panels=False): return func(self, trans, *args, **kwargs) else: return trans.show_error_message( - 'You must be logged in to %s.' - % (url_for(controller="user", action="login"), verb), + 'You must be logged in to {}.'.format( + url_for(controller="user", action="login"), verb + ), use_panels=use_panels, ) diff --git a/lib/tool_shed/webapp/model/__init__.py b/lib/tool_shed/webapp/model/__init__.py index b45b802686c..1a6761156dd 100644 --- a/lib/tool_shed/webapp/model/__init__.py +++ b/lib/tool_shed/webapp/model/__init__.py @@ -438,8 +438,7 @@ class Repository(Base, Dictifiable): if str(role.name) == admin_role_name: return role raise Exception( - "Repository %s owned by %s is not associated with a required administrative role." - % (str(self.name), str(self.user.username)) + f"Repository {self.name} owned by {self.user.username} is not associated with a required administrative role." ) def allow_push(self):