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.

Source code for galaxy.tool_util.linters.help

"""This module contains a linting function for a tool's help."""

from typing import Union

from galaxy.util import (
    rst_to_html,
    unicodify,
)


[docs]def lint_help(tool_xml, lint_ctx): """Ensure tool contains exactly one valid RST help block.""" # determine node to report for general problems with help root = tool_xml.find("./help") if root is None: root = tool_xml.getroot() helps = tool_xml.findall("./help") if len(helps) > 1: lint_ctx.error("More than one help section found, behavior undefined.", node=helps[1]) return if len(helps) == 0: lint_ctx.warn("No help section found, consider adding a help section to your tool.", node=root) return help_text = helps[0].text or "" if not help_text.strip(): lint_ctx.warn("Help section appears to be empty.", node=helps[0]) return lint_ctx.valid("Tool contains help section.", node=helps[0]) if "TODO" in help_text: lint_ctx.warn("Help contains TODO text.", node=helps[0]) invalid_rst = rst_invalid(help_text) if invalid_rst: lint_ctx.warn(f"Invalid reStructuredText found in help - [{invalid_rst}].", node=helps[0]) else: lint_ctx.valid("Help contains valid reStructuredText.", node=helps[0])
[docs]def rst_invalid(text: str) -> Union[bool, str]: """ Predicate to determine if text is invalid reStructuredText. Return False if the supplied text is valid reStructuredText or a string indicating the problem. """ invalid_rst: Union[bool, str] = False try: rst_to_html(text, error=True) except Exception as e: invalid_rst = unicodify(e) return invalid_rst