galaxy.tool_util.verify package
Module of utilities for verifying test results.
- galaxy.tool_util.verify.verify(item_label: str, output_content: bytes, attributes: Dict[str, Any] | None, filename: str | None = None, get_filecontent: Callable[[str], bytes] | None = None, get_filename: Callable[[str], str] | None = None, keep_outputs_dir: str | None = None, verify_extra_files: Callable | None = None, mode='file')[source]
Verify the content of a test output using test definitions described by attributes.
Throw an informative assertion error if any of these tests fail.
- galaxy.tool_util.verify.make_temp_fname(fname=None)[source]
Safe temp name - preserve the file extension for tools that interpret it.
- galaxy.tool_util.verify.files_delta(file1, file2, attributes=None)[source]
Check the contents of 2 files for size differences.
- galaxy.tool_util.verify.files_diff(file1, file2, attributes=None)[source]
Check the contents of 2 files for differences.
- galaxy.tool_util.verify.files_re_match(file1, file2, attributes=None)[source]
Check the contents of 2 files for differences using re.match.
- galaxy.tool_util.verify.files_re_match_multiline(file1, file2, attributes=None)[source]
Check the contents of 2 files for differences using re.match in multiline mode.
- galaxy.tool_util.verify.files_contains(file1, file2, attributes=None)[source]
Check the contents of file2 for substrings found in file1, on a per-line basis.
- galaxy.tool_util.verify.intersection_over_union(mask1: numpy.typing.NDArray, mask2: numpy.typing.NDArray, pin_labels: List[int] | None = None) numpy.floating [source]
Compute the intersection over union (IoU) for the objects in two masks containing lables.
The IoU is computed for each uniquely labeled image region (object), and the overall minimum value is returned (i.e. the worst value). To compute the IoU for each object, the corresponding object in the other mask needs to be determined. The object correspondences are not necessarily symmetric.
By default, the corresponding object in the other mask is determined as the one with the largest IoU value. If the label of an object is listed in pin_labels, then the corresponding object in the other mask is determined as the object with the same label value. Objects with labels listed in pin_labels also cannot correspond to objects with different labels. This is particularly useful when specific image regions must always be labeled with a designated label value (e.g., the image background is often labeled with 0 or -1).
- galaxy.tool_util.verify.get_image_metric(attributes: Dict[str, Any]) Callable[[numpy.typing.NDArray, numpy.typing.NDArray], numpy.floating] [source]
- galaxy.tool_util.verify.files_image_diff(file1: str, file2: str, attributes: Dict[str, Any] | None = None) None [source]
Check the pixel data of 2 image files for differences.
Subpackages
- galaxy.tool_util.verify.asserts package
verify_assertions()
verify_assertion()
- Submodules
- galaxy.tool_util.verify.asserts.archive module
- galaxy.tool_util.verify.asserts.hdf5 module
- galaxy.tool_util.verify.asserts.size module
- galaxy.tool_util.verify.asserts.tabular module
- galaxy.tool_util.verify.asserts.text module
- galaxy.tool_util.verify.asserts.xml module
Submodules
galaxy.tool_util.verify.interactor module
- class galaxy.tool_util.verify.interactor.OutputsDict[source]
Bases:
dict
Ordered dict that can also be accessed by index.
>>> out = OutputsDict() >>> out['item1'] = 1 >>> out['item2'] = 2 >>> out[1] == 2 == out['item2'] True
- class galaxy.tool_util.verify.interactor.ValidToolTestDict[source]
Bases:
TypedDict
- stdout: typing_extensions.NotRequired[List[AssertionDict] | None]
- stderr: typing_extensions.NotRequired[List[AssertionDict] | None]
- command_line: typing_extensions.NotRequired[List[AssertionDict] | None]
- command_version: typing_extensions.NotRequired[List[AssertionDict] | None]
- error: typing_extensions.Literal[False]
- class galaxy.tool_util.verify.interactor.InvalidToolTestDict[source]
Bases:
TypedDict
- error: typing_extensions.Literal[True]
- galaxy.tool_util.verify.interactor.stage_data_in_history(galaxy_interactor: GalaxyInteractorApi, tool_id: str, all_test_data, history=None, force_path_paste=False, maxseconds=86400, tool_version=None)[source]
- class galaxy.tool_util.verify.interactor.RunToolResponse(inputs, outputs, output_collections, jobs)[source]
Bases:
tuple
- outputs: OutputsDict
Alias for field number 1
- class galaxy.tool_util.verify.interactor.GalaxyInteractorApi(**kwds)[source]
Bases:
object
- cookies: RequestsCookieJar | None
- property target_galaxy_version
- property supports_test_data_download
- get_tool_tests(tool_id: str, tool_version: str | None = None) List[ValidToolTestDict | InvalidToolTestDict] [source]
- verify_output_collection(output_collection_def, output_collection_id, history, tool_id, tool_version=None)[source]
- verify_output(history_id, jobs, output_data, output_testdef, tool_id, maxseconds, tool_version=None)[source]
- test_history(require_new: bool = True, cleanup_callback: Callable[[str], None] | None = None) Generator[str, None, None] [source]
- stage_data_async(test_data: Dict[str, Any], history_id: str, tool_id: str, force_path_paste: bool = False, maxseconds: int = 86400, tool_version: str | None = None) Callable[[], None] [source]
- run_tool(testdef, history_id, resource_parameters=None) RunToolResponse [source]
- galaxy.tool_util.verify.interactor.prepare_request_params(data: Dict[str, Any] | None = None, files: Dict[str, Any] | None = None, as_json: bool = False, params: Dict[str, Any] | None = None, headers: Dict[str, str | None] | None = None, cookies: RequestsCookieJar | None = None) Dict[str, Any] [source]
- galaxy.tool_util.verify.interactor.ensure_tool_run_response_okay(submit_response_object, request_desc, inputs=None)[source]
- exception galaxy.tool_util.verify.interactor.RunToolException(message, inputs=None, dynamic_param_error=False)[source]
Bases:
Exception
- galaxy.tool_util.verify.interactor.verify_hid(filename: str | None, hda_id: str, attributes: Dict[str, Any], test_data_downloader, dataset_fetcher=None, keep_outputs_dir: str | None = None)[source]
- galaxy.tool_util.verify.interactor.verify_collection(output_collection_def, data_collection, verify_dataset)[source]
- class galaxy.tool_util.verify.interactor.TestConfig(*args, **kwargs)[source]
Bases:
Protocol
- __init__(*args, **kwargs)
- class galaxy.tool_util.verify.interactor.NullClientTestConfig(*args, **kwargs)[source]
Bases:
TestConfig
- class galaxy.tool_util.verify.interactor.DictClientTestConfig(tools)[source]
Bases:
TestConfig
- galaxy.tool_util.verify.interactor.verify_tool(tool_id: str, galaxy_interactor: GalaxyInteractorApi, resource_parameters: Dict[str, Any] | None = None, register_job_data: Callable[[Dict[str, Any]], None] | None = None, test_index: int = 0, tool_version: str | None = None, quiet: bool = False, test_history: str | None = None, no_history_cleanup: bool = False, publish_history: bool = False, force_path_paste: bool = False, maxseconds: int = 86400, client_test_config: TestConfig | None = None, skip_with_reference_data: bool = False, skip_on_dynamic_param_errors: bool = False, _tool_test_dicts: List[ValidToolTestDict | InvalidToolTestDict] | None = None)[source]
- exception galaxy.tool_util.verify.interactor.JobOutputsError(output_exceptions, job_stdio)[source]
Bases:
AssertionError
- class galaxy.tool_util.verify.interactor.ToolTestDescriptionDict[source]
Bases:
TypedDict
- stdout: List[AssertionDict] | None
- stderr: List[AssertionDict] | None
- command_line: List[AssertionDict] | None
- command_version: List[AssertionDict] | None
- class galaxy.tool_util.verify.interactor.ToolTestDescription(processed_test_dict: ValidToolTestDict | InvalidToolTestDict)[source]
Bases:
object
Encapsulates information about a tool test, and allows creation of a dynamic TestCase class (the unittest framework is very class oriented, doing dynamic tests in this way allows better integration)
- __init__(processed_test_dict: ValidToolTestDict | InvalidToolTestDict)[source]
- command_line: List[AssertionDict] | None
- command_version: List[AssertionDict] | None
- stdout: List[AssertionDict] | None
- stderr: List[AssertionDict] | None
- to_dict() ToolTestDescriptionDict [source]
galaxy.tool_util.verify.script module
- class galaxy.tool_util.verify.script.TestReference(tool_id, tool_version, test_index)[source]
Bases:
tuple
- class galaxy.tool_util.verify.script.TestException(tool_id, exception, was_recorded)[source]
Bases:
tuple
- class galaxy.tool_util.verify.script.Results(default_suitename: str, test_json: str, append: bool = False, galaxy_url: str | None = None)[source]
Bases:
object
- __init__(default_suitename: str, test_json: str, append: bool = False, galaxy_url: str | None = None) None [source]
- test_exceptions: List[TestException]
- register_exception(test_exception: TestException) None [source]
- already_successful(test_reference: TestReference) bool [source]
- already_executed(test_reference: TestReference) bool [source]
- galaxy.tool_util.verify.script.test_tools(galaxy_interactor: GalaxyInteractorApi, test_references: List[TestReference], results: Results, log: Logger | None = None, parallel_tests: int = 1, history_per_test_case: bool = False, history_name: str | None = None, no_history_reuse: bool = False, no_history_cleanup: bool = False, publish_history: bool = False, retries: int = 0, verify_kwds: Dict[str, Any] | None = None) None [source]
Run through tool tests and write report.
- galaxy.tool_util.verify.script.build_case_references(galaxy_interactor: GalaxyInteractorApi, tool_id: str = '*', tool_version: str | None = None, test_index: int = -1, page_size: int = 0, page_number: int = 0, test_filters: List[Callable[[TestReference], bool]] | None = None, log: Logger | None = None) List[TestReference] [source]
- galaxy.tool_util.verify.script.run_tests(args: Namespace, test_filters: List[Callable[[TestReference], bool]] | None = None, log: Logger | None = None) None [source]
- galaxy.tool_util.verify.script.setup_global_logger(name: str, log_file: str | None = None, verbose: bool = False) Logger [source]
- galaxy.tool_util.verify.script.arg_parser() ArgumentParser [source]
galaxy.tool_util.verify.test_data module
- class galaxy.tool_util.verify.test_data.TestDataResolver(file_dirs=None, env_var='GALAXY_TEST_FILE_DIR', environ=environ({'JAVA_HOME': '/usr/lib/jvm/temurin-17-jdk-amd64', 'GHCUP_INSTALL_BASE_PREFIX': '/usr/local', 'MEMORY_PRESSURE_WRITE': 'c29tZSAyMDAwMDAgMjAwMDAwMAA=', 'RUNNER_NAME': 'GitHub Actions 57', 'GITHUB_REF_NAME': 'master', 'ACCEPT_EULA': 'Y', 'DOTNET_SKIP_FIRST_TIME_EXPERIENCE': '1', 'GITHUB_ENV': '/home/runner/work/_temp/_runner_file_commands/set_env_36d13466-2b70-4dd2-b487-6bb223dc930e', 'STATS_RDCL': 'true', 'GITHUB_REPOSITORY_ID': '31211061', 'RUNNER_TRACKING_ID': 'github_b29cbfca-bea1-4191-8ce0-bac31872ca2e', 'GITHUB_REPOSITORY_OWNER': 'galaxyproject', 'NVM_DIR': '/home/runner/.nvm', 'JAVA_HOME_17_X64': '/usr/lib/jvm/temurin-17-jdk-amd64', 'GITHUB_EVENT_NAME': 'push', 'SGX_AESM_ADDR': '1', 'PWD': '/home/runner/work/galaxy/galaxy', 'GITHUB_ACTION_REPOSITORY': '', 'RUNNER_WORKSPACE': '/home/runner/work/galaxy', 'GITHUB_WORKFLOW_SHA': '1bf1d59b8b61c803c86abb95654f71c09889db91', 'RUNNER_OS': 'Linux', 'EDGEWEBDRIVER': '/usr/local/share/edge_driver', 'CI': 'true', 'LANG': 'C.UTF-8', 'RUNNER_TEMP': '/home/runner/work/_temp', 'GITHUB_SERVER_URL': 'https://github.com', 'STATS_TRP': 'true', 'PERFLOG_LOCATION_SETTING': 'RUNNER_PERFLOG', 'RUNNER_USER': 'runner', 'GITHUB_API_URL': 'https://api.github.com', 'MEMORY_PRESSURE_WATCH': '/sys/fs/cgroup/system.slice/runner-provisioner.service/memory.pressure', 'MAKEFLAGS': 'w', 'CHROME_BIN': '/usr/bin/google-chrome', 'PKG_CONFIG_PATH': '/opt/hostedtoolcache/Python/3.8.18/x64/lib/pkgconfig', 'Python2_ROOT_DIR': '/opt/hostedtoolcache/Python/3.8.18/x64', 'GITHUB_SHA': '1bf1d59b8b61c803c86abb95654f71c09889db91', 'ANDROID_NDK_HOME': '/usr/local/lib/android/sdk/ndk/27.2.12479018', 'STATS_PIP': 'false', 'GITHUB_ACTOR_ID': '4924623', 'POWERSHELL_DISTRIBUTION_CHANNEL': 'GitHub-Actions-ubuntu24', 'SELENIUM_JAR_PATH': '/usr/share/java/selenium-server.jar', 'GOROOT_1_21_X64': '/opt/hostedtoolcache/go/1.21.13/x64', 'pythonLocation': '/opt/hostedtoolcache/Python/3.8.18/x64', 'MFLAGS': '-w', 'ANDROID_NDK_LATEST_HOME': '/usr/local/lib/android/sdk/ndk/27.2.12479018', 'GOROOT_1_23_X64': '/opt/hostedtoolcache/go/1.23.4/x64', 'STATS_EXT': 'true', 'BOOTSTRAP_HASKELL_NONINTERACTIVE': '1', 'JAVA_HOME_8_X64': '/usr/lib/jvm/temurin-8-jdk-amd64', 'PIPX_HOME': '/opt/pipx', 'STATS_TIS': 'mining', 'GITHUB_RUN_ATTEMPT': '1', 'RUNNER_PERFLOG': '/home/runner/perflog', 'GITHUB_TRIGGERING_ACTOR': 'nsoranzo', 'DOTNET_NOLOGO': '1', 'DOTNET_MULTILEVEL_LOOKUP': '0', 'JAVA_HOME_11_X64': '/usr/lib/jvm/temurin-11-jdk-amd64', 'GITHUB_REF': 'refs/heads/master', 'GITHUB_RUN_NUMBER': '25732', 'Python3_ROOT_DIR': '/opt/hostedtoolcache/Python/3.8.18/x64', 'ANDROID_SDK_ROOT': '/usr/local/lib/android/sdk', 'GITHUB_JOB': 'build', 'ANDROID_HOME': '/usr/local/lib/android/sdk', 'LD_LIBRARY_PATH': '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pylibmagic:/opt/hostedtoolcache/Python/3.8.18/x64/lib', 'GITHUB_STATE': '/home/runner/work/_temp/_runner_file_commands/save_state_36d13466-2b70-4dd2-b487-6bb223dc930e', 'SHLVL': '1', 'ANDROID_NDK': '/usr/local/lib/android/sdk/ndk/27.2.12479018', 'ImageVersion': '20241208.1.0', 'PATH': '/opt/hostedtoolcache/Python/3.8.18/x64/bin:/opt/hostedtoolcache/Python/3.8.18/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin', 'GITHUB_EVENT_PATH': '/home/runner/work/_temp/_github_workflow/event.json', 'STATS_D': 'false', 'STATS_D_D': 'false', 'STATS_UE': 'true', 'GRADLE_HOME': '/usr/share/gradle-8.11.1', 'GITHUB_RETENTION_DAYS': '90', 'INVOCATION_ID': 'e377a192c3034083be1383eebaed075e', 'XDG_CONFIG_HOME': '/home/runner/.config', 'GITHUB_ACTIONS': 'true', 'GITHUB_WORKFLOW_REF': 'galaxyproject/galaxy/.github/workflows/docs.yaml@refs/heads/master', 'CONDA': '/usr/share/miniconda', 'GITHUB_HEAD_REF': '', 'STATS_EXTP': 'https://provjobdprod.z13.web.core.windows.net/settings/provjobdsettings-latest/provjobd.data', 'CHROMEWEBDRIVER': '/usr/local/share/chromedriver-linux64', 'PIPX_BIN_DIR': '/opt/pipx_bin', 'GITHUB_REF_PROTECTED': 'true', 'DEPLOYMENT_BASEPATH': '/opt/runner', 'GITHUB_REF_TYPE': 'branch', 'GECKOWEBDRIVER': '/usr/local/share/gecko_driver', 'SYSTEMD_EXEC_PID': '836', 'GITHUB_ACTION_REF': '', 'GITHUB_WORKSPACE': '/home/runner/work/galaxy/galaxy', 'USER': 'runner', 'SWIFT_PATH': '/usr/share/swift/usr/bin', 'STATS_VMD': 'true', 'GITHUB_STEP_SUMMARY': '/home/runner/work/_temp/_runner_file_commands/step_summary_36d13466-2b70-4dd2-b487-6bb223dc930e', 'RUNNER_ARCH': 'X64', 'GITHUB_PATH': '/home/runner/work/_temp/_runner_file_commands/add_path_36d13466-2b70-4dd2-b487-6bb223dc930e', 'RUNNER_TOOL_CACHE': '/opt/hostedtoolcache', '_': '/usr/bin/make', 'ANDROID_NDK_ROOT': '/usr/local/lib/android/sdk/ndk/27.2.12479018', 'XDG_RUNTIME_DIR': '/run/user/1001', 'AGENT_TOOLSDIRECTORY': '/opt/hostedtoolcache', 'GITHUB_REPOSITORY': 'galaxyproject/galaxy', 'VCPKG_INSTALLATION_ROOT': '/usr/local/share/vcpkg', 'JOURNAL_STREAM': '8:8221', 'GITHUB_ACTION': '__run_8', 'DEBIAN_FRONTEND': 'noninteractive', 'HOME': '/home/runner', 'GITHUB_GRAPHQL_URL': 'https://api.github.com/graphql', 'GITHUB_WORKFLOW': 'Build docs', 'GITHUB_RUN_ID': '12374100697', 'HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS': '3650', 'GITHUB_ACTOR': 'nsoranzo', 'ANT_HOME': '/usr/share/ant', 'ImageOS': 'ubuntu24', 'Python_ROOT_DIR': '/opt/hostedtoolcache/Python/3.8.18/x64', 'ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE': '/opt/actionarchivecache', 'TARGET_BRANCH': 'master', 'GITHUB_OUTPUT': '/home/runner/work/_temp/_runner_file_commands/set_output_36d13466-2b70-4dd2-b487-6bb223dc930e', 'GITHUB_BASE_REF': '', 'STATS_V3PS': 'true', 'GITHUB_REPOSITORY_OWNER_ID': '7937847', 'GOROOT_1_22_X64': '/opt/hostedtoolcache/go/1.22.10/x64', 'STATS_D_TC': 'true', 'AZURE_EXTENSION_DIR': '/opt/az/azcliextensions', 'RUNNER_ENVIRONMENT': 'github-hosted', 'STATS_VMFE': 'true', 'HOMEBREW_NO_AUTO_UPDATE': '1', 'JAVA_HOME_21_X64': '/usr/lib/jvm/temurin-21-jdk-amd64', 'MAKELEVEL': '2', 'DOCUTILSCONFIG': '/home/runner/work/galaxy/galaxy/doc/source/docutils.conf', 'LIBRARY_PATH': '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pylibmagic:', 'MAGIC': '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pylibmagic/magic.mgc:'}))[source]
Bases:
object
- __init__(file_dirs=None, env_var='GALAXY_TEST_FILE_DIR', environ=environ({'JAVA_HOME': '/usr/lib/jvm/temurin-17-jdk-amd64', 'GHCUP_INSTALL_BASE_PREFIX': '/usr/local', 'MEMORY_PRESSURE_WRITE': 'c29tZSAyMDAwMDAgMjAwMDAwMAA=', 'RUNNER_NAME': 'GitHub Actions 57', 'GITHUB_REF_NAME': 'master', 'ACCEPT_EULA': 'Y', 'DOTNET_SKIP_FIRST_TIME_EXPERIENCE': '1', 'GITHUB_ENV': '/home/runner/work/_temp/_runner_file_commands/set_env_36d13466-2b70-4dd2-b487-6bb223dc930e', 'STATS_RDCL': 'true', 'GITHUB_REPOSITORY_ID': '31211061', 'RUNNER_TRACKING_ID': 'github_b29cbfca-bea1-4191-8ce0-bac31872ca2e', 'GITHUB_REPOSITORY_OWNER': 'galaxyproject', 'NVM_DIR': '/home/runner/.nvm', 'JAVA_HOME_17_X64': '/usr/lib/jvm/temurin-17-jdk-amd64', 'GITHUB_EVENT_NAME': 'push', 'SGX_AESM_ADDR': '1', 'PWD': '/home/runner/work/galaxy/galaxy', 'GITHUB_ACTION_REPOSITORY': '', 'RUNNER_WORKSPACE': '/home/runner/work/galaxy', 'GITHUB_WORKFLOW_SHA': '1bf1d59b8b61c803c86abb95654f71c09889db91', 'RUNNER_OS': 'Linux', 'EDGEWEBDRIVER': '/usr/local/share/edge_driver', 'CI': 'true', 'LANG': 'C.UTF-8', 'RUNNER_TEMP': '/home/runner/work/_temp', 'GITHUB_SERVER_URL': 'https://github.com', 'STATS_TRP': 'true', 'PERFLOG_LOCATION_SETTING': 'RUNNER_PERFLOG', 'RUNNER_USER': 'runner', 'GITHUB_API_URL': 'https://api.github.com', 'MEMORY_PRESSURE_WATCH': '/sys/fs/cgroup/system.slice/runner-provisioner.service/memory.pressure', 'MAKEFLAGS': 'w', 'CHROME_BIN': '/usr/bin/google-chrome', 'PKG_CONFIG_PATH': '/opt/hostedtoolcache/Python/3.8.18/x64/lib/pkgconfig', 'Python2_ROOT_DIR': '/opt/hostedtoolcache/Python/3.8.18/x64', 'GITHUB_SHA': '1bf1d59b8b61c803c86abb95654f71c09889db91', 'ANDROID_NDK_HOME': '/usr/local/lib/android/sdk/ndk/27.2.12479018', 'STATS_PIP': 'false', 'GITHUB_ACTOR_ID': '4924623', 'POWERSHELL_DISTRIBUTION_CHANNEL': 'GitHub-Actions-ubuntu24', 'SELENIUM_JAR_PATH': '/usr/share/java/selenium-server.jar', 'GOROOT_1_21_X64': '/opt/hostedtoolcache/go/1.21.13/x64', 'pythonLocation': '/opt/hostedtoolcache/Python/3.8.18/x64', 'MFLAGS': '-w', 'ANDROID_NDK_LATEST_HOME': '/usr/local/lib/android/sdk/ndk/27.2.12479018', 'GOROOT_1_23_X64': '/opt/hostedtoolcache/go/1.23.4/x64', 'STATS_EXT': 'true', 'BOOTSTRAP_HASKELL_NONINTERACTIVE': '1', 'JAVA_HOME_8_X64': '/usr/lib/jvm/temurin-8-jdk-amd64', 'PIPX_HOME': '/opt/pipx', 'STATS_TIS': 'mining', 'GITHUB_RUN_ATTEMPT': '1', 'RUNNER_PERFLOG': '/home/runner/perflog', 'GITHUB_TRIGGERING_ACTOR': 'nsoranzo', 'DOTNET_NOLOGO': '1', 'DOTNET_MULTILEVEL_LOOKUP': '0', 'JAVA_HOME_11_X64': '/usr/lib/jvm/temurin-11-jdk-amd64', 'GITHUB_REF': 'refs/heads/master', 'GITHUB_RUN_NUMBER': '25732', 'Python3_ROOT_DIR': '/opt/hostedtoolcache/Python/3.8.18/x64', 'ANDROID_SDK_ROOT': '/usr/local/lib/android/sdk', 'GITHUB_JOB': 'build', 'ANDROID_HOME': '/usr/local/lib/android/sdk', 'LD_LIBRARY_PATH': '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pylibmagic:/opt/hostedtoolcache/Python/3.8.18/x64/lib', 'GITHUB_STATE': '/home/runner/work/_temp/_runner_file_commands/save_state_36d13466-2b70-4dd2-b487-6bb223dc930e', 'SHLVL': '1', 'ANDROID_NDK': '/usr/local/lib/android/sdk/ndk/27.2.12479018', 'ImageVersion': '20241208.1.0', 'PATH': '/opt/hostedtoolcache/Python/3.8.18/x64/bin:/opt/hostedtoolcache/Python/3.8.18/x64:/snap/bin:/home/runner/.local/bin:/opt/pipx_bin:/home/runner/.cargo/bin:/home/runner/.config/composer/vendor/bin:/usr/local/.ghcup/bin:/home/runner/.dotnet/tools:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin', 'GITHUB_EVENT_PATH': '/home/runner/work/_temp/_github_workflow/event.json', 'STATS_D': 'false', 'STATS_D_D': 'false', 'STATS_UE': 'true', 'GRADLE_HOME': '/usr/share/gradle-8.11.1', 'GITHUB_RETENTION_DAYS': '90', 'INVOCATION_ID': 'e377a192c3034083be1383eebaed075e', 'XDG_CONFIG_HOME': '/home/runner/.config', 'GITHUB_ACTIONS': 'true', 'GITHUB_WORKFLOW_REF': 'galaxyproject/galaxy/.github/workflows/docs.yaml@refs/heads/master', 'CONDA': '/usr/share/miniconda', 'GITHUB_HEAD_REF': '', 'STATS_EXTP': 'https://provjobdprod.z13.web.core.windows.net/settings/provjobdsettings-latest/provjobd.data', 'CHROMEWEBDRIVER': '/usr/local/share/chromedriver-linux64', 'PIPX_BIN_DIR': '/opt/pipx_bin', 'GITHUB_REF_PROTECTED': 'true', 'DEPLOYMENT_BASEPATH': '/opt/runner', 'GITHUB_REF_TYPE': 'branch', 'GECKOWEBDRIVER': '/usr/local/share/gecko_driver', 'SYSTEMD_EXEC_PID': '836', 'GITHUB_ACTION_REF': '', 'GITHUB_WORKSPACE': '/home/runner/work/galaxy/galaxy', 'USER': 'runner', 'SWIFT_PATH': '/usr/share/swift/usr/bin', 'STATS_VMD': 'true', 'GITHUB_STEP_SUMMARY': '/home/runner/work/_temp/_runner_file_commands/step_summary_36d13466-2b70-4dd2-b487-6bb223dc930e', 'RUNNER_ARCH': 'X64', 'GITHUB_PATH': '/home/runner/work/_temp/_runner_file_commands/add_path_36d13466-2b70-4dd2-b487-6bb223dc930e', 'RUNNER_TOOL_CACHE': '/opt/hostedtoolcache', '_': '/usr/bin/make', 'ANDROID_NDK_ROOT': '/usr/local/lib/android/sdk/ndk/27.2.12479018', 'XDG_RUNTIME_DIR': '/run/user/1001', 'AGENT_TOOLSDIRECTORY': '/opt/hostedtoolcache', 'GITHUB_REPOSITORY': 'galaxyproject/galaxy', 'VCPKG_INSTALLATION_ROOT': '/usr/local/share/vcpkg', 'JOURNAL_STREAM': '8:8221', 'GITHUB_ACTION': '__run_8', 'DEBIAN_FRONTEND': 'noninteractive', 'HOME': '/home/runner', 'GITHUB_GRAPHQL_URL': 'https://api.github.com/graphql', 'GITHUB_WORKFLOW': 'Build docs', 'GITHUB_RUN_ID': '12374100697', 'HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS': '3650', 'GITHUB_ACTOR': 'nsoranzo', 'ANT_HOME': '/usr/share/ant', 'ImageOS': 'ubuntu24', 'Python_ROOT_DIR': '/opt/hostedtoolcache/Python/3.8.18/x64', 'ACTIONS_RUNNER_ACTION_ARCHIVE_CACHE': '/opt/actionarchivecache', 'TARGET_BRANCH': 'master', 'GITHUB_OUTPUT': '/home/runner/work/_temp/_runner_file_commands/set_output_36d13466-2b70-4dd2-b487-6bb223dc930e', 'GITHUB_BASE_REF': '', 'STATS_V3PS': 'true', 'GITHUB_REPOSITORY_OWNER_ID': '7937847', 'GOROOT_1_22_X64': '/opt/hostedtoolcache/go/1.22.10/x64', 'STATS_D_TC': 'true', 'AZURE_EXTENSION_DIR': '/opt/az/azcliextensions', 'RUNNER_ENVIRONMENT': 'github-hosted', 'STATS_VMFE': 'true', 'HOMEBREW_NO_AUTO_UPDATE': '1', 'JAVA_HOME_21_X64': '/usr/lib/jvm/temurin-21-jdk-amd64', 'MAKELEVEL': '2', 'DOCUTILSCONFIG': '/home/runner/work/galaxy/galaxy/doc/source/docutils.conf', 'LIBRARY_PATH': '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pylibmagic:', 'MAGIC': '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/pylibmagic/magic.mgc:'}))[source]
- exception galaxy.tool_util.verify.test_data.TestDataNotFoundError[source]
Bases:
ValueError
galaxy.tool_util.verify.wait module
Abstraction for waiting on API conditions to become true.
- galaxy.tool_util.verify.wait.wait_on(function: Callable, desc: str, timeout: int | float, delta: int | float = 0.25, polling_backoff: int | float = 0, sleep_: Callable | None = None)[source]
Wait for function to return non-None value.
Grow the polling interval (initially
delta
defaulting to 0.25 seconds) incrementally by the suppliedpolling_backoff
(defaulting to 0).Throw a TimeoutAssertionError if the supplied timeout is reached without supplied function ever returning a non-None value.
- exception galaxy.tool_util.verify.wait.TimeoutAssertionError(message)[source]
Bases:
AssertionError
Derivative of AssertionError indicating wait_on exceeded max time.