From c183a3465ac4c0887ec991c0bdccced26867d1e2 Mon Sep 17 00:00:00 2001 From: Matthias Bernt Date: Mon, 28 Feb 2022 11:33:50 +0100 Subject: [PATCH 001/553] SLURM: check first if stopped for cancelled jobs if a user stops a job before it started then there is no error file which results in ``` galaxy.jobs.runners.drmaa DEBUG 2022-02-28 11:16:18,629 [pN:main.job-handlers.1,p:32141,w:0,m:1,tN:SlurmRunner.monitor_thread] (151324/13061863) state change: job finished, but failed galaxy.jobs.runners.slurm DEBUG 2022-02-28 11:16:18,772 [pN:main.job-handlers.1,p:32141,w:0,m:1,tN:SlurmRunner.monitor_thread] Checking /work/songalax/galaxy/database/jobs_directory/000/151/151324/galaxy_151324.e for exceeded memory message from SLURM galaxy.jobs.runners.slurm ERROR 2022-02-28 11:16:18,775 [pN:main.job-handlers.1,p:32141,w:0,m:1,tN:SlurmRunner.monitor_thread] Error reading end of /work/songalax/galaxy/database/jobs_directory/000/151/151324/galaxy_151324.e: Traceback (most recent call last): File "lib/galaxy/jobs/runners/slurm.py", line 159, in __check_memory_limit with open(efile_path) as f: FileNotFoundError: [Errno 2] No such file or directory: '/work/songalax/galaxy/database/jobs_directory/000/151/151324/galaxy_151324.e' galaxy.jobs.runners.slurm INFO 2022-02-28 11:16:18,792 [pN:main.job-handlers.1,p:32141,w:0,m:1,tN:SlurmRunner.monitor_thread] (151324/13061863) Job was cancelled via SLURM (e.g. with scancel(1)) ``` even if there is one (if the job already started) then there is no use in checking the error file. --- lib/galaxy/jobs/runners/slurm.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/galaxy/jobs/runners/slurm.py b/lib/galaxy/jobs/runners/slurm.py index 2693a9b3b47..6daa65512d5 100644 --- a/lib/galaxy/jobs/runners/slurm.py +++ b/lib/galaxy/jobs/runners/slurm.py @@ -153,6 +153,9 @@ class SlurmJobRunner(DRMAAJobRunner): ajs.fail_message = OUT_OF_MEMORY_MSG ajs.runner_state = ajs.runner_states.MEMORY_LIMIT_REACHED elif slurm_state == "CANCELLED": + if ajs.job_wrapper.get_state() == model.Job.states.STOPPED: + # User requested to stop job, this isn't an error, just finish as normal + return super()._complete_terminal_job(ajs, drmaa_state=drmaa_state) # Check to see if the job was killed for exceeding memory consumption check_memory_limit_msg = self.__check_memory_limit(ajs.error_file) if check_memory_limit_msg: @@ -164,9 +167,6 @@ class SlurmJobRunner(DRMAAJobRunner): ajs.fail_message = check_memory_limit_msg ajs.runner_state = ajs.runner_states.MEMORY_LIMIT_REACHED else: - if ajs.job_wrapper.get_state() == model.Job.states.STOPPED: - # User requested to stop job, this isn't an error, just finish as normal - return super()._complete_terminal_job(ajs, drmaa_state=drmaa_state) log.info( "(%s/%s) Job was cancelled via SLURM (e.g. with scancel(1))", ajs.job_wrapper.get_id_tag(), From afa5a50d6ef0aaef8ffd2033f58195931d110142 Mon Sep 17 00:00:00 2001 From: Nolan Woods Date: Wed, 23 Mar 2022 16:32:56 -0700 Subject: [PATCH 002/553] Report resolution cache miss for galaxy.tool_util.deps.container_resolvers.mulled.util:namespace_repo_names This is important to detect if Galaxy is hammering quay.io for any reason. --- lib/galaxy/tool_util/deps/mulled/util.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/galaxy/tool_util/deps/mulled/util.py b/lib/galaxy/tool_util/deps/mulled/util.py index 5f88b794670..0b1ba4350d6 100644 --- a/lib/galaxy/tool_util/deps/mulled/util.py +++ b/lib/galaxy/tool_util/deps/mulled/util.py @@ -79,6 +79,7 @@ def _namespace_has_repo_name(namespace, repo_name, resolution_cache): return repo_name in resolution_cache.get(cache_key) except KeyError: pass + log.debug("Resolution cache miss: " + cache_key) next_page = None repo_names = [] repos_headers = {"Accept-encoding": "gzip", "Accept": "application/json"} From 2fa64b33db75234e8c2809eb609dc4a68b577c92 Mon Sep 17 00:00:00 2001 From: Nolan Woods Date: Fri, 25 Mar 2022 11:51:49 -0700 Subject: [PATCH 003/553] Change log output to signify what is actually occurring --- lib/galaxy/tool_util/deps/mulled/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/tool_util/deps/mulled/util.py b/lib/galaxy/tool_util/deps/mulled/util.py index 0b1ba4350d6..d790520bc71 100644 --- a/lib/galaxy/tool_util/deps/mulled/util.py +++ b/lib/galaxy/tool_util/deps/mulled/util.py @@ -79,7 +79,7 @@ def _namespace_has_repo_name(namespace, repo_name, resolution_cache): return repo_name in resolution_cache.get(cache_key) except KeyError: pass - log.debug("Resolution cache miss: " + cache_key) + log.debug("Querying " + QUAY_REPOSITORY_API_ENDPOINT + " for repos within " + namespace) next_page = None repo_names = [] repos_headers = {"Accept-encoding": "gzip", "Accept": "application/json"} From a15d27d6f9371e207676a399bc102db60fa41ae9 Mon Sep 17 00:00:00 2001 From: Nolan Woods Date: Wed, 25 May 2022 11:13:15 -0700 Subject: [PATCH 004/553] Switch to format string for debug output Co-authored-by: Marius van den Beek --- lib/galaxy/tool_util/deps/mulled/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/tool_util/deps/mulled/util.py b/lib/galaxy/tool_util/deps/mulled/util.py index d790520bc71..0b386cda937 100644 --- a/lib/galaxy/tool_util/deps/mulled/util.py +++ b/lib/galaxy/tool_util/deps/mulled/util.py @@ -79,7 +79,7 @@ def _namespace_has_repo_name(namespace, repo_name, resolution_cache): return repo_name in resolution_cache.get(cache_key) except KeyError: pass - log.debug("Querying " + QUAY_REPOSITORY_API_ENDPOINT + " for repos within " + namespace) + log.debug(f"Querying {QUAY_REPOSITORY_API_ENDPOINT} for repos within {namespace}") next_page = None repo_names = [] repos_headers = {"Accept-encoding": "gzip", "Accept": "application/json"} From 0684e547191aad3f08ed1d1458ceb8c121c3d800 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Mon, 27 Jun 2022 18:57:24 +0200 Subject: [PATCH 005/553] Refactor folder listing permissions Simplify a bit and reduce duplication for checking library folder permissions when listing folder contents. --- .../services/library_folder_contents.py | 78 ++++++++++--------- 1 file changed, 41 insertions(+), 37 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py index c1a88802379..2ccbbaae6ec 100644 --- a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py +++ b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py @@ -1,4 +1,5 @@ import logging +from dataclasses import dataclass from typing import Optional from galaxy import ( @@ -9,6 +10,7 @@ from galaxy.managers import base as managers_base from galaxy.managers.folders import FolderManager from galaxy.managers.hdas import HDAManager from galaxy.model import tags +from galaxy.model.security import GalaxyRBACAgent from galaxy.schema.schema import ( CreateLibraryFilePayload, LibraryFolderContentsIndexQueryPayload, @@ -24,6 +26,14 @@ FOLDER_TYPE_NAME = "folder" FILE_TYPE_NAME = "file" +@dataclass +class UserFolderPermissions: + access: bool + modify: bool + add: bool + manage: bool + + class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): """ Interface/service shared by controllers for interacting with the contents of a library folder. @@ -50,24 +60,11 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): with 'F' if it is a folder as opposed to a data set which does not have it. Full path is provided in response as a separate object providing data for breadcrumb path building. """ - is_admin = trans.user_is_admin - current_user_roles = trans.get_current_user_roles() - folder = self.folder_manager.get(trans, folder_id) - # Special level of security on top of libraries. - if trans.app.security_agent.can_access_library(current_user_roles, folder.parent_library) or is_admin: - pass - else: - if trans.user: - log.warning( - f"SECURITY: User (id: {trans.user.id}) without proper access rights is trying to load folder with ID of {folder_id}" - ) - else: - log.warning(f"SECURITY: Anonymous user is trying to load restricted folder with ID of {folder_id}") - raise exceptions.ObjectNotFound( - f"Folder with the id provided ( F{self.encode_id(folder_id)} ) was not found" - ) + is_admin = trans.user_is_admin + current_user_roles = trans.get_current_user_roles() + user_permissions = self._check_user_folder_permissions(trans, current_user_roles, folder) folder_contents = [] update_time = "" @@ -83,14 +80,8 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): if content_item.api_type == FOLDER_TYPE_NAME: encoded_id = f"F{encoded_id}" - can_modify = is_admin or ( - trans.user and trans.app.security_agent.can_modify_library_item(current_user_roles, folder) - ) - can_manage = is_admin or ( - trans.user and trans.app.security_agent.can_manage_library_item(current_user_roles, folder) - ) update_time = content_item.update_time.isoformat() - return_item.update(dict(can_modify=can_modify, can_manage=can_manage)) + return_item.update(dict(can_modify=user_permissions.modify, can_manage=user_permissions.manage)) if content_item.description: return_item.update(dict(description=content_item.description)) @@ -108,10 +99,7 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): # Can user manage the permissions on the dataset? can_manage = is_admin or ( - trans.user - and trans.app.security_agent.can_manage_dataset( - current_user_roles, content_item.library_dataset_dataset_association.dataset - ) + trans.user and trans.app.security_agent.can_manage_dataset(current_user_roles, dataset) ) raw_size = int(content_item.library_dataset_dataset_association.get_size()) nice_size = util.nice_size(raw_size) @@ -160,14 +148,6 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): # Return the reversed path so it starts with the library node. full_path = self._build_path(trans, folder)[::-1] - user_can_add_library_item = is_admin or trans.app.security_agent.can_add_library_item( - current_user_roles, folder - ) - - user_can_modify_folder = is_admin or trans.app.security_agent.can_modify_library_item( - current_user_roles, folder - ) - parent_library_id = None if folder.parent_library is not None: parent_library_id = trans.security.encode_id(folder.parent_library.id) @@ -177,14 +157,38 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): metadata = dict( full_path=full_path, total_rows=total_rows, - can_add_library_item=user_can_add_library_item, - can_modify_folder=user_can_modify_folder, + can_add_library_item=user_permissions.add, + can_modify_folder=user_permissions.modify, folder_name=folder.name, folder_description=folder.description, parent_library_id=parent_library_id, ) return LibraryFolderContentsIndexResult.construct(metadata=metadata, folder_contents=folder_contents) + # Special level of security on top of libraries. + def _check_user_folder_permissions(self, trans, current_user_roles, folder) -> UserFolderPermissions: + """Returns the permissions of the user for the given folder or raises an exception if the user has no access.""" + if trans.user_is_admin: + return UserFolderPermissions(access=True, modify=True, add=True, manage=True) + + security_agent: GalaxyRBACAgent = trans.app.security_agent + can_access_library = security_agent.can_access_library(current_user_roles, folder.parent_library) + if can_access_library: + return UserFolderPermissions( + access=True, # Access to the parent library means access to any sub-folder + modify=security_agent.can_modify_library_item(current_user_roles, folder), + add=security_agent.can_add_library_item(current_user_roles, folder), + manage=security_agent.can_manage_library_item(current_user_roles, folder), + ) + + warning_message = ( + f"SECURITY: User (id: {trans.user.id}) without proper access rights is trying to load folder with ID of {folder.id}" + if trans.user + else f"SECURITY: Anonymous user is trying to load restricted folder with ID of {folder.id}" + ) + log.warning(warning_message) + raise exceptions.ObjectNotFound(f"Folder with the id provided ( F{self.encode_id(folder.id)} ) was not found") + def create(self, trans, folder_id, payload: CreateLibraryFilePayload): """ Create a new library file from an HDA/HDCA. From 72941ee713ff77220bccf61508c41fcb0aa4011e Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Thu, 30 Jun 2022 12:43:57 +0200 Subject: [PATCH 006/553] Enhance folder contents text search API test - Ignore case when matching - The search letter `C` has been replaced by `X` because the folders have a description that would also match when searching for `c` since now the search is case insensitive. --- lib/galaxy_test/api/test_folder_contents.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/galaxy_test/api/test_folder_contents.py b/lib/galaxy_test/api/test_folder_contents.py index e4401ea6e94..13e3eb22c6d 100644 --- a/lib/galaxy_test/api/test_folder_contents.py +++ b/lib/galaxy_test/api/test_folder_contents.py @@ -118,22 +118,22 @@ class FolderContentsApiTestCase(ApiTestCase): folder_name = "Test Folder Contents Index search text" folder_id = self._create_folder_in_library(folder_name) - dataset_names = ["AB", "BC", "ABC"] + dataset_names = ["AB", "BX", "abx"] for name in dataset_names: self._create_dataset_in_folder(folder_id, name) - subfolder_names = ["Folder_A", "Folder_C"] + subfolder_names = ["Folder_a", "Folder_X"] for name in subfolder_names: self._create_subfolder_in(folder_id, name) all_names = dataset_names + subfolder_names - search_terms = ["A", "B", "C"] + search_terms = ["A", "B", "X"] for search_text in search_terms: response = self._get(f"folders/{folder_id}/contents?search_text={search_text}") self._assert_status_code_is(response, 200) contents = response.json()["folder_contents"] - matching_names = [name for name in all_names if search_text in name] + matching_names = [name for name in all_names if search_text.casefold() in name.casefold()] assert len(contents) == len(matching_names) def test_index_permissions_include_deleted(self): From 3d855c7e443e7e0341147317dc490967e47102f6 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Thu, 30 Jun 2022 17:24:25 +0200 Subject: [PATCH 007/553] Refactor move database logic to manager Try to use a database query for filtering instead of retrieving all contents and then filter them. --- lib/galaxy/managers/folders.py | 172 +++++++++++++++++- .../services/library_folder_contents.py | 148 ++------------- 2 files changed, 191 insertions(+), 129 deletions(-) diff --git a/lib/galaxy/managers/folders.py b/lib/galaxy/managers/folders.py index 4fe5daea419..797a69ed797 100644 --- a/lib/galaxy/managers/folders.py +++ b/lib/galaxy/managers/folders.py @@ -2,13 +2,29 @@ Manager and Serializer for Library Folders. """ import logging +from typing import ( + List, + Optional, + Tuple, + Union, +) +from sqlalchemy import ( + and_, + false, + func, + or_, +) +from sqlalchemy.orm import aliased from sqlalchemy.orm.exc import ( MultipleResultsFound, NoResultFound, ) -from galaxy import util +from galaxy import ( + model, + util, +) from galaxy.exceptions import ( AuthenticationRequired, InconsistentDatabase, @@ -18,6 +34,8 @@ from galaxy.exceptions import ( MalformedId, RequestParameterInvalidException, ) +from galaxy.model.scoped_session import galaxy_scoped_session +from galaxy.security import RBACAgent log = logging.getLogger(__name__) @@ -335,3 +353,155 @@ class FolderManager: :rtype: int """ return self.decode_folder_id(trans, self.cut_the_prefix(encoded_folder_id)) + + def get_contents( + self, + trans, + folder: model.LibraryFolder, + include_deleted: Optional[bool] = False, + search_text: Optional[str] = None, + offset: Optional[int] = None, + limit: Optional[int] = None, + ) -> Tuple[List[Union[model.LibraryFolder, model.LibraryDataset]], int]: + """Retrieves the contents of the given folder that match the provided filters and pagination parameters. + Returns a tuple with the list of paginated contents and the total number of items contained in the folder.""" + is_admin = trans.user_is_admin + sa_session = trans.sa_session + user_roles = trans.get_current_user_roles() + user_role_ids = [role.id for role in user_roles] + security_agent = trans.app.security_agent + content_items: List[Union[model.LibraryFolder, model.LibraryDataset]] = [] + + sub_folders_query = self._get_sub_folders_query( + sa_session, folder, user_role_ids, security_agent, include_deleted, search_text, is_admin + ) + total_sub_folders = sub_folders_query.count() + if limit is not None: + sub_folders_query = sub_folders_query.limit(limit) + if offset is not None: + sub_folders_query = sub_folders_query.offset(offset) + folders = sub_folders_query.all() + content_items.extend(folders) + + # Update pagination + if limit: + limit -= len(folders) + if offset: + offset -= len(folders) + offset = max(0, offset) + + datasets_query = self._get_contained_datasets_query( + sa_session, folder, user_role_ids, security_agent, include_deleted, search_text, is_admin + ) + total_datasets = datasets_query.count() + if limit is not None: + datasets_query = datasets_query.limit(limit) + if offset is not None: + datasets_query = datasets_query.offset(offset) + datasets = datasets_query.all() + content_items.extend(datasets) + return (content_items, total_sub_folders + total_datasets) + + def _get_sub_folders_query( + self, + sa_session: galaxy_scoped_session, + folder: model.LibraryFolder, + user_role_ids, + security_agent: RBACAgent, + include_deleted: Optional[bool] = False, + search_text: Optional[str] = None, + is_admin: bool = False, + ): + query = sa_session.query(model.LibraryFolder) + query = query.filter(model.LibraryFolder.parent_id == folder.id) + # Undeleted folders are non-restricted for now. + # Admins or users with MODIFY permissions can see deleted folders. + if include_deleted: + if not is_admin: # Filter by User has MODIFY permission. + actions_alias = aliased(model.LibraryDatasetPermissions) + query = query.outerjoin(model.LibraryDataset.actions.of_type(actions_alias)) + query = query.filter( + and_( + actions_alias.action == security_agent.permitted_actions.LIBRARY_MODIFY.action, + actions_alias.role_id.in_(user_role_ids), + ) + ) + else: + query = query.filter(model.LibraryFolder.deleted == false()) + if search_text: + search_text = search_text.lower() + query = query.filter( + or_( + func.lower(model.LibraryFolder.name).contains(search_text, autoescape=True), + func.lower(model.LibraryFolder.description).contains(search_text, autoescape=True), + ) + ) + return query + + def _get_contained_datasets_query( + self, + sa_session: galaxy_scoped_session, + folder: model.LibraryFolder, + user_role_ids: List[int], + security_agent: RBACAgent, + include_deleted: Optional[bool] = False, + search_text: Optional[str] = None, + is_admin: bool = False, + ): + + query = sa_session.query(model.LibraryDataset) + query = query.filter(model.LibraryDataset.folder_id == folder.id) + if is_admin: + if not include_deleted: + query = query.filter(model.LibraryDataset.deleted == false()) + else: + # Filter by User has ACCESS permission. + actions_alias = aliased(model.LibraryDatasetPermissions) + query = query.outerjoin(model.LibraryDataset.actions.of_type(actions_alias)) + query = query.filter( + and_( + actions_alias.action == security_agent.permitted_actions.DATASET_ACCESS.action, + actions_alias.role_id.in_(user_role_ids), + ) + ) + if include_deleted: # Filter by User has MODIFY permission. + query = query.filter( + and_( + actions_alias.action == security_agent.permitted_actions.LIBRARY_MODIFY.action, + actions_alias.role_id.in_(user_role_ids), + ) + ) + + if search_text: + search_text = search_text.lower() + ldda_alias = aliased(model.LibraryDatasetDatasetAssociation) + query = query.outerjoin(model.LibraryDataset.library_dataset_dataset_association.of_type(ldda_alias)) + query = query.filter( + or_( + func.lower(ldda_alias.name).contains(search_text, autoescape=True), + func.lower(ldda_alias.message).contains(search_text, autoescape=True), + ) + ) + + return query + + def build_folder_path(self, trans, folder): + """ + Search the path upwards recursively and load the whole route of + names and ids for breadcrumb building purposes. + + :param folder: current folder for navigating up + :param type: Galaxy LibraryFolder + + :returns: list consisting of full path to the library + :type: list + """ + path_to_root = [] + # We are almost in root + encoded_id = trans.security.encode_id(folder.id) + path_to_root.append((f"F{encoded_id}", folder.name)) + if folder.parent_id is not None: + # We add the current folder and traverse up one folder. + upper_folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(folder.parent_id) + path_to_root.extend(self.build_folder_path(trans, upper_folder)) + return path_to_root diff --git a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py index 2ccbbaae6ec..92d695b08fb 100644 --- a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py +++ b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py @@ -1,9 +1,9 @@ import logging from dataclasses import dataclass -from typing import Optional from galaxy import ( exceptions, + model, util, ) from galaxy.managers import base as managers_base @@ -65,27 +65,35 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): is_admin = trans.user_is_admin current_user_roles = trans.get_current_user_roles() user_permissions = self._check_user_folder_permissions(trans, current_user_roles, folder) + tag_manager = tags.GalaxyTagHandler(trans.sa_session) folder_contents = [] update_time = "" create_time = "" - folders, datasets = self._apply_preferences(folder, payload.include_deleted, payload.search_text) - + contents, total_rows = self.folder_manager.get_contents( + trans, folder, payload.include_deleted, payload.search_text, payload.offset, payload.limit + ) # Go through every accessible item (folders, datasets) in the folder and include its metadata. - for content_item in self._load_folder_contents(trans, folders, datasets, payload.offset, payload.limit): + for content_item in contents: return_item = {} - encoded_id = trans.security.encode_id(content_item.id) + encoded_id = self.encode_id(content_item.id) create_time = content_item.create_time.isoformat() - if content_item.api_type == FOLDER_TYPE_NAME: + if isinstance(content_item, model.LibraryFolder): encoded_id = f"F{encoded_id}" update_time = content_item.update_time.isoformat() - return_item.update(dict(can_modify=user_permissions.modify, can_manage=user_permissions.manage)) + return_item.update( + dict( + type=FOLDER_TYPE_NAME, + can_modify=user_permissions.modify, + can_manage=user_permissions.manage, + ) + ) if content_item.description: return_item.update(dict(description=content_item.description)) - elif content_item.api_type == FILE_TYPE_NAME: + elif isinstance(content_item, model.LibraryDataset): # Is the dataset public or private? # When both are False the dataset is 'restricted' # Access rights are checked on the dataset level, not on the ld or ldda level to maintain consistency @@ -106,13 +114,13 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): update_time = content_item.library_dataset_dataset_association.update_time.isoformat() library_dataset_dict = content_item.to_dict() - encoded_ldda_id = trans.security.encode_id(content_item.library_dataset_dataset_association.id) + encoded_ldda_id = self.encode_id(content_item.library_dataset_dataset_association.id) - tag_manager = tags.GalaxyTagHandler(trans.sa_session) ldda_tags = tag_manager.get_tags_str(content_item.library_dataset_dataset_association.tags) return_item.update( dict( + type=FILE_TYPE_NAME, file_ext=library_dataset_dict["file_ext"], date_uploaded=library_dataset_dict["date_uploaded"], update_time=update_time, @@ -136,7 +144,6 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): return_item.update( dict( id=encoded_id, - type=content_item.api_type, name=content_item.name, update_time=update_time, create_time=create_time, @@ -146,13 +153,11 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): folder_contents.append(return_item) # Return the reversed path so it starts with the library node. - full_path = self._build_path(trans, folder)[::-1] + full_path = self.folder_manager.build_folder_path(trans, folder)[::-1] parent_library_id = None if folder.parent_library is not None: - parent_library_id = trans.security.encode_id(folder.parent_library.id) - - total_rows = len(folders) + len(datasets) + parent_library_id = self.encode_id(folder.parent_library.id) metadata = dict( full_path=full_path, @@ -219,116 +224,3 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): else: log.exception(exc) raise exc - - def _build_path(self, trans, folder): - """ - Search the path upwards recursively and load the whole route of - names and ids for breadcrumb building purposes. - - :param folder: current folder for navigating up - :param type: Galaxy LibraryFolder - - :returns: list consisting of full path to the library - :type: list - """ - path_to_root = [] - # We are almost in root - encoded_id = trans.security.encode_id(folder.id) - path_to_root.append((f"F{encoded_id}", folder.name)) - if folder.parent_id is not None: - # We add the current folder and traverse up one folder. - upper_folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(folder.parent_id) - path_to_root.extend(self._build_path(trans, upper_folder)) - return path_to_root - - def _load_folder_contents(self, trans, folders, datasets, offset=None, limit=None): - """ - Loads all contents of the folder (folders and data sets) but only - in the first level. Include deleted if the flag is set and if the - user has access to undelete it. - - :param folder: the folder which contents are being loaded - :type folder: Galaxy LibraryFolder - - :param include_deleted: flag, when true the items that are deleted - and can be undeleted by current user are shown - :type include_deleted: boolean - - :returns: a list containing the requested items - :type: list - """ - current_user_roles = trans.get_current_user_roles() - is_admin = trans.user_is_admin - content_items = [] - - offset = 0 if offset is None else int(offset) - limit = 0 if limit is None else int(limit) - - current_folders = self._calculate_pagination(folders, offset, limit) - - for subfolder in current_folders: - if ( - not subfolder.deleted - or is_admin - or trans.app.security_agent.can_modify_library_item(current_user_roles, subfolder) - ): - # Undeleted folders are non-restricted for now. - # Admins or users with MODIFY permissions can see deleted folders. - subfolder.api_type = FOLDER_TYPE_NAME - content_items.append(subfolder) - - limit -= len(content_items) - offset -= len(folders) - offset = max(0, offset) - - current_datasets = self._calculate_pagination(datasets, offset, limit) - - for dataset in current_datasets: - if dataset.deleted: - if is_admin or trans.app.security_agent.can_modify_library_item(current_user_roles, dataset): - # Admins or users with MODIFY permissions can see deleted folders. - dataset.api_type = FILE_TYPE_NAME - content_items.append(dataset) - else: - if is_admin or trans.app.security_agent.can_access_dataset( - current_user_roles, dataset.library_dataset_dataset_association.dataset - ): - # Admins or users with ACCESS permissions can see datasets. - dataset.api_type = FILE_TYPE_NAME - content_items.append(dataset) - - return content_items - - def _calculate_pagination(self, items, offset: int, limit: int): - if limit > 0: - paginated_items = items[offset : offset + limit] - else: - paginated_items = items[offset:] - return paginated_items - - def _apply_preferences(self, folder, include_deleted: Optional[bool], search_text: Optional[str]): - def check_deleted(array, include_deleted): - if include_deleted: - result_array = array - else: - result_array = [data for data in array if data.deleted == include_deleted] - return result_array - - def filter_searched_datasets(dataset): - if dataset.library_dataset_dataset_association.message: - description = dataset.library_dataset_dataset_association.message - elif dataset.library_dataset_dataset_association.info: - description = dataset.library_dataset_dataset_association.info - else: - description = "" - - return search_text in dataset.name or search_text in description - - datasets = check_deleted(folder.datasets, include_deleted) - folders = check_deleted(folder.folders, include_deleted) - - if search_text is not None: - folders = [item for item in folders if search_text in item.name or search_text in item.description] - datasets = list(filter(filter_searched_datasets, datasets)) - - return folders, datasets From 4aa5019e63f348a10418bb00e644ab5ce998b7d2 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Thu, 30 Jun 2022 19:50:32 +0200 Subject: [PATCH 008/553] Refactor library folder content serialization --- .../services/library_folder_contents.py | 134 +++++++----------- 1 file changed, 52 insertions(+), 82 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py index 92d695b08fb..a8762f081fe 100644 --- a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py +++ b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py @@ -62,103 +62,27 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): """ folder = self.folder_manager.get(trans, folder_id) - is_admin = trans.user_is_admin current_user_roles = trans.get_current_user_roles() - user_permissions = self._check_user_folder_permissions(trans, current_user_roles, folder) + user_permissions = self._retrieve_user_folder_permissions(trans, current_user_roles, folder) tag_manager = tags.GalaxyTagHandler(trans.sa_session) folder_contents = [] - update_time = "" - create_time = "" contents, total_rows = self.folder_manager.get_contents( trans, folder, payload.include_deleted, payload.search_text, payload.offset, payload.limit ) # Go through every accessible item (folders, datasets) in the folder and include its metadata. for content_item in contents: - return_item = {} - encoded_id = self.encode_id(content_item.id) - create_time = content_item.create_time.isoformat() - if isinstance(content_item, model.LibraryFolder): - encoded_id = f"F{encoded_id}" - update_time = content_item.update_time.isoformat() - return_item.update( - dict( - type=FOLDER_TYPE_NAME, - can_modify=user_permissions.modify, - can_manage=user_permissions.manage, - ) - ) - if content_item.description: - return_item.update(dict(description=content_item.description)) - + serialized_item = self._serialize_folder(user_permissions, content_item) elif isinstance(content_item, model.LibraryDataset): - # Is the dataset public or private? - # When both are False the dataset is 'restricted' - # Access rights are checked on the dataset level, not on the ld or ldda level to maintain consistency - dataset = content_item.library_dataset_dataset_association.dataset - is_unrestricted = trans.app.security_agent.dataset_is_public(dataset) - is_private = ( - not is_unrestricted - and trans.user - and trans.app.security_agent.dataset_is_private_to_user(trans, dataset) - ) - - # Can user manage the permissions on the dataset? - can_manage = is_admin or ( - trans.user and trans.app.security_agent.can_manage_dataset(current_user_roles, dataset) - ) - raw_size = int(content_item.library_dataset_dataset_association.get_size()) - nice_size = util.nice_size(raw_size) - update_time = content_item.library_dataset_dataset_association.update_time.isoformat() - - library_dataset_dict = content_item.to_dict() - encoded_ldda_id = self.encode_id(content_item.library_dataset_dataset_association.id) - - ldda_tags = tag_manager.get_tags_str(content_item.library_dataset_dataset_association.tags) - - return_item.update( - dict( - type=FILE_TYPE_NAME, - file_ext=library_dataset_dict["file_ext"], - date_uploaded=library_dataset_dict["date_uploaded"], - update_time=update_time, - is_unrestricted=is_unrestricted, - is_private=is_private, - can_manage=can_manage, - state=library_dataset_dict["state"], - file_size=nice_size, - raw_size=raw_size, - ldda_id=encoded_ldda_id, - tags=ldda_tags, - ) - ) - if content_item.library_dataset_dataset_association.message: - return_item.update(dict(message=content_item.library_dataset_dataset_association.message)) - elif content_item.library_dataset_dataset_association.info: - # There is no message but ldda info contains something so we display that instead. - return_item.update(dict(message=content_item.library_dataset_dataset_association.info)) - - # For every item include the default metadata - return_item.update( - dict( - id=encoded_id, - name=content_item.name, - update_time=update_time, - create_time=create_time, - deleted=content_item.deleted, - ) - ) - folder_contents.append(return_item) + serialized_item = self._serialize_dataset(trans, current_user_roles, tag_manager, content_item) + folder_contents.append(serialized_item) # Return the reversed path so it starts with the library node. full_path = self.folder_manager.build_folder_path(trans, folder)[::-1] - parent_library_id = None - if folder.parent_library is not None: - parent_library_id = self.encode_id(folder.parent_library.id) - + parent_library_id = self.encode_id(folder.parent_library.id) if folder.parent_library else None metadata = dict( full_path=full_path, total_rows=total_rows, @@ -171,7 +95,7 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): return LibraryFolderContentsIndexResult.construct(metadata=metadata, folder_contents=folder_contents) # Special level of security on top of libraries. - def _check_user_folder_permissions(self, trans, current_user_roles, folder) -> UserFolderPermissions: + def _retrieve_user_folder_permissions(self, trans, current_user_roles, folder) -> UserFolderPermissions: """Returns the permissions of the user for the given folder or raises an exception if the user has no access.""" if trans.user_is_admin: return UserFolderPermissions(access=True, modify=True, add=True, manage=True) @@ -224,3 +148,49 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): else: log.exception(exc) raise exc + + def _serialize_dataset(self, trans, current_user_roles, tag_manager, content_item): + security_agent = trans.app.security_agent + is_admin = trans.user_is_admin + ldda = content_item.library_dataset_dataset_association + dataset = ldda.dataset + # Access rights are checked on the dataset level, not on the ld or ldda level to maintain consistency + is_unrestricted = security_agent.dataset_is_public(dataset) + raw_size = int(ldda.get_size()) + library_dataset_dict = content_item.to_dict() + dataset_dict = dict( + id=self.encode_id(content_item.id), + name=content_item.name, + type=FILE_TYPE_NAME, + create_time=content_item.create_time.isoformat(), + update_time=ldda.update_time.isoformat(), + can_manage=is_admin or (trans.user and security_agent.can_manage_dataset(current_user_roles, dataset)), + deleted=content_item.deleted, + file_ext=library_dataset_dict["file_ext"], + date_uploaded=library_dataset_dict["date_uploaded"], + # Is the dataset public or private? + # When both are False the dataset is 'restricted' + is_unrestricted=is_unrestricted, + is_private=not is_unrestricted and trans.user and security_agent.dataset_is_private_to_user(trans, dataset), + state=library_dataset_dict["state"], + file_size=util.nice_size(raw_size), + raw_size=raw_size, + ldda_id=self.encode_id(ldda.id), + tags=tag_manager.get_tags_str(ldda.tags), + message=ldda.message or ldda.info, + ) + return dataset_dict + + def _serialize_folder(self, user_permissions, content_item): + folder_dict = dict( + id=f"F{self.encode_id(content_item.id)}", + name=content_item.name, + type=FOLDER_TYPE_NAME, + create_time=content_item.create_time.isoformat(), + update_time=content_item.update_time.isoformat(), + can_manage=user_permissions.manage, + deleted=content_item.deleted, + can_modify=user_permissions.modify, + description=content_item.description, + ) + return folder_dict From 0c6a602cb6d79afdc9c50a8d5043732f24d12d82 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Thu, 30 Jun 2022 20:24:13 +0200 Subject: [PATCH 009/553] Refactor folder contents metadata serialization - Simplify `build_folder_path` - Remove recursion and list reversion --- lib/galaxy/managers/folders.py | 25 ++---- .../services/library_folder_contents.py | 85 ++++++++++--------- 2 files changed, 52 insertions(+), 58 deletions(-) diff --git a/lib/galaxy/managers/folders.py b/lib/galaxy/managers/folders.py index 797a69ed797..9daaae497d1 100644 --- a/lib/galaxy/managers/folders.py +++ b/lib/galaxy/managers/folders.py @@ -485,23 +485,16 @@ class FolderManager: return query - def build_folder_path(self, trans, folder): + def build_folder_path(self, trans, folder: model.LibraryFolder) -> List[Tuple[str, str]]: """ - Search the path upwards recursively and load the whole route of - names and ids for breadcrumb building purposes. + Returns the folder path from root to the given folder. - :param folder: current folder for navigating up - :param type: Galaxy LibraryFolder - - :returns: list consisting of full path to the library - :type: list + The path items are tuples with the name and id of each folder for breadcrumb building purposes. """ - path_to_root = [] - # We are almost in root - encoded_id = trans.security.encode_id(folder.id) - path_to_root.append((f"F{encoded_id}", folder.name)) - if folder.parent_id is not None: - # We add the current folder and traverse up one folder. - upper_folder = trans.sa_session.query(trans.app.model.LibraryFolder).get(folder.parent_id) - path_to_root.extend(self.build_folder_path(trans, upper_folder)) + current_folder = folder + path_to_root = [(f"F{trans.security.encode_id(current_folder.id)}", current_folder.name)] + while current_folder.parent_id is not None: + parent_folder = trans.sa_session.query(model.LibraryFolder).get(current_folder.parent_id) + current_folder = parent_folder + path_to_root.insert(0, (f"F{trans.security.encode_id(current_folder.id)}", current_folder.name)) return path_to_root diff --git a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py index a8762f081fe..43ed5a23d5a 100644 --- a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py +++ b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py @@ -60,18 +60,15 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): with 'F' if it is a folder as opposed to a data set which does not have it. Full path is provided in response as a separate object providing data for breadcrumb path building. """ - folder = self.folder_manager.get(trans, folder_id) - + folder: model.LibraryFolder = self.folder_manager.get(trans, folder_id) current_user_roles = trans.get_current_user_roles() - user_permissions = self._retrieve_user_folder_permissions(trans, current_user_roles, folder) + user_permissions = self._retrieve_user_permissions_on_folder(trans, current_user_roles, folder) tag_manager = tags.GalaxyTagHandler(trans.sa_session) folder_contents = [] - contents, total_rows = self.folder_manager.get_contents( trans, folder, payload.include_deleted, payload.search_text, payload.offset, payload.limit ) - # Go through every accessible item (folders, datasets) in the folder and include its metadata. for content_item in contents: if isinstance(content_item, model.LibraryFolder): serialized_item = self._serialize_folder(user_permissions, content_item) @@ -79,45 +76,9 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): serialized_item = self._serialize_dataset(trans, current_user_roles, tag_manager, content_item) folder_contents.append(serialized_item) - # Return the reversed path so it starts with the library node. - full_path = self.folder_manager.build_folder_path(trans, folder)[::-1] - - parent_library_id = self.encode_id(folder.parent_library.id) if folder.parent_library else None - metadata = dict( - full_path=full_path, - total_rows=total_rows, - can_add_library_item=user_permissions.add, - can_modify_folder=user_permissions.modify, - folder_name=folder.name, - folder_description=folder.description, - parent_library_id=parent_library_id, - ) + metadata = self._serialize_folder_metadata(trans, folder, user_permissions, total_rows) return LibraryFolderContentsIndexResult.construct(metadata=metadata, folder_contents=folder_contents) - # Special level of security on top of libraries. - def _retrieve_user_folder_permissions(self, trans, current_user_roles, folder) -> UserFolderPermissions: - """Returns the permissions of the user for the given folder or raises an exception if the user has no access.""" - if trans.user_is_admin: - return UserFolderPermissions(access=True, modify=True, add=True, manage=True) - - security_agent: GalaxyRBACAgent = trans.app.security_agent - can_access_library = security_agent.can_access_library(current_user_roles, folder.parent_library) - if can_access_library: - return UserFolderPermissions( - access=True, # Access to the parent library means access to any sub-folder - modify=security_agent.can_modify_library_item(current_user_roles, folder), - add=security_agent.can_add_library_item(current_user_roles, folder), - manage=security_agent.can_manage_library_item(current_user_roles, folder), - ) - - warning_message = ( - f"SECURITY: User (id: {trans.user.id}) without proper access rights is trying to load folder with ID of {folder.id}" - if trans.user - else f"SECURITY: Anonymous user is trying to load restricted folder with ID of {folder.id}" - ) - log.warning(warning_message) - raise exceptions.ObjectNotFound(f"Folder with the id provided ( F{self.encode_id(folder.id)} ) was not found") - def create(self, trans, folder_id, payload: CreateLibraryFilePayload): """ Create a new library file from an HDA/HDCA. @@ -149,6 +110,32 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): log.exception(exc) raise exc + def _retrieve_user_permissions_on_folder(self, trans, current_user_roles, folder) -> UserFolderPermissions: + """Returns the permissions of the user for the given folder. + + Raises an ObjectNotFound exception if the user has no access to the parent library. + """ + if trans.user_is_admin: + return UserFolderPermissions(access=True, modify=True, add=True, manage=True) + + security_agent: GalaxyRBACAgent = trans.app.security_agent + can_access_library = security_agent.can_access_library(current_user_roles, folder.parent_library) + if can_access_library: + return UserFolderPermissions( + access=True, # Access to the parent library means access to any sub-folder + modify=security_agent.can_modify_library_item(current_user_roles, folder), + add=security_agent.can_add_library_item(current_user_roles, folder), + manage=security_agent.can_manage_library_item(current_user_roles, folder), + ) + + warning_message = ( + f"SECURITY: User (id: {trans.user.id}) without proper access rights is trying to load folder with ID of {folder.id}" + if trans.user + else f"SECURITY: Anonymous user is trying to load restricted folder with ID of {folder.id}" + ) + log.warning(warning_message) + raise exceptions.ObjectNotFound(f"Folder with the id provided ( F{self.encode_id(folder.id)} ) was not found") + def _serialize_dataset(self, trans, current_user_roles, tag_manager, content_item): security_agent = trans.app.security_agent is_admin = trans.user_is_admin @@ -194,3 +181,17 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): description=content_item.description, ) return folder_dict + + def _serialize_folder_metadata(self, trans, folder, user_permissions: UserFolderPermissions, total_rows: int): + full_path = self.folder_manager.build_folder_path(trans, folder) + parent_library_id = self.encode_id(folder.parent_library.id) if folder.parent_library else None + metadata = dict( + full_path=full_path, + total_rows=total_rows, + can_add_library_item=user_permissions.add, + can_modify_folder=user_permissions.modify, + folder_name=folder.name, + folder_description=folder.description, + parent_library_id=parent_library_id, + ) + return metadata From 380a4d53d640aa42174344320503ea09e5d742a4 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 1 Jul 2022 10:51:25 +0200 Subject: [PATCH 010/553] Add more type hints And slightly reduce the use of `trans` --- lib/galaxy/managers/folders.py | 16 ++--- .../services/library_folder_contents.py | 70 +++++++++++++------ 2 files changed, 56 insertions(+), 30 deletions(-) diff --git a/lib/galaxy/managers/folders.py b/lib/galaxy/managers/folders.py index 9daaae497d1..5453601205a 100644 --- a/lib/galaxy/managers/folders.py +++ b/lib/galaxy/managers/folders.py @@ -36,6 +36,7 @@ from galaxy.exceptions import ( ) from galaxy.model.scoped_session import galaxy_scoped_session from galaxy.security import RBACAgent +from galaxy.security.idencoding import IdEncodingHelper log = logging.getLogger(__name__) @@ -406,7 +407,7 @@ class FolderManager: self, sa_session: galaxy_scoped_session, folder: model.LibraryFolder, - user_role_ids, + user_role_ids: List[int], security_agent: RBACAgent, include_deleted: Optional[bool] = False, search_text: Optional[str] = None, @@ -448,7 +449,6 @@ class FolderManager: search_text: Optional[str] = None, is_admin: bool = False, ): - query = sa_session.query(model.LibraryDataset) query = query.filter(model.LibraryDataset.folder_id == folder.id) if is_admin: @@ -471,7 +471,6 @@ class FolderManager: actions_alias.role_id.in_(user_role_ids), ) ) - if search_text: search_text = search_text.lower() ldda_alias = aliased(model.LibraryDatasetDatasetAssociation) @@ -482,19 +481,20 @@ class FolderManager: func.lower(ldda_alias.message).contains(search_text, autoescape=True), ) ) - return query - def build_folder_path(self, trans, folder: model.LibraryFolder) -> List[Tuple[str, str]]: + def build_folder_path( + self, sa_session: galaxy_scoped_session, security: IdEncodingHelper, folder: model.LibraryFolder + ) -> List[Tuple[str, str]]: """ Returns the folder path from root to the given folder. The path items are tuples with the name and id of each folder for breadcrumb building purposes. """ current_folder = folder - path_to_root = [(f"F{trans.security.encode_id(current_folder.id)}", current_folder.name)] + path_to_root = [(f"F{security.encode_id(current_folder.id)}", current_folder.name)] while current_folder.parent_id is not None: - parent_folder = trans.sa_session.query(model.LibraryFolder).get(current_folder.parent_id) + parent_folder = sa_session.query(model.LibraryFolder).get(current_folder.parent_id) current_folder = parent_folder - path_to_root.insert(0, (f"F{trans.security.encode_id(current_folder.id)}", current_folder.name)) + path_to_root.insert(0, (f"F{security.encode_id(current_folder.id)}", current_folder.name)) return path_to_root diff --git a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py index 43ed5a23d5a..13a6fb9a13a 100644 --- a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py +++ b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py @@ -1,5 +1,10 @@ import logging from dataclasses import dataclass +from typing import ( + Any, + Dict, + List, +) from galaxy import ( exceptions, @@ -7,10 +12,12 @@ from galaxy import ( util, ) from galaxy.managers import base as managers_base +from galaxy.managers.context import ProvidesUserContext from galaxy.managers.folders import FolderManager from galaxy.managers.hdas import HDAManager from galaxy.model import tags from galaxy.model.security import GalaxyRBACAgent +from galaxy.schema.fields import DecodedDatabaseIdField from galaxy.schema.schema import ( CreateLibraryFilePayload, LibraryFolderContentsIndexQueryPayload, @@ -53,7 +60,10 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): ) def index( - self, trans, folder_id, payload: LibraryFolderContentsIndexQueryPayload + self, + trans: ProvidesUserContext, + folder_id: DecodedDatabaseIdField, + payload: LibraryFolderContentsIndexQueryPayload, ) -> LibraryFolderContentsIndexResult: """ Displays a collection (list) of a folder's contents (files and folders). Encoded folder ID is prepended @@ -71,15 +81,15 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): ) for content_item in contents: if isinstance(content_item, model.LibraryFolder): - serialized_item = self._serialize_folder(user_permissions, content_item) + serialized_item = self._serialize_library_folder(user_permissions, content_item) elif isinstance(content_item, model.LibraryDataset): - serialized_item = self._serialize_dataset(trans, current_user_roles, tag_manager, content_item) + serialized_item = self._serialize_library_dataset(trans, current_user_roles, tag_manager, content_item) folder_contents.append(serialized_item) - metadata = self._serialize_folder_metadata(trans, folder, user_permissions, total_rows) + metadata = self._serialize_library_folder_metadata(trans, folder, user_permissions, total_rows) return LibraryFolderContentsIndexResult.construct(metadata=metadata, folder_contents=folder_contents) - def create(self, trans, folder_id, payload: CreateLibraryFilePayload): + def create(self, trans: ProvidesUserContext, folder_id: DecodedDatabaseIdField, payload: CreateLibraryFilePayload): """ Create a new library file from an HDA/HDCA. """ @@ -110,7 +120,9 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): log.exception(exc) raise exc - def _retrieve_user_permissions_on_folder(self, trans, current_user_roles, folder) -> UserFolderPermissions: + def _retrieve_user_permissions_on_folder( + self, trans: ProvidesUserContext, current_user_roles: List[model.Role], folder: model.LibraryFolder + ) -> UserFolderPermissions: """Returns the permissions of the user for the given folder. Raises an ObjectNotFound exception if the user has no access to the parent library. @@ -136,23 +148,29 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): log.warning(warning_message) raise exceptions.ObjectNotFound(f"Folder with the id provided ( F{self.encode_id(folder.id)} ) was not found") - def _serialize_dataset(self, trans, current_user_roles, tag_manager, content_item): + def _serialize_library_dataset( + self, + trans: ProvidesUserContext, + current_user_roles: List[model.Role], + tag_manager: tags.GalaxyTagHandler, + library_dataset: model.LibraryDataset, + ) -> Dict[str, Any]: security_agent = trans.app.security_agent is_admin = trans.user_is_admin - ldda = content_item.library_dataset_dataset_association + ldda = library_dataset.library_dataset_dataset_association dataset = ldda.dataset # Access rights are checked on the dataset level, not on the ld or ldda level to maintain consistency is_unrestricted = security_agent.dataset_is_public(dataset) raw_size = int(ldda.get_size()) - library_dataset_dict = content_item.to_dict() + library_dataset_dict = library_dataset.to_dict() dataset_dict = dict( - id=self.encode_id(content_item.id), - name=content_item.name, + id=self.encode_id(library_dataset.id), + name=library_dataset.name, type=FILE_TYPE_NAME, - create_time=content_item.create_time.isoformat(), + create_time=library_dataset.create_time.isoformat(), update_time=ldda.update_time.isoformat(), can_manage=is_admin or (trans.user and security_agent.can_manage_dataset(current_user_roles, dataset)), - deleted=content_item.deleted, + deleted=library_dataset.deleted, file_ext=library_dataset_dict["file_ext"], date_uploaded=library_dataset_dict["date_uploaded"], # Is the dataset public or private? @@ -168,22 +186,30 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): ) return dataset_dict - def _serialize_folder(self, user_permissions, content_item): + def _serialize_library_folder( + self, user_permissions: UserFolderPermissions, folder: model.LibraryFolder + ) -> Dict[str, Any]: folder_dict = dict( - id=f"F{self.encode_id(content_item.id)}", - name=content_item.name, + id=f"F{self.encode_id(folder.id)}", + name=folder.name, type=FOLDER_TYPE_NAME, - create_time=content_item.create_time.isoformat(), - update_time=content_item.update_time.isoformat(), + create_time=folder.create_time.isoformat(), + update_time=folder.update_time.isoformat(), can_manage=user_permissions.manage, - deleted=content_item.deleted, + deleted=folder.deleted, can_modify=user_permissions.modify, - description=content_item.description, + description=folder.description, ) return folder_dict - def _serialize_folder_metadata(self, trans, folder, user_permissions: UserFolderPermissions, total_rows: int): - full_path = self.folder_manager.build_folder_path(trans, folder) + def _serialize_library_folder_metadata( + self, + trans: ProvidesUserContext, + folder: model.LibraryFolder, + user_permissions: UserFolderPermissions, + total_rows: int, + ) -> Dict[str, Any]: + full_path = self.folder_manager.build_folder_path(trans.sa_session, trans.security, folder) parent_library_id = self.encode_id(folder.parent_library.id) if folder.parent_library else None metadata = dict( full_path=full_path, From 82dae6bcbb28f0ea4631678f896a7645fe76b8c2 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 1 Jul 2022 17:48:39 +0200 Subject: [PATCH 011/553] Increase folder contents API tests coverage --- lib/galaxy_test/api/test_folder_contents.py | 111 ++++++++++++-------- 1 file changed, 68 insertions(+), 43 deletions(-) diff --git a/lib/galaxy_test/api/test_folder_contents.py b/lib/galaxy_test/api/test_folder_contents.py index 13e3eb22c6d..968dbaba55d 100644 --- a/lib/galaxy_test/api/test_folder_contents.py +++ b/lib/galaxy_test/api/test_folder_contents.py @@ -47,34 +47,32 @@ class FolderContentsApiTestCase(ApiTestCase): def test_index(self): folder_id = self._create_folder_in_library("Test Folder Contents Index") + self._create_subfolder_in(folder_id) self._create_dataset_in_folder(folder_id) response = self._get(f"folders/{folder_id}/contents") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == 1 + self._assert_index_count_is_correct(response, expected_contents_count=2) def test_index_include_deleted(self): folder_name = "Test Folder Contents Index include deleted" folder_id = self._create_folder_in_library(folder_name) + sub_folder_id = self._create_subfolder_in(folder_id) hda_id = self._create_dataset_in_folder(folder_id) self._delete_library_dataset(hda_id) + self._delete_subfolder(sub_folder_id) response = self._get(f"folders/{folder_id}/contents") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == 0 + self._assert_index_count_is_correct(response, expected_contents_count=0) include_deleted = True response = self._get(f"folders/{folder_id}/contents?include_deleted={include_deleted}") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == 1 - assert contents[0]["deleted"] is True + index_response = self._assert_index_count_is_correct(response, expected_contents_count=2) + for content in index_response["folder_contents"]: + assert content["deleted"] is True - def test_index_limit_offset(self): - folder_name = "Test Folder Contents Index limit" + def test_index_pagination(self): + folder_name = "Test Folder Contents Pagination" folder_id = self._create_folder_in_library(folder_name) num_subfolders = 5 @@ -88,32 +86,54 @@ class FolderContentsApiTestCase(ApiTestCase): total_items = num_datasets + num_subfolders response = self._get(f"folders/{folder_id}/contents") - self._assert_status_code_is(response, 200) - original_contents = response.json()["folder_contents"] - assert len(original_contents) == total_items + index_response = self._assert_index_count_is_correct(response, expected_contents_count=total_items) + original_contents = index_response["folder_contents"] limit = 7 response = self._get(f"folders/{folder_id}/contents?limit={limit}") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == limit + index_response = self._assert_index_count_is_correct( + response, expected_contents_count=limit, expected_total_count=total_items + ) + + limit = 20 + response = self._get(f"folders/{folder_id}/contents?limit={limit}") + index_response = self._assert_index_count_is_correct(response, expected_contents_count=total_items) offset = 3 response = self._get(f"folders/{folder_id}/contents?offset={offset}") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == total_items - offset + index_response = self._assert_index_count_is_correct( + response, expected_contents_count=total_items - offset, expected_total_count=total_items + ) + + offset = 20 + response = self._get(f"folders/{folder_id}/contents?offset={offset}") + index_response = self._assert_index_count_is_correct( + response, expected_contents_count=0, expected_total_count=total_items + ) limit = 4 offset = 4 response = self._get(f"folders/{folder_id}/contents?limit={limit}&offset={offset}") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == limit + index_response = self._assert_index_count_is_correct( + response, expected_contents_count=limit, expected_total_count=total_items + ) + contents = index_response["folder_contents"] expected_query_result = original_contents[offset : offset + limit] for index in range(limit): assert contents[index]["id"] == expected_query_result[index]["id"] + limit = 20 + offset = 6 + response = self._get(f"folders/{folder_id}/contents?limit={limit}&offset={offset}") + actual_limit = limit if limit < total_items else total_items - offset + index_response = self._assert_index_count_is_correct( + response, expected_contents_count=actual_limit, expected_total_count=total_items + ) + contents = index_response["folder_contents"] + expected_query_result = original_contents[offset : offset + actual_limit] + for index in range(actual_limit): + assert contents[index]["id"] == expected_query_result[index]["id"] + def test_index_search_text(self): folder_name = "Test Folder Contents Index search text" folder_id = self._create_folder_in_library(folder_name) @@ -130,15 +150,15 @@ class FolderContentsApiTestCase(ApiTestCase): search_terms = ["A", "B", "X"] for search_text in search_terms: - response = self._get(f"folders/{folder_id}/contents?search_text={search_text}") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] matching_names = [name for name in all_names if search_text.casefold() in name.casefold()] - assert len(contents) == len(matching_names) + response = self._get(f"folders/{folder_id}/contents?search_text={search_text}") + index_response = self._assert_index_count_is_correct(response, expected_contents_count=len(matching_names)) + contents = index_response["folder_contents"] + for content in contents: + assert search_text.casefold() in content["name"].casefold() def test_index_permissions_include_deleted(self): - - folder_name = "Test Folder Contents Index permissions include deteleted" + folder_name = "Test Folder Contents Index permissions include deleted" folder_id = self._create_folder_in_library(folder_name) num_subfolders = 5 @@ -171,22 +191,16 @@ class FolderContentsApiTestCase(ApiTestCase): # Verify deleted contents are not listed include_deleted = False response = self._get(f"folders/{folder_id}/contents?include_deleted={include_deleted}") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == num_non_deleted + self._assert_index_count_is_correct(response, expected_contents_count=num_non_deleted) include_deleted = True # Admins can see everything... response = self._get(f"folders/{folder_id}/contents?include_deleted={include_deleted}", admin=True) - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == num_total_contents + self._assert_index_count_is_correct(response, expected_contents_count=num_total_contents) # Owner can see everything too response = self._get(f"folders/{folder_id}/contents?include_deleted={include_deleted}") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == num_total_contents + self._assert_index_count_is_correct(response, expected_contents_count=num_total_contents) # Users with access but no modify permission can't see deleted with self._different_user(): @@ -196,15 +210,26 @@ class FolderContentsApiTestCase(ApiTestCase): with self._different_user(): response = self._get(f"folders/{folder_id}/contents?include_deleted={include_deleted}") - self._assert_status_code_is(response, 200) - contents = response.json()["folder_contents"] - assert len(contents) == num_non_deleted + self._assert_index_count_is_correct(response, expected_contents_count=num_non_deleted) + + def _assert_index_count_is_correct( + self, raw_response, expected_contents_count: int, expected_total_count: Optional[int] = None + ) -> dict: + self._assert_status_code_is(raw_response, 200) + if expected_total_count is None: + expected_total_count = expected_contents_count + index_response = raw_response.json() + metadata = index_response["metadata"] + contents = index_response["folder_contents"] + assert metadata["total_rows"] == expected_total_count, "Expected total rows doesn't match" + assert len(contents) == expected_contents_count, "Expected number of contents doesn't match" + return index_response def _create_folder_in_library(self, name: str) -> Any: root_folder_id = self.library["root_folder_id"] return self._create_subfolder_in(root_folder_id, name) - def _create_subfolder_in(self, folder_id: str, name: str) -> str: + def _create_subfolder_in(self, folder_id: str, name: Optional[str] = "Test Folder") -> str: data = { "name": name, "description": f"The description of {name}", From 56e7d44f341edc876faa82f6618ffdeef971c166 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 1 Jul 2022 18:05:52 +0200 Subject: [PATCH 012/553] Optimize library folder contents query With additional refactorings --- lib/galaxy/managers/folders.py | 154 ++++++++++-------- .../webapps/galaxy/api/folder_contents.py | 5 + 2 files changed, 95 insertions(+), 64 deletions(-) diff --git a/lib/galaxy/managers/folders.py b/lib/galaxy/managers/folders.py index 5453601205a..0461ae42d37 100644 --- a/lib/galaxy/managers/folders.py +++ b/lib/galaxy/managers/folders.py @@ -2,6 +2,7 @@ Manager and Serializer for Library Folders. """ import logging +from dataclasses import dataclass from typing import ( List, Optional, @@ -13,6 +14,7 @@ from sqlalchemy import ( and_, false, func, + not_, or_, ) from sqlalchemy.orm import aliased @@ -41,6 +43,15 @@ from galaxy.security.idencoding import IdEncodingHelper log = logging.getLogger(__name__) +@dataclass +class SecurityParams: + """Contains security data bundled for reusability.""" + + user_role_ids: List[model.Role] + security_agent: RBACAgent + is_admin: bool + + # ============================================================================= class FolderManager: """ @@ -366,17 +377,18 @@ class FolderManager: ) -> Tuple[List[Union[model.LibraryFolder, model.LibraryDataset]], int]: """Retrieves the contents of the given folder that match the provided filters and pagination parameters. Returns a tuple with the list of paginated contents and the total number of items contained in the folder.""" - is_admin = trans.user_is_admin sa_session = trans.sa_session - user_roles = trans.get_current_user_roles() - user_role_ids = [role.id for role in user_roles] - security_agent = trans.app.security_agent - content_items: List[Union[model.LibraryFolder, model.LibraryDataset]] = [] - - sub_folders_query = self._get_sub_folders_query( - sa_session, folder, user_role_ids, security_agent, include_deleted, search_text, is_admin + security_params = SecurityParams( + user_role_ids=[role.id for role in trans.get_current_user_roles()], + security_agent=trans.app.security_agent, + is_admin=trans.user_is_admin, ) - total_sub_folders = sub_folders_query.count() + + content_items: List[Union[model.LibraryFolder, model.LibraryDataset]] = [] + sub_folders_query = self._get_sub_folders_query( + sa_session, folder, security_params, include_deleted, search_text + ) + total_sub_folders: int = sub_folders_query.count() if limit is not None: sub_folders_query = sub_folders_query.limit(limit) if offset is not None: @@ -385,14 +397,16 @@ class FolderManager: content_items.extend(folders) # Update pagination + num_folders_returned = len(folders) + num_folders_skipped = total_sub_folders - num_folders_returned if limit: - limit -= len(folders) + limit -= num_folders_returned if offset: - offset -= len(folders) + offset -= num_folders_skipped offset = max(0, offset) datasets_query = self._get_contained_datasets_query( - sa_session, folder, user_role_ids, security_agent, include_deleted, search_text, is_admin + sa_session, folder, security_params, include_deleted, search_text ) total_datasets = datasets_query.count() if limit is not None: @@ -407,80 +421,92 @@ class FolderManager: self, sa_session: galaxy_scoped_session, folder: model.LibraryFolder, - user_role_ids: List[int], - security_agent: RBACAgent, + security: SecurityParams, include_deleted: Optional[bool] = False, search_text: Optional[str] = None, - is_admin: bool = False, ): - query = sa_session.query(model.LibraryFolder) - query = query.filter(model.LibraryFolder.parent_id == folder.id) - # Undeleted folders are non-restricted for now. - # Admins or users with MODIFY permissions can see deleted folders. - if include_deleted: - if not is_admin: # Filter by User has MODIFY permission. - actions_alias = aliased(model.LibraryDatasetPermissions) - query = query.outerjoin(model.LibraryDataset.actions.of_type(actions_alias)) - query = query.filter( - and_( - actions_alias.action == security_agent.permitted_actions.LIBRARY_MODIFY.action, - actions_alias.role_id.in_(user_role_ids), - ) - ) - else: - query = query.filter(model.LibraryFolder.deleted == false()) + """Builds a query to retrieve all the sub-folders contained in the given folder applying filters.""" + item_model = model.LibraryFolder + item_permission_model = model.LibraryFolderPermissions + query = sa_session.query(item_model) + query = query.filter(item_model.parent_id == folder.id) + query = self._filter_by_include_deleted(query, item_model, item_permission_model, include_deleted, security) if search_text: search_text = search_text.lower() query = query.filter( or_( - func.lower(model.LibraryFolder.name).contains(search_text, autoescape=True), - func.lower(model.LibraryFolder.description).contains(search_text, autoescape=True), + func.lower(item_model.name).contains(search_text, autoescape=True), + func.lower(item_model.description).contains(search_text, autoescape=True), ) ) + query = query.group_by(item_model.id) return query def _get_contained_datasets_query( self, sa_session: galaxy_scoped_session, folder: model.LibraryFolder, - user_role_ids: List[int], - security_agent: RBACAgent, + security: SecurityParams, include_deleted: Optional[bool] = False, search_text: Optional[str] = None, - is_admin: bool = False, ): - query = sa_session.query(model.LibraryDataset) - query = query.filter(model.LibraryDataset.folder_id == folder.id) - if is_admin: - if not include_deleted: - query = query.filter(model.LibraryDataset.deleted == false()) - else: - # Filter by User has ACCESS permission. - actions_alias = aliased(model.LibraryDatasetPermissions) - query = query.outerjoin(model.LibraryDataset.actions.of_type(actions_alias)) - query = query.filter( - and_( - actions_alias.action == security_agent.permitted_actions.DATASET_ACCESS.action, - actions_alias.role_id.in_(user_role_ids), - ) - ) - if include_deleted: # Filter by User has MODIFY permission. - query = query.filter( - and_( - actions_alias.action == security_agent.permitted_actions.LIBRARY_MODIFY.action, - actions_alias.role_id.in_(user_role_ids), - ) - ) - if search_text: - search_text = search_text.lower() - ldda_alias = aliased(model.LibraryDatasetDatasetAssociation) - query = query.outerjoin(model.LibraryDataset.library_dataset_dataset_association.of_type(ldda_alias)) + """Builds a query to retrieve all the datasets contained in the given folder applying filters.""" + item_model = model.LibraryDataset + item_permission_model = model.LibraryDatasetPermissions + access_action = security.security_agent.permitted_actions.DATASET_ACCESS.action + query = sa_session.query(item_model) + query = query.filter(item_model.folder_id == folder.id) + query = self._filter_by_include_deleted(query, item_model, item_permission_model, include_deleted, security) + ldda = aliased(model.LibraryDatasetDatasetAssociation) + query = query.outerjoin(item_model.library_dataset_dataset_association.of_type(ldda)) + if not security.is_admin: # Non-admin users require ACCESS permission + # We check against the actual dataset and not the ldda (for now?) + associated_dataset = aliased(model.Dataset) + dataset_permission = aliased(model.DatasetPermissions) + query = query.outerjoin(ldda.dataset.of_type(associated_dataset)) + query = query.outerjoin(associated_dataset.actions.of_type(dataset_permission)) query = query.filter( or_( - func.lower(ldda_alias.name).contains(search_text, autoescape=True), - func.lower(ldda_alias.message).contains(search_text, autoescape=True), + # The dataset is public + not_(dataset_permission.action == access_action), + # The user has explicit access + and_( + dataset_permission.action == access_action, + dataset_permission.role_id.in_(security.user_role_ids), + ), ) ) + + if search_text: + search_text = search_text.lower() + query = query.filter( + or_( + func.lower(ldda.name).contains(search_text, autoescape=True), + func.lower(ldda.message).contains(search_text, autoescape=True), + ) + ) + query = query.group_by(item_model.id) + return query + + def _filter_by_include_deleted( + self, query, item_model, item_permissions_model, include_deleted: Optional[bool], security: SecurityParams + ): + if include_deleted: # Admins or users with MODIFY permissions can see deleted contents + if not security.is_admin: + item_permission = aliased(item_permissions_model) + query = query.outerjoin(item_model.actions.of_type(item_permission)) + query = query.filter( + or_( + item_model.deleted == false(), # Is not deleted + # User has MODIFY permission + and_( + item_permission.action == security.security_agent.permitted_actions.LIBRARY_MODIFY.action, + item_permission.role_id.in_(security.user_role_ids), + ), + ) + ) + else: + query = query.filter(item_model.deleted == false()) return query def build_folder_path( diff --git a/lib/galaxy/webapps/galaxy/api/folder_contents.py b/lib/galaxy/webapps/galaxy/api/folder_contents.py index 47cf382b5a8..2e387609095 100644 --- a/lib/galaxy/webapps/galaxy/api/folder_contents.py +++ b/lib/galaxy/webapps/galaxy/api/folder_contents.py @@ -80,6 +80,11 @@ class FastAPILibraryFoldersContents: Additional metadata for the folder is provided in the response as a separate object containing data for breadcrumb path building, permissions and other folder's details. + + **Security note**: + - Accessing a library folder or sub-folder requires only access to the parent library. + - Deleted folders can only be accessed by admins or users with `MODIFY` permission. + - Datasets may be public, private or restricted (to a group of users). Listing deleted datasets has the same requirements as folders. """ payload = LibraryFolderContentsIndexQueryPayload( limit=limit, offset=offset, search_text=search_text, include_deleted=include_deleted From 3f4bb790ed70e95cc28452939c32b334ab71226f Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Mon, 4 Jul 2022 15:19:49 +0200 Subject: [PATCH 013/553] Increase folder contents security API test coverage Check that permissions behave as documented --- lib/galaxy_test/api/test_folder_contents.py | 42 ++++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/lib/galaxy_test/api/test_folder_contents.py b/lib/galaxy_test/api/test_folder_contents.py index 968dbaba55d..4ecbe07b3ca 100644 --- a/lib/galaxy_test/api/test_folder_contents.py +++ b/lib/galaxy_test/api/test_folder_contents.py @@ -157,6 +157,40 @@ class FolderContentsApiTestCase(ApiTestCase): for content in contents: assert search_text.casefold() in content["name"].casefold() + def test_index_permissions(self): + folder_name = "Test Folder Contents Index permissions" + folder_id = self._create_folder_in_library(folder_name) + dataset_id = self._create_dataset_in_folder(folder_id) + + self.dataset_populator.make_private(self.history_id, dataset_id) + + # Owner can access + response = self._get(f"folders/{folder_id}/contents") + self._assert_index_count_is_correct(response, expected_contents_count=1) + + # Admins can access + response = self._get(f"folders/{folder_id}/contents", admin=True) + self._assert_index_count_is_correct(response, expected_contents_count=1) + + # Other users can't access + with self._different_user(): + # Without access to the parent library the user gets a 404... should it be a 403 instead? + response = self._get(f"folders/{folder_id}/contents") + self._assert_status_code_is(response, 404) + + # Grant library access to this user + different_user_role_id = self.dataset_populator.user_private_role_id() + self._allow_library_access_to_user_role(different_user_role_id) # Runs as admin + + # The user can access the library folder but not the private dataset in it + response = self._get(f"folders/{folder_id}/contents") + self._assert_index_count_is_correct(response, expected_contents_count=0) + + # Grant access to this user + self._allow_dataset_access(dataset_id) + response = self._get(f"folders/{folder_id}/contents") + self._assert_index_count_is_correct(response, expected_contents_count=1) + def test_index_permissions_include_deleted(self): folder_name = "Test Folder Contents Index permissions include deleted" folder_id = self._create_folder_in_library(folder_name) @@ -206,9 +240,8 @@ class FolderContentsApiTestCase(ApiTestCase): with self._different_user(): different_user_role_id = self.dataset_populator.user_private_role_id() - self._allow_library_access_to_user_role(different_user_role_id) + self._allow_library_access_to_user_role(different_user_role_id) # Runs as admin - with self._different_user(): response = self._get(f"folders/{folder_id}/contents?include_deleted={include_deleted}") self._assert_index_count_is_correct(response, expected_contents_count=num_non_deleted) @@ -280,3 +313,8 @@ class FolderContentsApiTestCase(ApiTestCase): } response = self._post(f"libraries/{library_id}/permissions?action={action}", data=data, admin=True, json=True) self._assert_status_code_is(response, 200) + + def _allow_dataset_access(self, dataset_id: str): + payload = {"action": "remove_restrictions"} + update_response = self._put(f"datasets/{dataset_id}/permissions", payload, admin=True, json=True) + self._assert_status_code_is_ok(update_response) From 66917f3c3d6cd59ec1ffe8e4367d350680e576b8 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Mon, 4 Jul 2022 15:20:53 +0200 Subject: [PATCH 014/553] Fix `dataset_is_private_to_user` exception I was raising an exception when called by a bootstrap admin. --- lib/galaxy/model/security.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/model/security.py b/lib/galaxy/model/security.py index 738db0b548c..66b4eb7fc16 100644 --- a/lib/galaxy/model/security.py +++ b/lib/galaxy/model/security.py @@ -1146,7 +1146,7 @@ class GalaxyRBACAgent(RBACAgent): private_role = self.get_private_user_role(trans.user) access_roles = dataset.get_access_roles(self) - if len(access_roles) != 1: + if len(access_roles) != 1 or private_role is None: return False else: if access_roles[0].id == private_role.id: From 0b978f7687066346f66c09167cd9bdf4d0039aa1 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Mon, 4 Jul 2022 17:41:23 +0200 Subject: [PATCH 015/553] Fix public dataset condition in query --- lib/galaxy/managers/folders.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/managers/folders.py b/lib/galaxy/managers/folders.py index 0461ae42d37..cd38e7a963f 100644 --- a/lib/galaxy/managers/folders.py +++ b/lib/galaxy/managers/folders.py @@ -463,12 +463,20 @@ class FolderManager: # We check against the actual dataset and not the ldda (for now?) associated_dataset = aliased(model.Dataset) dataset_permission = aliased(model.DatasetPermissions) + is_public_dataset = not_( + sa_session.query(model.DatasetPermissions) + .filter( + model.DatasetPermissions.dataset_id == associated_dataset.id, + model.DatasetPermissions.action == access_action, + ) + .exists() + ) query = query.outerjoin(ldda.dataset.of_type(associated_dataset)) query = query.outerjoin(associated_dataset.actions.of_type(dataset_permission)) query = query.filter( or_( # The dataset is public - not_(dataset_permission.action == access_action), + is_public_dataset, # The user has explicit access and_( dataset_permission.action == access_action, From 46a8e50cda551b617d9438928a427901efe9f33e Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 8 Jul 2022 17:29:05 +0200 Subject: [PATCH 016/553] Fix folder contents API test Use correct underlying HDA ID for permissions editing --- lib/galaxy_test/api/test_folder_contents.py | 39 ++++++++++++--------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/lib/galaxy_test/api/test_folder_contents.py b/lib/galaxy_test/api/test_folder_contents.py index 4ecbe07b3ca..a9ef67e0890 100644 --- a/lib/galaxy_test/api/test_folder_contents.py +++ b/lib/galaxy_test/api/test_folder_contents.py @@ -2,6 +2,7 @@ from typing import ( Any, List, Optional, + Tuple, ) from galaxy_test.base.populators import ( @@ -58,8 +59,8 @@ class FolderContentsApiTestCase(ApiTestCase): folder_id = self._create_folder_in_library(folder_name) sub_folder_id = self._create_subfolder_in(folder_id) - hda_id = self._create_dataset_in_folder(folder_id) - self._delete_library_dataset(hda_id) + ldda_id, _ = self._create_dataset_in_folder(folder_id) + self._delete_library_dataset(ldda_id) self._delete_subfolder(sub_folder_id) response = self._get(f"folders/{folder_id}/contents") @@ -160,9 +161,9 @@ class FolderContentsApiTestCase(ApiTestCase): def test_index_permissions(self): folder_name = "Test Folder Contents Index permissions" folder_id = self._create_folder_in_library(folder_name) - dataset_id = self._create_dataset_in_folder(folder_id) + _, hda_id = self._create_dataset_in_folder(folder_id) - self.dataset_populator.make_private(self.history_id, dataset_id) + self._make_dataset_private(hda_id) # Owner can access response = self._get(f"folders/{folder_id}/contents") @@ -187,7 +188,7 @@ class FolderContentsApiTestCase(ApiTestCase): self._assert_index_count_is_correct(response, expected_contents_count=0) # Grant access to this user - self._allow_dataset_access(dataset_id) + self._allow_dataset_access(hda_id) response = self._get(f"folders/{folder_id}/contents") self._assert_index_count_is_correct(response, expected_contents_count=1) @@ -199,8 +200,8 @@ class FolderContentsApiTestCase(ApiTestCase): subfolder_ids: List[str] = [] deleted_subfolder_ids: List[str] = [] for index in range(num_subfolders): - id = self._create_subfolder_in(folder_id, name=f"Folder_{index}") - subfolder_ids.append(id) + ldda_id = self._create_subfolder_in(folder_id, name=f"Folder_{index}") + subfolder_ids.append(ldda_id) for index, subfolder_id in enumerate(subfolder_ids): if index % 2 == 0: @@ -208,19 +209,19 @@ class FolderContentsApiTestCase(ApiTestCase): deleted_subfolder_ids.append(subfolder_id) num_datasets = 5 - datasets_ids: List[str] = [] - deleted_datasets_ids: List[str] = [] + ldda_ids: List[str] = [] + deleted_ldda_ids: List[str] = [] for _ in range(num_datasets): - id = self._create_dataset_in_folder(folder_id) - datasets_ids.append(id) + ldda_id, _ = self._create_dataset_in_folder(folder_id) + ldda_ids.append(ldda_id) - for index, ldda_id in enumerate(datasets_ids): + for index, ldda_id in enumerate(ldda_ids): if index % 2 == 0: self._delete_library_dataset(ldda_id) - deleted_datasets_ids.append(ldda_id) + deleted_ldda_ids.append(ldda_id) num_total_contents = num_subfolders + num_datasets - num_non_deleted = num_total_contents - len(deleted_subfolder_ids) - len(deleted_datasets_ids) + num_non_deleted = num_total_contents - len(deleted_subfolder_ids) - len(deleted_ldda_ids) # Verify deleted contents are not listed include_deleted = False @@ -272,13 +273,14 @@ class FolderContentsApiTestCase(ApiTestCase): folder = create_response.json() return folder["id"] - def _create_dataset_in_folder(self, folder_id: str, name: Optional[str] = None) -> str: + def _create_dataset_in_folder(self, folder_id: str, name: Optional[str] = None) -> Tuple[str, str]: + """Returns a tuple with the LDDA ID and the underlying HDA ID""" hda_id = self._create_hda(name) data = { "from_hda_id": hda_id, } ldda = self._create_content_in_folder_with_payload(folder_id, data) - return ldda["id"] + return ldda["id"], hda_id def _create_content_in_folder_with_payload(self, folder_id: str, payload) -> Any: create_response = self._post(f"folders/{folder_id}/contents", data=payload, json=True) @@ -318,3 +320,8 @@ class FolderContentsApiTestCase(ApiTestCase): payload = {"action": "remove_restrictions"} update_response = self._put(f"datasets/{dataset_id}/permissions", payload, admin=True, json=True) self._assert_status_code_is_ok(update_response) + + def _make_dataset_private(self, dataset_id: str): + payload = {"action": "make_private"} + update_response = self._put(f"datasets/{dataset_id}/permissions", payload, json=True) + self._assert_status_code_is_ok(update_response) From 700fda00bc8b5edf84c5226848a8c5af44de6f7f Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Mon, 11 Jul 2022 15:23:22 +0200 Subject: [PATCH 017/553] Add API test for library folder contents sorting --- lib/galaxy_test/api/test_folder_contents.py | 103 ++++++++++++++++++-- 1 file changed, 96 insertions(+), 7 deletions(-) diff --git a/lib/galaxy_test/api/test_folder_contents.py b/lib/galaxy_test/api/test_folder_contents.py index a9ef67e0890..303b895c1c0 100644 --- a/lib/galaxy_test/api/test_folder_contents.py +++ b/lib/galaxy_test/api/test_folder_contents.py @@ -246,6 +246,85 @@ class FolderContentsApiTestCase(ApiTestCase): response = self._get(f"folders/{folder_id}/contents?include_deleted={include_deleted}") self._assert_index_count_is_correct(response, expected_contents_count=num_non_deleted) + def test_index_order_by(self): + folder_name = "Test Folder Contents Index Order By" + folder_id = self._create_folder_in_library(folder_name) + + subfolder_names = ["Folder_A", "Folder_B", "Folder_C"] + subfolder_descriptions = ["Description Z", "Description Y", "Description X"] + for index, name in enumerate(subfolder_names): + self._create_subfolder_in(folder_id, name, subfolder_descriptions[index]) + + dataset_names = ["a", "b", "c"] + ldda_messages = ["Message Z", "Message Y", "Message X"] + dataset_sizes = [50, 100, 10] + file_types = ["txt", "csv", "txt"] + for index, name in enumerate(dataset_names): + self._create_dataset_in_folder( + folder_id, + name, + content=f"{'0'*dataset_sizes[index]}", + ldda_message=ldda_messages[index], + file_type=file_types[index], + ) + + # Wait for datasets to finish upload + self.dataset_populator.wait_for_history(self.history_id) + + # Folders always have priority (they show-up before any dataset regardless of the sorting) and they + # can only be sorted by name, description and update_time, the other sorting attributes are ignored + sort_desc = False + order_by = "name" + expected_order_by_name = ["Folder_A", "Folder_B", "Folder_C", "a", "b", "c"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + order_by = "description" + expected_order_by_name = ["Folder_C", "Folder_B", "Folder_A", "c", "b", "a"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + order_by = "type" + expected_order_by_name = ["Folder_A", "Folder_B", "Folder_C", "b", "a", "c"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + order_by = "size" + expected_order_by_name = ["Folder_A", "Folder_B", "Folder_C", "c", "a", "b"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + order_by = "update_time" + expected_order_by_name = ["Folder_A", "Folder_B", "Folder_C", "a", "b", "c"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + sort_desc = True + order_by = "name" + expected_order_by_name = ["Folder_C", "Folder_B", "Folder_A", "c", "b", "a"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + order_by = "description" + expected_order_by_name = ["Folder_A", "Folder_B", "Folder_C", "a", "b", "c"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + order_by = "type" + expected_order_by_name = ["Folder_A", "Folder_B", "Folder_C", "a", "c", "b"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + order_by = "size" + expected_order_by_name = ["Folder_A", "Folder_B", "Folder_C", "b", "a", "c"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + order_by = "update_time" + expected_order_by_name = ["Folder_C", "Folder_B", "Folder_A", "c", "b", "a"] + self._assert_folder_order_by_is_expected(folder_id, order_by, sort_desc, expected_order_by_name) + + def _assert_folder_order_by_is_expected( + self, folder_id: str, order_by: str, sort_desc: str, expected_order_by_name: List[str] + ): + response = self._get(f"folders/{folder_id}/contents?order_by={order_by}&sort_desc={sort_desc}") + index_response = self._assert_index_count_is_correct( + response, expected_contents_count=len(expected_order_by_name) + ) + for index, item in enumerate(index_response["folder_contents"]): + assert item["name"] == expected_order_by_name[index] + def _assert_index_count_is_correct( self, raw_response, expected_contents_count: int, expected_total_count: Optional[int] = None ) -> dict: @@ -263,21 +342,31 @@ class FolderContentsApiTestCase(ApiTestCase): root_folder_id = self.library["root_folder_id"] return self._create_subfolder_in(root_folder_id, name) - def _create_subfolder_in(self, folder_id: str, name: Optional[str] = "Test Folder") -> str: + def _create_subfolder_in( + self, folder_id: str, name: Optional[str] = None, description: Optional[str] = None + ) -> str: data = { - "name": name, - "description": f"The description of {name}", + "name": name or "Test Folder", + "description": description or f"The description of {name}", } create_response = self._post(f"folders/{folder_id}", data=data, json=True) self._assert_status_code_is(create_response, 200) folder = create_response.json() return folder["id"] - def _create_dataset_in_folder(self, folder_id: str, name: Optional[str] = None) -> Tuple[str, str]: + def _create_dataset_in_folder( + self, + folder_id: str, + name: Optional[str] = None, + content: Optional[str] = None, + ldda_message: Optional[str] = None, + **kwds, + ) -> Tuple[str, str]: """Returns a tuple with the LDDA ID and the underlying HDA ID""" - hda_id = self._create_hda(name) + hda_id = self._create_hda(name, content, **kwds) data = { "from_hda_id": hda_id, + "ldda_message": ldda_message or "Test msg", } ldda = self._create_content_in_folder_with_payload(folder_id, data) return ldda["id"], hda_id @@ -287,8 +376,8 @@ class FolderContentsApiTestCase(ApiTestCase): self._assert_status_code_is(create_response, 200) return create_response.json() - def _create_hda(self, name: Optional[str] = None) -> str: - hda = self.dataset_populator.new_dataset(self.history_id, name=name) + def _create_hda(self, name: Optional[str] = None, content: Optional[str] = None, **kwds) -> str: + hda = self.dataset_populator.new_dataset(self.history_id, name=name, content=content, **kwds) hda_id = hda["id"] return hda_id From 06e08c7848aa03e90dbfef1961794b9c07a66e4f Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Mon, 11 Jul 2022 15:26:20 +0200 Subject: [PATCH 018/553] Add sorting support for data libraries contents --- lib/galaxy/managers/folders.py | 61 +++++++++++++------ lib/galaxy/schema/schema.py | 10 +++ .../webapps/galaxy/api/folder_contents.py | 24 +++++++- .../services/library_folder_contents.py | 4 +- 4 files changed, 77 insertions(+), 22 deletions(-) diff --git a/lib/galaxy/managers/folders.py b/lib/galaxy/managers/folders.py index cd38e7a963f..5f03a47b46e 100644 --- a/lib/galaxy/managers/folders.py +++ b/lib/galaxy/managers/folders.py @@ -37,6 +37,10 @@ from galaxy.exceptions import ( RequestParameterInvalidException, ) from galaxy.model.scoped_session import galaxy_scoped_session +from galaxy.schema.schema import ( + LibraryFolderContentsIndexQueryPayload, + LibraryFolderContentsIndexSortByEnum, +) from galaxy.security import RBACAgent from galaxy.security.idencoding import IdEncodingHelper @@ -52,6 +56,21 @@ class SecurityParams: is_admin: bool +LDDA_SORT_COLUMN_MAP = { + LibraryFolderContentsIndexSortByEnum.name: lambda ldda, dataset: ldda.name, + LibraryFolderContentsIndexSortByEnum.description: lambda ldda, dataset: ldda.message, + LibraryFolderContentsIndexSortByEnum.type: lambda ldda, dataset: ldda.extension, + LibraryFolderContentsIndexSortByEnum.size: lambda ldda, dataset: dataset.file_size, + LibraryFolderContentsIndexSortByEnum.update_time: lambda ldda, dataset: ldda.update_time, +} + +FOLDER_SORT_COLUMN_MAP = { + LibraryFolderContentsIndexSortByEnum.name: lambda folder: folder.name, + LibraryFolderContentsIndexSortByEnum.description: lambda folder: folder.description, + LibraryFolderContentsIndexSortByEnum.update_time: lambda folder: folder.update_time, +} + + # ============================================================================= class FolderManager: """ @@ -370,13 +389,12 @@ class FolderManager: self, trans, folder: model.LibraryFolder, - include_deleted: Optional[bool] = False, - search_text: Optional[str] = None, - offset: Optional[int] = None, - limit: Optional[int] = None, + payload: LibraryFolderContentsIndexQueryPayload, ) -> Tuple[List[Union[model.LibraryFolder, model.LibraryDataset]], int]: """Retrieves the contents of the given folder that match the provided filters and pagination parameters. Returns a tuple with the list of paginated contents and the total number of items contained in the folder.""" + limit = payload.limit + offset = payload.offset sa_session = trans.sa_session security_params = SecurityParams( user_role_ids=[role.id for role in trans.get_current_user_roles()], @@ -385,10 +403,11 @@ class FolderManager: ) content_items: List[Union[model.LibraryFolder, model.LibraryDataset]] = [] - sub_folders_query = self._get_sub_folders_query( - sa_session, folder, security_params, include_deleted, search_text - ) + sub_folders_query = self._get_sub_folders_query(sa_session, folder, security_params, payload) total_sub_folders: int = sub_folders_query.count() + if payload.order_by in FOLDER_SORT_COLUMN_MAP: + sort_column = FOLDER_SORT_COLUMN_MAP[payload.order_by](model.LibraryFolder) + sub_folders_query = sub_folders_query.order_by(sort_column.desc() if payload.sort_desc else sort_column) if limit is not None: sub_folders_query = sub_folders_query.limit(limit) if offset is not None: @@ -405,9 +424,7 @@ class FolderManager: offset -= num_folders_skipped offset = max(0, offset) - datasets_query = self._get_contained_datasets_query( - sa_session, folder, security_params, include_deleted, search_text - ) + datasets_query = self._get_contained_datasets_query(sa_session, folder, security_params, payload) total_datasets = datasets_query.count() if limit is not None: datasets_query = datasets_query.limit(limit) @@ -422,15 +439,17 @@ class FolderManager: sa_session: galaxy_scoped_session, folder: model.LibraryFolder, security: SecurityParams, - include_deleted: Optional[bool] = False, - search_text: Optional[str] = None, + payload: LibraryFolderContentsIndexQueryPayload, ): """Builds a query to retrieve all the sub-folders contained in the given folder applying filters.""" item_model = model.LibraryFolder item_permission_model = model.LibraryFolderPermissions + search_text = payload.search_text query = sa_session.query(item_model) query = query.filter(item_model.parent_id == folder.id) - query = self._filter_by_include_deleted(query, item_model, item_permission_model, include_deleted, security) + query = self._filter_by_include_deleted( + query, item_model, item_permission_model, payload.include_deleted, security + ) if search_text: search_text = search_text.lower() query = query.filter( @@ -447,21 +466,23 @@ class FolderManager: sa_session: galaxy_scoped_session, folder: model.LibraryFolder, security: SecurityParams, - include_deleted: Optional[bool] = False, - search_text: Optional[str] = None, + payload: LibraryFolderContentsIndexQueryPayload, ): """Builds a query to retrieve all the datasets contained in the given folder applying filters.""" + search_text = payload.search_text item_model = model.LibraryDataset item_permission_model = model.LibraryDatasetPermissions access_action = security.security_agent.permitted_actions.DATASET_ACCESS.action query = sa_session.query(item_model) query = query.filter(item_model.folder_id == folder.id) - query = self._filter_by_include_deleted(query, item_model, item_permission_model, include_deleted, security) + query = self._filter_by_include_deleted( + query, item_model, item_permission_model, payload.include_deleted, security + ) ldda = aliased(model.LibraryDatasetDatasetAssociation) + associated_dataset = aliased(model.Dataset) query = query.outerjoin(item_model.library_dataset_dataset_association.of_type(ldda)) if not security.is_admin: # Non-admin users require ACCESS permission # We check against the actual dataset and not the ldda (for now?) - associated_dataset = aliased(model.Dataset) dataset_permission = aliased(model.DatasetPermissions) is_public_dataset = not_( sa_session.query(model.DatasetPermissions) @@ -493,7 +514,11 @@ class FolderManager: func.lower(ldda.message).contains(search_text, autoescape=True), ) ) - query = query.group_by(item_model.id) + sort_column = LDDA_SORT_COLUMN_MAP[payload.order_by](ldda, associated_dataset) + query = query.order_by(sort_column.desc() if payload.sort_desc else sort_column) + + query = query.group_by(item_model.id, sort_column) + return query def _filter_by_include_deleted( diff --git a/lib/galaxy/schema/schema.py b/lib/galaxy/schema/schema.py index 0570082cde7..42439a46219 100644 --- a/lib/galaxy/schema/schema.py +++ b/lib/galaxy/schema/schema.py @@ -2531,11 +2531,21 @@ class LibraryFolderCurrentPermissions(BaseModel): ) +class LibraryFolderContentsIndexSortByEnum(str, Enum): + name = "name" + description = "description" + type = "type" + size = "size" + update_time = "update_time" + + class LibraryFolderContentsIndexQueryPayload(Model): limit: int = 10 offset: int = 0 search_text: Optional[str] = None include_deleted: Optional[bool] = None + order_by: LibraryFolderContentsIndexSortByEnum = LibraryFolderContentsIndexSortByEnum.name + sort_desc: Optional[bool] = False class LibraryFolderItemBase(Model): diff --git a/lib/galaxy/webapps/galaxy/api/folder_contents.py b/lib/galaxy/webapps/galaxy/api/folder_contents.py index 2e387609095..1924bd9c923 100644 --- a/lib/galaxy/webapps/galaxy/api/folder_contents.py +++ b/lib/galaxy/webapps/galaxy/api/folder_contents.py @@ -16,6 +16,7 @@ from galaxy.schema.schema import ( CreateLibraryFilePayload, LibraryFolderContentsIndexQueryPayload, LibraryFolderContentsIndexResult, + LibraryFolderContentsIndexSortByEnum, ) from galaxy.webapps.galaxy.services.library_folder_contents import LibraryFolderContentsService from . import ( @@ -52,6 +53,18 @@ IncludeDeletedQueryParam: Optional[bool] = Query( description="Returns also deleted contents. Deleted contents can only be retrieved by Administrators or users with", ) +SortByQueryParam: LibraryFolderContentsIndexSortByEnum = Query( + default=LibraryFolderContentsIndexSortByEnum.name, + title="Sort By", + description="Sort results by specified field.", +) + +SortDescQueryParam: Optional[bool] = Query( + default=False, + title="Sort Descending", + description="Sort results in descending order.", +) + @router.cbv class FastAPILibraryFoldersContents: @@ -75,19 +88,28 @@ class FastAPILibraryFoldersContents: offset: int = OffsetQueryParam, search_text: Optional[str] = SearchQueryParam, include_deleted: Optional[bool] = IncludeDeletedQueryParam, + order_by: LibraryFolderContentsIndexSortByEnum = SortByQueryParam, + sort_desc: Optional[bool] = SortDescQueryParam, ): """Returns a list of a folder's contents (files and sub-folders). Additional metadata for the folder is provided in the response as a separate object containing data for breadcrumb path building, permissions and other folder's details. + *Note*: When sorting, folders always have priority (they show-up before any dataset regardless of the sorting). + **Security note**: - Accessing a library folder or sub-folder requires only access to the parent library. - Deleted folders can only be accessed by admins or users with `MODIFY` permission. - Datasets may be public, private or restricted (to a group of users). Listing deleted datasets has the same requirements as folders. """ payload = LibraryFolderContentsIndexQueryPayload( - limit=limit, offset=offset, search_text=search_text, include_deleted=include_deleted + limit=limit, + offset=offset, + search_text=search_text, + include_deleted=include_deleted, + order_by=order_by, + sort_desc=sort_desc, ) return self.service.index(trans, folder_id, payload) diff --git a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py index 13a6fb9a13a..cdf1dfc6aa9 100644 --- a/lib/galaxy/webapps/galaxy/services/library_folder_contents.py +++ b/lib/galaxy/webapps/galaxy/services/library_folder_contents.py @@ -76,9 +76,7 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems): tag_manager = tags.GalaxyTagHandler(trans.sa_session) folder_contents = [] - contents, total_rows = self.folder_manager.get_contents( - trans, folder, payload.include_deleted, payload.search_text, payload.offset, payload.limit - ) + contents, total_rows = self.folder_manager.get_contents(trans, folder, payload) for content_item in contents: if isinstance(content_item, model.LibraryFolder): serialized_item = self._serialize_library_folder(user_permissions, content_item) From 6daec1c4219e6af1554d4d7c6de47f8c7405ee56 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Tue, 12 Jul 2022 14:24:31 +0200 Subject: [PATCH 019/553] Change available column sorting in library folders - Allow sorting by description - Disallow sorting by state (is a computed property and doesn't exists in the database) --- client/src/components/Libraries/LibraryFolder/table-fields.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/components/Libraries/LibraryFolder/table-fields.js b/client/src/components/Libraries/LibraryFolder/table-fields.js index 2ce78afaf23..812e8b54775 100644 --- a/client/src/components/Libraries/LibraryFolder/table-fields.js +++ b/client/src/components/Libraries/LibraryFolder/table-fields.js @@ -16,7 +16,7 @@ export const fields = [ { label: "Description", key: "message", - sortable: false, + sortable: true, }, { label: "Type", @@ -36,7 +36,7 @@ export const fields = [ { label: "State", key: "state", - sortable: true, + sortable: false, }, { label: "", From 85ec7832ba6f405dab1308b95d9a5743c3c2dc02 Mon Sep 17 00:00:00 2001 From: Matthias Bernt Date: Tue, 12 Jul 2022 14:51:38 +0200 Subject: [PATCH 020/553] extend docs and tests for conditional output actions for the case that a boolean is referred. In this case the python string value of the parameter value needs to be used as the value for the when tag which might be a bit confusing. The test is also extended such that: - multiple (two) conditional actions are used in one output - referring parameters in sections --- lib/galaxy/tool_util/xsd/galaxy.xsd | 9 ++++++++- .../tools/output_action_change_format.xml | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/galaxy/tool_util/xsd/galaxy.xsd b/lib/galaxy/tool_util/xsd/galaxy.xsd index b1705fae412..5f327b5b313 100644 --- a/lib/galaxy/tool_util/xsd/galaxy.xsd +++ b/lib/galaxy/tool_util/xsd/galaxy.xsd @@ -3761,6 +3761,7 @@ Name | Description ``$__app__`` | The ``galaxy.app.UniverseApplication`` instance, gives access to all other configuration file variables (e.g. $__app__.config.output_size_limit). Should be used as a last resort, may go away in future releases. ``$__target_datatype__`` | Only available in converter tools when run internally by Galaxy. Contains the target datatype of the conversion + Additional runtime properties are available as environment variables. Since these are not Cheetah variables (the values aren't available until runtime) these should likely be escaped with a backslash (``\``) when appearing in ``command`` or ``configfile`` elements. @@ -5468,6 +5469,11 @@ based on inputs, as shown below: ``` +Note that the value given in ``when`` tags needs to be the python string representation +of the value of the referred parameter, e.g. ``True`` or ``False`` if the referred +parameter is a boolean. + + ### Unconditional Actions and Column Names For a static file that contains a fixed number of columns, it is straight forward: @@ -5692,7 +5698,8 @@ of this directive. Value to match conditional input value -against. +against. This needs to be the python string representation of the parameter value, +e.g. ``True`` or ``False`` if the referred parameter is a boolean. diff --git a/test/functional/tools/output_action_change_format.xml b/test/functional/tools/output_action_change_format.xml index 6586a12eade..485e8700b3c 100644 --- a/test/functional/tools/output_action_change_format.xml +++ b/test/functional/tools/output_action_change_format.xml @@ -15,6 +15,9 @@ +
+ +
@@ -26,6 +29,14 @@ + + + + + + + + @@ -33,19 +44,23 @@ + + + + From 69df3a4645d1e7855623e81c39b9102f14cd9e56 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Tue, 12 Jul 2022 14:27:14 +0200 Subject: [PATCH 021/553] Refactor include_deleted handling - Rename to includeDeleted to use recommended naming convention - Simplify handling by using two-way binding (.sync) --- .../components/Libraries/LibrariesList.vue | 18 ++++++++--------- .../Libraries/LibraryFolder/LibraryFolder.vue | 20 ++++++++++--------- .../LibraryFolder/TopToolbar/FolderTopBar.vue | 11 ++-------- .../Libraries/LibraryFolder/services.js | 4 ++-- client/src/components/Libraries/services.js | 4 ++-- 5 files changed, 26 insertions(+), 31 deletions(-) diff --git a/client/src/components/Libraries/LibrariesList.vue b/client/src/components/Libraries/LibrariesList.vue index 7d73ec36eac..150ed65e1a5 100644 --- a/client/src/components/Libraries/LibrariesList.vue +++ b/client/src/components/Libraries/LibrariesList.vue @@ -62,7 +62,7 @@ class="form-control input_library_name" rows="3" /> -
{{ row.item.name }}
+
{{ row.item.name }}
{{ row.item.name }} diff --git a/client/src/components/History/Layout/LayoutListing.vue b/client/src/components/History/Layout/LayoutListing.vue new file mode 100644 index 00000000000..b4bec4e56ed --- /dev/null +++ b/client/src/components/History/Layout/LayoutListing.vue @@ -0,0 +1,96 @@ + + + + From 9d3cb3b01ab8523e0f386e29c9dd5427449bd118 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Sat, 2 Jul 2022 08:08:57 -0400 Subject: [PATCH 213/553] Swap nodejs to v16.15.1 --- .circleci/config.yml | 2 +- client/.node_version | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 22263782a1b..de8fab93353 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -93,7 +93,7 @@ jobs: - run: tox -e validate_test_tools js_lint: docker: - - image: cimg/node:16.13.2 + - image: cimg/node:16.15.1 <<: *set_workdir steps: - *restore_yarn_cache diff --git a/client/.node_version b/client/.node_version index 23d9c36a118..d9289897d30 100644 --- a/client/.node_version +++ b/client/.node_version @@ -1 +1 @@ -16.13.2 +16.15.1 From bfb35832ada95048b72c185b918b667e3e5daece Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 21 Jul 2022 16:48:49 -0400 Subject: [PATCH 214/553] Babel/build test upgrades --- client/package.json | 18 +- client/yarn.lock | 613 ++++++++++++++++++++++++++++---------------- 2 files changed, 397 insertions(+), 234 deletions(-) diff --git a/client/package.json b/client/package.json index 1a0c7397b48..f7d1a8f500a 100644 --- a/client/package.json +++ b/client/package.json @@ -121,26 +121,26 @@ "eslint": "eslint -c .eslintrc.json --ext .js,.vue src" }, "devDependencies": { - "@babel/core": "^7.18.6", - "@babel/eslint-parser": "^7.18.2", + "@babel/core": "^7.18.9", + "@babel/eslint-parser": "^7.18.9", "@babel/helper-validator-identifier": "^7.18.6", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.18.6", - "@babel/preset-env": "^7.18.6", - "@cerner/duplicate-package-checker-webpack-plugin": "^2.1.0", - "@testing-library/jest-dom": "^5.16.2", + "@babel/plugin-transform-runtime": "^7.18.9", + "@babel/preset-env": "^7.18.9", + "@cerner/duplicate-package-checker-webpack-plugin": "^2.3.0", + "@testing-library/jest-dom": "^5.16.4", "@vue/test-utils": "^1.3.0", "@vue/vue2-jest": "^28.0.1", "amdi18n-loader": "^0.9.3", - "autoprefixer": "^10.4.2", + "autoprefixer": "^10.4.7", "axios-mock-adapter": "^1.20.0", "babel-core": "^7.0.0-bridge.0", - "babel-jest": "^28.1.2", + "babel-jest": "^28.1.3", "babel-loader": "^8.2.5", "babel-plugin-transform-inline-environment-variables": "^0.4.4", "babel-plugin-transform-vue-template": "^0.4.2", "buffer": "^6.0.3", - "css-loader": "^6.6.0", + "css-loader": "^6.7.1", "css-minimizer-webpack-plugin": "^3.4.1", "del": "^6.0.0", "eslint": "^8.20.0", diff --git a/client/yarn.lock b/client/yarn.lock index 3208a5969e3..0d885c183e9 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -34,6 +34,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.6.tgz#8b37d24e88e8e21c499d4328db80577d8882fa53" integrity sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ== +"@babel/compat-data@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" + integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== + "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": version "7.16.12" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.12.tgz#5edc53c1b71e54881315923ae2aedea2522bb784" @@ -55,7 +60,7 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/core@^7.11.6", "@babel/core@^7.18.6": +"@babel/core@^7.11.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.6.tgz#54a107a3c298aee3fe5e1947a6464b9b6faca03d" integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ== @@ -76,10 +81,31 @@ json5 "^2.2.1" semver "^6.3.0" -"@babel/eslint-parser@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.2.tgz#e14dee36c010edfb0153cf900c2b0815e82e3245" - integrity sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A== +"@babel/core@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" + integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.9" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/eslint-parser@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.18.9.tgz#255a63796819a97b7578751bb08ab9f2a375a031" + integrity sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ== dependencies: eslint-scope "^5.1.1" eslint-visitor-keys "^2.1.0" @@ -103,6 +129,15 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" + integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== + dependencies: + "@babel/types" "^7.18.9" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" @@ -145,6 +180,16 @@ browserslist "^4.20.2" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.20.2" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz#6f15f8459f3b523b39e00a99982e2c040871ed72" @@ -200,6 +245,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q== +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" @@ -224,6 +274,14 @@ "@babel/template" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + "@babel/helper-get-function-arity@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" @@ -252,6 +310,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== + dependencies: + "@babel/types" "^7.18.9" + "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" @@ -294,6 +359,20 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" @@ -311,6 +390,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d" integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== +"@babel/helper-plugin-utils@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== + "@babel/helper-remap-async-to-generator@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz#fa1f81acd19daee9d73de297c0308783cd3cfc23" @@ -332,6 +416,17 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helper-replace-supers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" + integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/helper-simple-access@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7" @@ -346,12 +441,12 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz#7dff00a5320ca4cf63270e5a0eca4b268b7380d9" - integrity sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw== +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" + integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.18.9" "@babel/helper-split-export-declaration@^7.16.7": version "7.16.7" @@ -415,6 +510,15 @@ "@babel/traverse" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" + "@babel/highlight@^7.16.7": version "7.16.10" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" @@ -443,6 +547,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.6.tgz#845338edecad65ebffef058d3be851f1d28a63bc" integrity sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw== +"@babel/parser@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" + integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -450,14 +559,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" - integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions@^7.18.6": version "7.18.6" @@ -494,12 +603,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" - integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.18.6": @@ -510,12 +619,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" - integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": @@ -534,16 +643,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" - integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== +"@babel/plugin-proposal-object-rest-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" + integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" @@ -553,13 +662,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" - integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== +"@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-private-methods@^7.18.6": @@ -745,40 +854,40 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" - integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== +"@babel/plugin-transform-block-scoping@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" + integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-classes@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.6.tgz#3501a8f3f4c7d5697c27a3eedbee71d68312669f" - integrity sha512-XTg8XW/mKpzAF3actL554Jl/dOYoJtv3l8fxaEczpgz84IeeVf+T1u2CSvPHuZbt0w3JkIx4rdn/MRQI7mo0HQ== +"@babel/plugin-transform-classes@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" + integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" - integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" - integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== +"@babel/plugin-transform-destructuring@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" + integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-dotall-regex@^7.18.6": version "7.18.6" @@ -796,12 +905,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" - integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" @@ -811,28 +920,28 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.6.tgz#e0fdb813be908e91ccc9ec87b30cc2eabf046f7c" - integrity sha512-WAjoMf4wIiSsy88KmG7tgj2nFdEK7E46tArVtcgED7Bkj6Fg/tG5SbvNIOKxbFS2VFgNh6+iaPswBeQZm4ox8w== +"@babel/plugin-transform-for-of@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-function-name@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" - integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" - integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" @@ -870,14 +979,14 @@ "@babel/helper-simple-access" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" - integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== +"@babel/plugin-transform-modules-systemjs@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" + integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" @@ -912,10 +1021,10 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.6.tgz#cbe03d5a4c6385dd756034ac1baa63c04beab8dc" - integrity sha512-FjdqgMv37yVl/gwvzkcB+wfjRI8HQmc5EgOG9iGNvUY1ok+TjsoaMP7IqCDZBhkFcM5f3OPVMs6Dmp03C5k4/A== +"@babel/plugin-transform-parameters@^7.18.8": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" + integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -941,13 +1050,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-runtime@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz#77b14416015ea93367ca06979710f5000ff34ccb" - integrity sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA== +"@babel/plugin-transform-runtime@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.9.tgz#d9e4b1b25719307bfafbf43065ed7fb3a83adb8f" + integrity sha512-wS8uJwBt7/b/mzE13ktsJdmS4JP/j7PQSaADtnb4I2wL0zK51MQ0pmF8/Jy0wUIS96fr+fXT6S/ifiPXnvrlSg== dependencies: "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" babel-plugin-polyfill-corejs2 "^0.3.1" babel-plugin-polyfill-corejs3 "^0.5.2" babel-plugin-polyfill-regenerator "^0.3.1" @@ -960,13 +1069,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" - integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== +"@babel/plugin-transform-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" + integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" @@ -975,19 +1084,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-template-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" - integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typeof-symbol@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" - integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-escapes@^7.18.6": version "7.18.6" @@ -1004,29 +1113,29 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/preset-env@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.6.tgz#953422e98a5f66bc56cd0b9074eaea127ec86ace" - integrity sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw== +"@babel/preset-env@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" + integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions" "^7.18.6" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-private-methods" "^7.18.6" "@babel/plugin-proposal-private-property-in-object" "^7.18.6" "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" @@ -1048,37 +1157,37 @@ "@babel/plugin-transform-arrow-functions" "^7.18.6" "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.6" - "@babel/plugin-transform-classes" "^7.18.6" - "@babel/plugin-transform-computed-properties" "^7.18.6" - "@babel/plugin-transform-destructuring" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.6" - "@babel/plugin-transform-function-name" "^7.18.6" - "@babel/plugin-transform-literals" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" "@babel/plugin-transform-member-expression-literals" "^7.18.6" "@babel/plugin-transform-modules-amd" "^7.18.6" "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" "@babel/plugin-transform-modules-umd" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" "@babel/plugin-transform-property-literals" "^7.18.6" "@babel/plugin-transform-regenerator" "^7.18.6" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.6" - "@babel/plugin-transform-typeof-symbol" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" "@babel/plugin-transform-unicode-escapes" "^7.18.6" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.6" + "@babel/types" "^7.18.9" babel-plugin-polyfill-corejs2 "^0.3.1" babel-plugin-polyfill-corejs3 "^0.5.2" babel-plugin-polyfill-regenerator "^0.3.1" @@ -1153,6 +1262,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.0.0", "@babel/types@^7.10.3", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.16.8" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.8.tgz#0ba5da91dd71e0a4e7781a30f22770831062e3c1" @@ -1169,15 +1294,23 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" +"@babel/types@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" + integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@cerner/duplicate-package-checker-webpack-plugin@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@cerner/duplicate-package-checker-webpack-plugin/-/duplicate-package-checker-webpack-plugin-2.1.0.tgz#ae2f777319d98815df851490ca6dbeef7a42ae16" - integrity sha512-u4KM6/QPvvq8XWYan8khDbdysPcWqcuCxirgHfFtSmikVcxTlrz3n+8FYKhf83HZTtT47kACsIESp3xktP9hfg== +"@cerner/duplicate-package-checker-webpack-plugin@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@cerner/duplicate-package-checker-webpack-plugin/-/duplicate-package-checker-webpack-plugin-2.3.0.tgz#67de41aae7f756307f9306c5a87c35011ed0f29b" + integrity sha512-2FdUL/10qOjXzPTt/2dcjQPHDcsI+svvdU3KERGZaUvH5IwDdzE+nGLAx1+ICxhr6cqU29zvWR6GHGOFp+fbWA== dependencies: chalk "^4.1.0" find-root "^1.0.0" @@ -1483,12 +1616,12 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.1.0" -"@jest/schemas@^28.0.2": - version "28.0.2" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.0.2.tgz#08c30df6a8d07eafea0aef9fb222c5e26d72e613" - integrity sha512-YVDJZjd4izeTDkij00vHHAymNXQ6WWsdChFRK86qck6Jpr3DCL5W3Is3vslviRlP+bLuMYRLbdp98amMvqudhA== +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== dependencies: - "@sinclair/typebox" "^0.23.3" + "@sinclair/typebox" "^0.24.1" "@jest/source-map@^27.4.0": version "27.4.0" @@ -1540,22 +1673,22 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/transform@^28.1.2": - version "28.1.2" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.2.tgz#b367962c53fd53821269bde050ce373e111327c1" - integrity sha512-3o+lKF6iweLeJFHBlMJysdaPbpoMmtbHEFsjzSv37HIq/wWt5ijTeO2Yf7MO5yyczCopD507cNwNLeX8Y/CuIg== +"@jest/transform@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" + integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" "@jridgewell/trace-mapping" "^0.3.13" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.9" - jest-haste-map "^28.1.1" + jest-haste-map "^28.1.3" jest-regex-util "^28.0.2" - jest-util "^28.1.1" + jest-util "^28.1.3" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" @@ -1572,12 +1705,12 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@jest/types@^28.1.1": - version "28.1.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.1.tgz#d059bbc80e6da6eda9f081f293299348bd78ee0b" - integrity sha512-vRXVqSg1VhDnB8bWcmvLzmg0Bt9CRKVgHPXqYwvWMX3TvAjeO+nRuK6+VdTKCtWOvYlmkF/HqNAL/z+N3B53Kw== +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== dependencies: - "@jest/schemas" "^28.0.2" + "@jest/schemas" "^28.1.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -1741,10 +1874,10 @@ "@sentry/types" "6.17.4" tslib "^1.9.3" -"@sinclair/typebox@^0.23.3": - version "0.23.5" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.5.tgz#93f7b9f4e3285a7a9ade7557d9a8d36809cbc47d" - integrity sha512-AFBVi/iT4g20DHoujvMH1aEDn8fGJh4xsRGCP6d8RpLPMqsNPvW01Jcn0QysXTsg++/xj25NmJsGyH9xug/wKg== +"@sinclair/typebox@^0.24.1": + version "0.24.20" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.20.tgz#11a657875de6008622d53f56e063a6347c51a6dd" + integrity sha512-kVaO5aEFZb33nPMTZBxiPEkY+slxiPtqC7QX8f9B3eGOMBvEfuMfxp9DSTTCsRJPumPKjrge4yagyssO4q6qzQ== "@sinonjs/commons@^1.6.0", "@sinonjs/commons@^1.7.0", "@sinonjs/commons@^1.8.3": version "1.8.3" @@ -1793,10 +1926,10 @@ resolved "https://registry.yarnpkg.com/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz#568d9beae00b0d835f4f8c53fd55714986492e61" integrity sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ== -"@testing-library/jest-dom@^5.16.2": - version "5.16.2" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.2.tgz#f329b36b44aa6149cd6ced9adf567f8b6aa1c959" - integrity sha512-6ewxs1MXWwsBFZXIk4nKKskWANelkdUehchEOokHsN8X7c2eKXGw+77aRV63UU8f/DTSVUPLaGxdrj4lN7D/ug== +"@testing-library/jest-dom@^5.16.4": + version "5.16.4" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.4.tgz#938302d7b8b483963a3ae821f1c0808f872245cd" + integrity sha512-Gy+IoFutbMQcky0k+bqqumXZ1cTGswLsFqmNLzNdSKkU9KGV2u9oXhukCbbJ9/LRPKiqwxEE8VpV/+YZlfkPUA== dependencies: "@babel/runtime" "^7.9.2" "@types/testing-library__jest-dom" "^5.9.1" @@ -2653,14 +2786,14 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^10.4.2: - version "10.4.2" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.2.tgz#25e1df09a31a9fba5c40b578936b90d35c9d4d3b" - integrity sha512-9fOPpHKuDW1w/0EKfRmVnxTDt8166MAnLI3mgZ1JCnhNtYWxcJ6Ud5CO/AVOZi/AvFa8DY9RTy3h3+tFBlrrdQ== +autoprefixer@^10.4.7: + version "10.4.7" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" + integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== dependencies: - browserslist "^4.19.1" - caniuse-lite "^1.0.30001297" - fraction.js "^4.1.2" + browserslist "^4.20.3" + caniuse-lite "^1.0.30001335" + fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" postcss-value-parser "^4.2.0" @@ -2705,15 +2838,15 @@ babel-jest@^27.4.6: graceful-fs "^4.2.4" slash "^3.0.0" -babel-jest@^28.1.2: - version "28.1.2" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.2.tgz#2b37fb81439f14d34d8b2cc4a4bd7efabf9acbfe" - integrity sha512-pfmoo6sh4L/+5/G2OOfQrGJgvH7fTa1oChnuYH2G/6gA+JwDvO8PELwvwnofKBMNrQsam0Wy/Rw+QSrBNewq2Q== +babel-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" + integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== dependencies: - "@jest/transform" "^28.1.2" + "@jest/transform" "^28.1.3" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^28.1.1" + babel-preset-jest "^28.1.3" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -2756,10 +2889,10 @@ babel-plugin-jest-hoist@^27.4.0: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-jest-hoist@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.1.tgz#5e055cdcc47894f28341f87f5e35aad2df680b11" - integrity sha512-NovGCy5Hn25uMJSAU8FaHqzs13cFoOI4lhIujiepssjCKRsAo3TA734RDWSGxuFTsUJXerYOqQQodlxgmtqbzw== +babel-plugin-jest-hoist@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" + integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -2829,12 +2962,12 @@ babel-preset-jest@^27.4.0: babel-plugin-jest-hoist "^27.4.0" babel-preset-current-node-syntax "^1.0.0" -babel-preset-jest@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.1.tgz#5b6e5e69f963eb2d70f739c607b8f723c0ee75e4" - integrity sha512-FCq9Oud0ReTeWtcneYf/48981aTfXYuB9gbU4rBNNJVBSQ6ssv7E6v/qvbBxtOWwZFXjLZwpg+W3q7J6vhH25g== +babel-preset-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" + integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== dependencies: - babel-plugin-jest-hoist "^28.1.1" + babel-plugin-jest-hoist "^28.1.3" babel-preset-current-node-syntax "^1.0.0" babel-runtime@^6.26.0: @@ -3030,7 +3163,7 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.19.1: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5: version "4.19.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.1.tgz#4ac0435b35ab655896c31d53018b6dd5e9e4c9a3" integrity sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A== @@ -3062,6 +3195,16 @@ browserslist@^4.20.2, browserslist@^4.21.0: node-releases "^2.0.5" update-browserslist-db "^1.0.4" +browserslist@^4.20.3: + version "4.21.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf" + integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA== + dependencies: + caniuse-lite "^1.0.30001366" + electron-to-chromium "^1.4.188" + node-releases "^2.0.6" + update-browserslist-db "^1.0.4" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3178,10 +3321,20 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286, caniuse-lite@^1.0.30001297, caniuse-lite@^1.0.30001304, caniuse-lite@^1.0.30001317: - version "1.0.30001373" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz" - integrity sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001286: + version "1.0.30001304" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001304.tgz#38af55ed3fc8220cb13e35e6e7309c8c65a05559" + integrity sha512-bdsfZd6K6ap87AGqSHJP/s1V+U6Z5lyrcbBu3ovbCCf8cSYpwTtGrCBObMpJqwxfTbLW6YTIdbb1jEeTelcpYQ== + +caniuse-lite@^1.0.30001304, caniuse-lite@^1.0.30001317: + version "1.0.30001327" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz#c1546d7d7bb66506f0ccdad6a7d07fc6d668c858" + integrity sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w== + +caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001366: + version "1.0.30001368" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz#c5c06381c6051cd863c45021475434e81936f713" + integrity sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ== caniuse-lite@^1.0.30001359: version "1.0.30001361" @@ -3689,13 +3842,13 @@ css-line-break@^2.1.0: dependencies: utrie "^1.0.2" -css-loader@^6.6.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.6.0.tgz#c792ad5510bd1712618b49381bd0310574fafbd3" - integrity sha512-FK7H2lisOixPT406s5gZM1S3l8GrfhEBT3ZiL2UX1Ng1XWs0y2GPllz/OTyvbaHe12VgQrIXIzuEGVlbUhodqg== +css-loader@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== dependencies: icss-utils "^5.1.0" - postcss "^8.4.5" + postcss "^8.4.7" postcss-modules-extract-imports "^3.0.0" postcss-modules-local-by-default "^4.0.0" postcss-modules-scope "^3.0.0" @@ -4230,6 +4383,11 @@ electron-to-chromium@^1.4.172: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.176.tgz#61ab2a1de3b5072ee31881a937c08ac6780d1cfa" integrity sha512-92JdgyRlcNDwuy75MjuFSb3clt6DGJ2IXSpg0MCjKd3JV9eSmuUAIyWiGAp/EtT0z2D4rqbYqThQLV90maH3Zw== +electron-to-chromium@^1.4.188: + version "1.4.196" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.196.tgz#e18cdc5c1c2c2ebf78da237d0c374cc3b244d4cb" + integrity sha512-uxMa/Dt7PQsLBVXwH+t6JvpHJnrsYBaxWKi/J6HE+/nBtoHENhwBoNkgkm226/Kfxeg0z1eMQLBRPPKcDH8xWA== + electron-to-chromium@^1.4.84: version "1.4.106" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz#e7a3bfa9d745dd9b9e597616cb17283cc349781a" @@ -5022,10 +5180,10 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.1.2.tgz#13e420a92422b6cf244dff8690ed89401029fbe8" - integrity sha512-o2RiJQ6DZaR/5+Si0qJUIy637QMRudSi9kU/FFzx9EZazrIdnBgpU+3sEWCxAVhH2RtxW2Oz+T4p2o8uOPVcgA== +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== fragment-cache@^0.2.1: version "0.2.1" @@ -6285,20 +6443,20 @@ jest-haste-map@^27.4.6: optionalDependencies: fsevents "^2.3.2" -jest-haste-map@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.1.tgz#471685f1acd365a9394745bb97c8fc16289adca3" - integrity sha512-ZrRSE2o3Ezh7sb1KmeLEZRZ4mgufbrMwolcFHNRSjKZhpLa8TdooXOOFlSwoUzlbVs1t0l7upVRW2K7RWGHzbQ== +jest-haste-map@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" + integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" jest-regex-util "^28.0.2" - jest-util "^28.1.1" - jest-worker "^28.1.1" + jest-util "^28.1.3" + jest-worker "^28.1.3" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: @@ -6532,12 +6690,12 @@ jest-util@^27.4.2: graceful-fs "^4.2.4" picomatch "^2.2.3" -jest-util@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.1.tgz#ff39e436a1aca397c0ab998db5a51ae2b7080d05" - integrity sha512-FktOu7ca1DZSyhPAxgxB6hfh2+9zMoJ7aEQA759Z6p45NuO8mWcqujH+UdHlCm/V6JTWwDztM2ITCzU1ijJAfw== +jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== dependencies: - "@jest/types" "^28.1.1" + "@jest/types" "^28.1.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" @@ -6578,10 +6736,10 @@ jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.4.6: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^28.1.1: - version "28.1.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.1.tgz#3480c73247171dfd01eda77200f0063ab6a3bf28" - integrity sha512-Au7slXB08C6h+xbJPp7VIb6U0XX5Kc9uel/WFc6/rcTzGiaVCBRngBExSYuXSLFPULPSYU3cJ3ybS988lNFQhQ== +jest-worker@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== dependencies: "@types/node" "*" merge-stream "^2.0.0" @@ -7524,6 +7682,11 @@ node-releases@^2.0.5: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== + node-watch@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.7.2.tgz#545f057da8500487eb8287adcb4cb5a7338d7e21" @@ -8299,7 +8462,7 @@ postcss@^7.0.36: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.3.5, postcss@^8.4.5: +postcss@^8.3.5: version "8.4.6" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.6.tgz#c5ff3c3c457a23864f32cb45ac9b741498a09ae1" integrity sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA== @@ -8308,7 +8471,7 @@ postcss@^8.3.5, postcss@^8.4.5: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.14: +postcss@^8.4.14, postcss@^8.4.7: version "8.4.14" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== From a5d38f81aaf9f82a03deca319a3c8b6c2d3d8446 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 21 Jul 2022 17:00:37 -0400 Subject: [PATCH 215/553] Vue 2.7.7 --- client/package.json | 4 ++-- client/yarn.lock | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/client/package.json b/client/package.json index f7d1a8f500a..8eab17cf87d 100644 --- a/client/package.json +++ b/client/package.json @@ -81,7 +81,7 @@ "tus-js-client": "^2.3.0", "underscore": "^1.13.2", "util": "^0.12.4", - "vue": "^2.7.0", + "vue": "^2.7.7", "vue-infinite-scroll": "^2.0.2", "vue-multiselect": "^2.1.6", "vue-observe-visibility": "^1.0.0", @@ -172,7 +172,7 @@ "store": "^2.0.12", "style-loader": "^3.3.1", "vue-loader": "^15.10.0", - "vue-template-compiler": "^2.7.0", + "vue-template-compiler": "^2.7.7", "webpack": "^5.73.0", "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.9.3", diff --git a/client/yarn.lock b/client/yarn.lock index 0d885c183e9..31fe92e1cb1 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -2230,10 +2230,10 @@ dependencies: "@types/yargs-parser" "*" -"@vue/compiler-sfc@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.0.tgz#1c203e85290688e10ed3e70b151b9a2f8acab9c1" - integrity sha512-hPOI15RsXO1G8aK6FNF93ld9C/D4e/uAJBE59K8NnL8giuKqeVksvamgu4jKhCJ9f9bbUpj5BuSV3sufIx2hmw== +"@vue/compiler-sfc@2.7.7": + version "2.7.7" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.7.tgz#74aebb24c1ebfa22642c70f27ffaeca4dabdf692" + integrity sha512-Ah8dIuo6ZVPHTq9+s4rBU/YpJu3vGSNyeOTCrPrVPQnkUfnT5Ig+IKBhePuQWFXguYb2TuEWrEfiiX9DZ3aJlA== dependencies: "@babel/parser" "^7.18.4" postcss "^8.4.14" @@ -10486,10 +10486,10 @@ vue-style-loader@^4.1.0: hash-sum "^1.0.2" loader-utils "^1.0.2" -vue-template-compiler@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.0.tgz#b8ec6b9eb8ca99f20534ac75f0f374d3e48347cf" - integrity sha512-b9kKOPNS6J2BVf9skXkKsUwQLP3Bjfb/gG6UoBt3fn4xUVEDko5TSWmkPGW6dSSeAOOvYEMALdouv9caKlTq0Q== +vue-template-compiler@^2.7.7: + version "2.7.7" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.7.7.tgz#9ac85dc50216d01fb5e2fb16b6c3f5ed11b4b104" + integrity sha512-vxOsjWhvDPyMW7QwXPecNmTNwKyXiF+j4KjBFjDxYPuY0xvqCT5o9WrapVItR/Nrh0XThfBaL19kXFSNYtbKmw== dependencies: de-indent "^1.0.2" he "^1.2.0" @@ -10509,12 +10509,12 @@ vue@^2.6.10: resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== -vue@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.0.tgz#9542552e0460563feff11727949f8964e2501bed" - integrity sha512-su25f1hocH+QNkVEqk+Oj7B+mkDIWU70l0YY7nYSJFEs3Z64njXxo65RUXnWH46ooEhKmEWyLdW6HcYn8coNrg== +vue@^2.7.7: + version "2.7.7" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.7.tgz#e3a966944e461e4abb496c82362e8763e98e6527" + integrity sha512-osfkncsGCWqtch+YWYxbqTNQ9hl/UQ6TFRkdmK/VqAjuMpxzr5QotFsYpmJ1AB1ez2LJeIKXDmtMkXUotMOTsA== dependencies: - "@vue/compiler-sfc" "2.7.0" + "@vue/compiler-sfc" "2.7.7" csstype "^3.1.0" vuedraggable@2.24.3: From 5ba892b9e54f821591cbce627c0df3277209284d Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 21 Jul 2022 17:30:19 -0400 Subject: [PATCH 216/553] Force autoprefixer back to compatible --- client/package.json | 2 +- client/yarn.lock | 34 +++++++--------------------------- 2 files changed, 8 insertions(+), 28 deletions(-) diff --git a/client/package.json b/client/package.json index 8eab17cf87d..d854f45a4c8 100644 --- a/client/package.json +++ b/client/package.json @@ -132,7 +132,7 @@ "@vue/test-utils": "^1.3.0", "@vue/vue2-jest": "^28.0.1", "amdi18n-loader": "^0.9.3", - "autoprefixer": "^10.4.7", + "autoprefixer": "10.4.5", "axios-mock-adapter": "^1.20.0", "babel-core": "^7.0.0-bridge.0", "babel-jest": "^28.1.3", diff --git a/client/yarn.lock b/client/yarn.lock index 31fe92e1cb1..51f8fbbc599 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -2786,13 +2786,13 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^10.4.7: - version "10.4.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf" - integrity sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA== +autoprefixer@10.4.5: + version "10.4.5" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.5.tgz#662193c744094b53d3637f39be477e07bd904998" + integrity sha512-Fvd8yCoA7lNX/OUllvS+aS1I7WRBclGXsepbvT8ZaPgrH24rgXpZzF0/6Hh3ZEkwg+0AES/Osd196VZmYoEFtw== dependencies: - browserslist "^4.20.3" - caniuse-lite "^1.0.30001335" + browserslist "^4.20.2" + caniuse-lite "^1.0.30001332" fraction.js "^4.2.0" normalize-range "^0.1.2" picocolors "^1.0.0" @@ -3195,16 +3195,6 @@ browserslist@^4.20.2, browserslist@^4.21.0: node-releases "^2.0.5" update-browserslist-db "^1.0.4" -browserslist@^4.20.3: - version "4.21.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf" - integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA== - dependencies: - caniuse-lite "^1.0.30001366" - electron-to-chromium "^1.4.188" - node-releases "^2.0.6" - update-browserslist-db "^1.0.4" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3331,7 +3321,7 @@ caniuse-lite@^1.0.30001304, caniuse-lite@^1.0.30001317: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001327.tgz#c1546d7d7bb66506f0ccdad6a7d07fc6d668c858" integrity sha512-1/Cg4jlD9qjZzhbzkzEaAC2JHsP0WrOc8Rd/3a3LuajGzGWR/hD7TVyvq99VqmTy99eVh8Zkmdq213OgvgXx7w== -caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001366: +caniuse-lite@^1.0.30001332: version "1.0.30001368" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz#c5c06381c6051cd863c45021475434e81936f713" integrity sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ== @@ -4383,11 +4373,6 @@ electron-to-chromium@^1.4.172: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.176.tgz#61ab2a1de3b5072ee31881a937c08ac6780d1cfa" integrity sha512-92JdgyRlcNDwuy75MjuFSb3clt6DGJ2IXSpg0MCjKd3JV9eSmuUAIyWiGAp/EtT0z2D4rqbYqThQLV90maH3Zw== -electron-to-chromium@^1.4.188: - version "1.4.196" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.196.tgz#e18cdc5c1c2c2ebf78da237d0c374cc3b244d4cb" - integrity sha512-uxMa/Dt7PQsLBVXwH+t6JvpHJnrsYBaxWKi/J6HE+/nBtoHENhwBoNkgkm226/Kfxeg0z1eMQLBRPPKcDH8xWA== - electron-to-chromium@^1.4.84: version "1.4.106" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.106.tgz#e7a3bfa9d745dd9b9e597616cb17283cc349781a" @@ -7682,11 +7667,6 @@ node-releases@^2.0.5: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - node-watch@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/node-watch/-/node-watch-0.7.2.tgz#545f057da8500487eb8287adcb4cb5a7338d7e21" From 2289b449a535db99f17fde1e68800da3cecc5d90 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Mon, 25 Jul 2022 08:04:10 -0400 Subject: [PATCH 217/553] vdeep usage adjustments for vue3 --- .../src/components/NewUserWelcome/NewUserWelcome.vue | 2 +- client/src/components/Workflow/Invocations.vue | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/src/components/NewUserWelcome/NewUserWelcome.vue b/client/src/components/NewUserWelcome/NewUserWelcome.vue index 5f9b4f7d4aa..a21e94e4498 100644 --- a/client/src/components/NewUserWelcome/NewUserWelcome.vue +++ b/client/src/components/NewUserWelcome/NewUserWelcome.vue @@ -90,7 +90,7 @@ export default { From 5876acc06515c5679fe3a203f94bd8f176937ce4 Mon Sep 17 00:00:00 2001 From: Dannon Baker Date: Thu, 11 Aug 2022 16:10:24 -0400 Subject: [PATCH 224/553] Do not mount vue to body, use a normal element. Mounted element is replaced with vue completely, so body will cause issues. --- client/src/entry/analysis/App.vue | 4 ++-- client/src/entry/analysis/index.js | 2 +- templates/js-app.mako | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/entry/analysis/App.vue b/client/src/entry/analysis/App.vue index 0c10a11efa2..f7e939734c1 100644 --- a/client/src/entry/analysis/App.vue +++ b/client/src/entry/analysis/App.vue @@ -1,5 +1,5 @@ + + From beaa8dd6dddf5e1c542175647292167a1b257edd Mon Sep 17 00:00:00 2001 From: Laila Los <44241786+ElectronicBlueberry@users.noreply.github.com> Date: Thu, 11 Aug 2022 12:05:59 +0200 Subject: [PATCH 232/553] remove old quotameter add unlimited quota view --- client/src/components/Masthead/Masthead.vue | 7 +- client/src/components/Masthead/QuotaMeter.vue | 14 +- client/src/layout/masthead.js | 11 -- client/src/mvc/user/user-quotameter.js | 167 ------------------ 4 files changed, 13 insertions(+), 186 deletions(-) delete mode 100644 client/src/mvc/user/user-quotameter.js diff --git a/client/src/components/Masthead/Masthead.vue b/client/src/components/Masthead/Masthead.vue index fcef9e0bf4d..2993ea2c331 100644 --- a/client/src/components/Masthead/Masthead.vue +++ b/client/src/components/Masthead/Masthead.vue @@ -14,8 +14,7 @@ :active-tab="activeTab" /> - - + @@ -95,10 +94,6 @@ export default { this.baseTabs = fetchMenu(this.menuOptions); loadWebhookMenuItems(this.extensionTabs); }, - mounted() { - //this.mastheadState.quotaMeter.setElement(this.$refs["quota-meter-container"]); - //this.mastheadState.quotaMeter.render(); - }, methods: { addItem(item) { this.tabs.push(item); diff --git a/client/src/components/Masthead/QuotaMeter.vue b/client/src/components/Masthead/QuotaMeter.vue index 835c578603a..cdaebbc468e 100644 --- a/client/src/components/Masthead/QuotaMeter.vue +++ b/client/src/components/Masthead/QuotaMeter.vue @@ -4,7 +4,7 @@ {{ usingString + " " + usage.toFixed(0) }}% - + {{ usingString + " " + totalUsageString }} @@ -25,7 +25,10 @@ export default { ...mapGetters("config", ["config"]), ...mapGetters("user", ["currentUser"]), hasQuota() { - return this.config?.enable_quotas ?? false; + const quotasEnabled = this.config?.enable_quotas ?? false; + const quotaLimited = this.currentUser?.quota !== "unlimited" ?? false; + + return quotasEnabled && quotaLimited; }, usage() { if (this.hasQuota) { @@ -62,6 +65,8 @@ export default { diff --git a/client/src/layout/masthead.js b/client/src/layout/masthead.js index 3c01e8b8523..e53fe382c34 100644 --- a/client/src/layout/masthead.js +++ b/client/src/layout/masthead.js @@ -1,6 +1,5 @@ import $ from "jquery"; import { WindowManager } from "layout/window-manager"; -import QuotaMeter from "mvc/user/user-quotameter"; import { getGalaxyInstance } from "app"; import { getAppRoot } from "onload/loadConfig"; import Masthead from "../components/Masthead/Masthead"; @@ -18,16 +17,6 @@ export class MastheadState { } this.windowManager = Galaxy.frame; - // set up the quota meter (And fetch the current user data from trans) - // add quota meter to masthead - if (!Galaxy.quotaMeter) { - Galaxy.quotaMeter = new QuotaMeter.UserQuotaMeter({ - model: Galaxy.user, - quotaUrl: Galaxy.config.quota_url, - }); - } - this.quotaMeter = Galaxy.quotaMeter; - // loop through beforeunload functions if the user attempts to unload the page $(window) .off() diff --git a/client/src/mvc/user/user-quotameter.js b/client/src/mvc/user/user-quotameter.js deleted file mode 100644 index d20957b52a3..00000000000 --- a/client/src/mvc/user/user-quotameter.js +++ /dev/null @@ -1,167 +0,0 @@ -import $ from "jquery"; -import Backbone from "backbone"; -import _ from "underscore"; -import baseMVC from "mvc/base-mvc"; -import _l from "utils/localization"; -import { getAppRoot } from "onload/loadConfig"; - -var logNamespace = "user"; -//============================================================================== -/** @class View to display a user's disk/storage usage - * either as a progress bar representing the percentage of a quota used - * or a simple text element displaying the human readable size used. - * @name UserQuotaMeter - * @augments Backbone.View - */ -var UserQuotaMeter = Backbone.View.extend(baseMVC.LoggableMixin).extend( - /** @lends UserQuotaMeter.prototype */ { - _logNamespace: logNamespace, - - /** Defaults for optional settings passed to initialize */ - options: { - warnAtPercent: 85, - errorAtPercent: 100, - quotaUrl: "https://galaxyproject.org/support/account-quotas/", - }, - - storageDashboardUrl: `${getAppRoot()}storage`, - - /** Set up, accept options, and bind events */ - initialize: function (options) { - this.log(`${this}.initialize:`, options); - _.extend(this.options, options); - - //this.bind( 'all', function( event, data ){ this.log( this + ' event:', event, data ); }, this ); - this.listenTo(this.model, "change:quota_percent change:total_disk_usage", this.render); - }, - - /** Re-load user model data from the api */ - update: function (options) { - this.log(`${this} updating user data...`, options); - this.model.loadFromApi(this.model.get("id"), options); - return this; - }, - - /** Is the user over their quota (if there is one)? - * @returns {Boolean} true if over quota, false if no quota or under quota - */ - isOverQuota: function () { - return ( - this.model.get("quota_percent") !== null && - this.model.get("quota_percent") >= this.options.errorAtPercent - ); - }, - - /** Render the meter when they have an applicable quota. Will render as a progress bar - * with their percentage of that quota in text over the bar. - * @fires quota:over when user is over quota (>= this.errorAtPercent) - * @fires quota:under when user is under quota - * @fires quota:under:approaching when user is >= this.warnAtPercent of their quota - * @fires quota:under:ok when user is below this.warnAtPercent - * @returns {jQuery} the rendered meter - */ - _render_quota: function () { - var modelJson = this.model.toJSON(); - - var //prevPercent = this.model.previous( 'quota_percent' ), - percent = modelJson.quota_percent; - - var //meter = $( UserQuotaMeter.templates.quota( modelJson ) ); - $meter = $(this._templateQuotaMeter(modelJson)); - - var $bar = $meter.find(".progress-bar"); - //this.log( this + '.rendering quota, percent:', percent, 'meter:', meter ); - - // OVER QUOTA: color the quota bar and show the quota error message - if (this.isOverQuota()) { - //this.log( '\t over quota' ); - $bar.attr("class", "progress-bar bg-danger"); - $meter.find(".quota-meter-text").css("color", "white"); - //TODO: only trigger event if state has changed - this.trigger("quota:over", modelJson); - - // APPROACHING QUOTA: color the quota bar - } else if (percent >= this.options.warnAtPercent) { - //this.log( '\t approaching quota' ); - $bar.attr("class", "progress-bar bg-warning"); - //TODO: only trigger event if state has changed - this.trigger("quota:under quota:under:approaching", modelJson); - - // otherwise, hide/don't use the msg box - } else { - $bar.attr("class", "progress-bar bg-success"); - //TODO: only trigger event if state has changed - this.trigger("quota:under quota:under:ok", modelJson); - } - return $meter; - }, - - /** Render the meter when the user has NO applicable quota. Will render as text - * showing the human readable sum storage their data is using. - * @returns {jQuery} the rendered text - */ - _render_usage: function () { - //var usage = $( UserQuotaMeter.templates.usage( this.model.toJSON() ) ); - var usage = $(this._templateUsage(this.model.toJSON())); - this.log(`${this}.rendering usage:`, usage); - return usage; - }, - - /** Render either the quota percentage meter or the human readable disk usage - * depending on whether the user model has quota info (quota_percent === null -> no quota) - * @returns {Object} this UserQuotaMeter - */ - render: function () { - //this.log( this + '.rendering' ); - var meterHtml = null; - - // no quota on server ('quota_percent' === null (can be valid at 0)), show usage instead - this.log(`${this}.model.quota_percent:`, this.model.get("quota_percent")); - if (this.model.get("quota_percent") === null || this.model.get("quota_percent") === undefined) { - meterHtml = this._render_usage(); - - // otherwise, render percent of quota (and warning, error) - } else { - meterHtml = this._render_quota(); - //TODO: add the original text for unregistered quotas - //tooltip = "Your disk quota is %s. You can increase your quota by registering a Galaxy account." - } - - this.$el.html(meterHtml); - this.$el.find(".quota-meter-text").tooltip(); - return this; - }, - - _templateQuotaMeter: function (data) { - const title = data.nice_total_disk_usage - ? `title="Using ${data.nice_total_disk_usage}. Click for details."` - : ""; - const using = `${_l("Using")} ${data.quota_percent}%`; - return `
-
-
- ${using} -
-
`; - }, - - _templateUsage: function (data) { - return [ - `
`, - '
', - data.nice_total_disk_usage ? _l("Using ") + data.nice_total_disk_usage : "", - "
", - "
", - ].join(""); - }, - - toString: function () { - return `UserQuotaMeter(${this.model})`; - }, - } -); - -//============================================================================== -export default { - UserQuotaMeter: UserQuotaMeter, -}; From 6655c42d1ab06a962e27a6272ceefed4914f4629 Mon Sep 17 00:00:00 2001 From: Laila Los <44241786+ElectronicBlueberry@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:56:20 +0200 Subject: [PATCH 233/553] remove jquery from masthead --- client/src/layout/masthead.js | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/client/src/layout/masthead.js b/client/src/layout/masthead.js index e53fe382c34..43288069aed 100644 --- a/client/src/layout/masthead.js +++ b/client/src/layout/masthead.js @@ -1,4 +1,3 @@ -import $ from "jquery"; import { WindowManager } from "layout/window-manager"; import { getGalaxyInstance } from "app"; import { getAppRoot } from "onload/loadConfig"; @@ -16,20 +15,6 @@ export class MastheadState { Galaxy.frame = new WindowManager(); } this.windowManager = Galaxy.frame; - - // loop through beforeunload functions if the user attempts to unload the page - $(window) - .off() - .on("click", (e) => { - const $download_link = $(e.target).closest("a[download]"); - if ($download_link.length == 1) { - if ($("iframe[id=download]").length === 0) { - $("body").append($(" + +**Bulk History Operations** + +The new history allows for improved bulk operations, selecting dozens or hundreds of datasets to retag or change their dbkey automatically, a process that used to require using collections or doing them one by one. + +.. raw:: html + + + +**Workflow Improvements** + +You can now see all invocations of a specific workflow, across all of your histories. + +.. figure:: images/22.05-invocation-menu.png + :alt: Screenshot of the drop down menu on a specific workflow, showing an invocation button. This is accessible via the workflow name in the workflow list. + +This is especially useful if you run a single workflow across multiple datasets, and keep them nicely separated in multiple histories. You can see all of the results in a single centralised location. + +.. figure:: images/22.05-invocation-list.png + :alt: List of workflow invocations for a specific workflow named Annotation Pipeline. A single invocation is visible along with the results and associated report in the normal workflow invocation view that appears after submitting a job. + +Additional workflow improvements have been made, e.g. numbering of steps in a workflow. Improvements have been made to the internal representation of the workflow that should make the saved `.ga` and `.gxwf.yml` files easier to compare across changes. + +Workflows can also now be zoomed via scrolling, this interface should be more familiar for anyone who has used Google Maps: + +.. raw:: html + + + +**Saved Rules** + +Do you use the Rule Based Uploader? (If not, `learn how today! `__) The RBU now has a very convenient recently used rule listing, sorted by how recently they were used. You can hover over each entry to also list a preview of what steps were done in that RBU invocation: + +.. figure:: images/22.05-rbu.png + :alt: Rule based uploader interface showing a list of recently used rules. The mouse hovers over the first showing a short description of the rule mentioning filtering. + +**Scratchbook Upgraded** + +The scratchbook has been updated to a newer implementation. Now your views of datasets can overlap, you have much more freedom in the size of each window, and you can minimize datasets like minimizing a window to the taskbar in Windows. + +.. raw:: html + + + +**OpenAPI Docs** + +The Galaxy API has been going through a long upgrade to FastAPI, which allows us to generate OpenAPI documentation. If you're an API consumer, either via BioBlend or via another system, you can use this to see all of the APIs available from Galaxy and try them out live. + +.. figure:: images/22.05-openapi.png + :alt: Screenshot of the OpenAPI autogenerated documentation listing all of the available Galaxy APIs. In each collapsed section there is an interface to try out the APIs with various values, live, in Galaxy. New Visualizations =========================================================== .. visualizations -* Add gulp target for force-rebuild of viz plugins - (thanks to `@dannon `__). - `Pull Request 13370`_ -* Properly initialize chart settings for new visualizations - (thanks to `@guerler `__). - `Pull Request 13561`_ -* Point to GTN tutorial in visualizations readme - (thanks to `@beatrizserrano `__). - `Pull Request 13616`_ * Add 3D PCA visualization (thanks to `@xtrojak `__). `Pull Request 13771`_ -* Support phylocanvas autobuild - (thanks to `@dannon `__). - `Pull Request 14023`_ -* Fix a bug in PCA artifact staging that prevents a plugin rebuild - (thanks to `@dannon `__). - `Pull Request 14148`_ + +.. figure:: images/22.05-pca.png + :alt: Screenshot of the new 3 dimensional PCA plot visualisation available in Galaxy. New Datatypes =========================================================== .. datatypes -* Python code formatting standard, automatic - (thanks to `@dannon `__). - `Pull Request 11162`_ * Add new molecule datatypes (thanks to `@muon-spectroscopy-computational-project `__). `Pull Request 12375`_ -* Upgrade syntax to Python 3.7 - (thanks to `@nsoranzo `__). - `Pull Request 13500`_ * Add mzqc datatype (thanks to `@bernt-matthias `__). `Pull Request 13564`_ -* Update mypy to 0.942 and fix new mypy errors - (thanks to `@nsoranzo `__). - `Pull Request 13650`_ -* Create data_fetch and set_metadata celery tasks - (thanks to `@mvdbeek `__). - `Pull Request 13655`_ * Add bigWig to Wig converter (thanks to `@gallardoalba `__). `Pull Request 13708`_ -* Replace last use of deprecated ``imp`` module - (thanks to `@nsoranzo `__). - `Pull Request 13817`_ * Add support for gz-compressed gfa1 and gfa2 files (thanks to `@gallardoalba `__). `Pull Request 13927`_ -* Tighten sniffers - (thanks to `@mvdbeek `__). - `Pull Request 13959`_ -* Don't create a BGZF index when running the compressing converter - (thanks to `@nsoranzo `__). - `Pull Request 13969`_ -* Fix bug: set creation_date on dataset.metadata, not dataset - (thanks to `@jdavcs `__). - `Pull Request 14039`_ -* Fix composite datatypes with ``substitute_name_with_metadata`` - (thanks to `@mvdbeek `__). - `Pull Request 14053`_ -* Enable generating urls for WSGI routes within FastAPI routes - (thanks to `@mvdbeek `__). - `Pull Request 14066`_ * Fix collection download for bam native files (thanks to `@mvdbeek `__). `Pull Request 14162`_ @@ -95,18 +115,17 @@ Builtin Tool Updates =========================================================== .. tools -* Python code formatting standard, automatic - (thanks to `@dannon `__). - `Pull Request 11162`_ +* Overhaul and improve the Jupyter Interactive Tool, providing many new interface options + (thanks to `@blankenberg `__). + `Pull Request 13606`_ + * You can specify any number of user-defined inputs using the repeat input, providing name value, selecting the type of input, and then providing values. + * You can make the JupyTool reusable in a workflow, by allowing the user to specify input values for the defined input blocks. + * Inputs can be accessed by name from the automatically provided GALAXY_INPUTS dictionary. + * Outputs can be written automatically to the user's history by writing to the outputs directory for one individual file or to the outputs/collection directory for multiple files. + * Using collection tools, you can parse out the individual elements from the collection, as needed. * Add built-in converters to tool panel (thanks to `@jdavcs `__). `Pull Request 13447`_ -* Add JupyTool, user-configurable interactive Jupyter-based tool - (thanks to `@blankenberg `__). - `Pull Request 13606`_ -* Fix David URL - (thanks to `@hexylena `__). - `Pull Request 13666`_ * Add and update various interactive tools (thanks to `@gmauro `__). `Pull Request 13811`_ @@ -124,6 +143,8 @@ A special thanks to the release testing team for testing many of the new feature Release Notes =========================================================== +User facing release notes compiled by `Helena Rasche `_. + Please see the `full release notes <22.05_announce.html>`_ for more details. .. include:: 22.05_prs.rst diff --git a/doc/source/releases/images/22.05-history.png b/doc/source/releases/images/22.05-history.png new file mode 100644 index 0000000000000000000000000000000000000000..82000742f30226504ed1f97e71c5ffc94581cd71 GIT binary patch literal 29944 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%0DdwGC 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 literal 0 HcmV?d00001 diff --git a/doc/source/releases/images/22.05-invocation-menu.png b/doc/source/releases/images/22.05-invocation-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..ab685a208728b8dd7a09c282b1c3cef9a66a7e16 GIT binary patch literal 15479 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 FV1hAs9<~4g literal 0 HcmV?d00001 diff --git a/doc/source/releases/images/22.05-pca.png b/doc/source/releases/images/22.05-pca.png new file mode 100644 index 0000000000000000000000000000000000000000..6c01c5dfe321588b53b2d0b169846bbfabe1f1ef GIT binary patch literal 110277 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�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℘50xzM8|&gNT>Xt{Si8 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 literal 0 HcmV?d00001 diff --git a/doc/source/releases/images/22.05-storage.png b/doc/source/releases/images/22.05-storage.png new file mode 100644 index 0000000000000000000000000000000000000000..4b5f6eea6f0e224e1e652443f11e6a67f0d8fe1a GIT binary patch literal 58431 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 Date: Mon, 11 Jul 2022 15:14:25 +0200 Subject: [PATCH 372/553] Add release testing team --- doc/source/releases/22.05_announce_user.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/source/releases/22.05_announce_user.rst b/doc/source/releases/22.05_announce_user.rst index 212ee5a2301..16d089768de 100644 --- a/doc/source/releases/22.05_announce_user.rst +++ b/doc/source/releases/22.05_announce_user.rst @@ -138,7 +138,13 @@ Release Testing Team A special thanks to the release testing team for testing many of the new features and reporting many bugs: - +- `Ahmed Awan ` +- `Catherine Bromhead ` +- `Fabio Cumbo ` +- `Jennifer Hillman-Jackson ` +- `John Davis ` +- `Simon Bray ` +- `Tyler Collins ` Release Notes =========================================================== From 4dbb26fc13470317dcdac03090edb646c0c7ab12 Mon Sep 17 00:00:00 2001 From: Marius van den Beek Date: Thu, 18 Aug 2022 16:46:59 +0200 Subject: [PATCH 373/553] Update announce user notes Co-authored-by: M Bernt Co-authored-by: Nicola Soranzo --- doc/source/releases/22.05_announce_user.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/source/releases/22.05_announce_user.rst b/doc/source/releases/22.05_announce_user.rst index 16d089768de..9d3bff572f4 100644 --- a/doc/source/releases/22.05_announce_user.rst +++ b/doc/source/releases/22.05_announce_user.rst @@ -59,14 +59,14 @@ Workflows can also now be zoomed via scrolling, this interface should be more fa **Saved Rules** -Do you use the Rule Based Uploader? (If not, `learn how today! `__) The RBU now has a very convenient recently used rule listing, sorted by how recently they were used. You can hover over each entry to also list a preview of what steps were done in that RBU invocation: +Do you use the Rule Based Uploader (RBU)? (If not, `learn how today! `__) The RBU now has a very convenient recently used rule listing, sorted by how recently they were used. You can hover over each entry to also list a preview of what steps were done in that RBU invocation: .. figure:: images/22.05-rbu.png - :alt: Rule based uploader interface showing a list of recently used rules. The mouse hovers over the first showing a short description of the rule mentioning filtering. + :alt: Rule based uploader interface showing a list of recently used rules. The mouse hovers over the first one showing a short description of the rule mentioning filtering. **Scratchbook Upgraded** -The scratchbook has been updated to a newer implementation. Now your views of datasets can overlap, you have much more freedom in the size of each window, and you can minimize datasets like minimizing a window to the taskbar in Windows. +The scratchbook has been updated to a new implementation. Now your views of datasets can overlap, you have much more freedom in the size of each window, and you can minimize datasets like minimizing a window to the taskbar in Windows. .. raw:: html @@ -74,7 +74,7 @@ The scratchbook has been updated to a newer implementation. Now your views of da **OpenAPI Docs** -The Galaxy API has been going through a long upgrade to FastAPI, which allows us to generate OpenAPI documentation. If you're an API consumer, either via BioBlend or via another system, you can use this to see all of the APIs available from Galaxy and try them out live. +The Galaxy API is going through an upgrade to FastAPI, which allows us to generate OpenAPI documentation. If you're an API consumer, either via BioBlend or via another system, you can use this to see all of the APIs available from Galaxy and try them out live. .. figure:: images/22.05-openapi.png :alt: Screenshot of the OpenAPI autogenerated documentation listing all of the available Galaxy APIs. In each collapsed section there is an interface to try out the APIs with various values, live, in Galaxy. @@ -96,7 +96,7 @@ New Datatypes .. datatypes * Add new molecule datatypes - (thanks to `@muon-spectroscopy-computational-project `__). + (thanks to `@elichad `__). `Pull Request 12375`_ * Add mzqc datatype (thanks to `@bernt-matthias `__). From 1545b9da99bfe3218767e7f7fe234e8739171f89 Mon Sep 17 00:00:00 2001 From: davelopez <46503462+davelopez@users.noreply.github.com> Date: Fri, 19 Aug 2022 12:30:53 +0200 Subject: [PATCH 374/553] Simplify `query_parameter_as_list` And render the repeated parameter input in the docs. The first parameter can be a comma-separated list of values --- lib/galaxy/webapps/galaxy/api/common.py | 13 ++++++------- lib/galaxy/webapps/galaxy/api/jobs.py | 8 ++++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/galaxy/webapps/galaxy/api/common.py b/lib/galaxy/webapps/galaxy/api/common.py index bb7a26bcdb9..063d9a6d56d 100644 --- a/lib/galaxy/webapps/galaxy/api/common.py +++ b/lib/galaxy/webapps/galaxy/api/common.py @@ -153,7 +153,7 @@ def query_parameter_as_list(query): Usage example: ```python - ValueQueryParam: Optional[str] = Query( + ValueQueryParam = Query( default=None, alias="value", # Important! this is the parameter name that will be displayed in the API docs title="My Value", @@ -174,13 +174,12 @@ def query_parameter_as_list(query): """ def parse_elements( - element: str = query, - elements: Optional[List[str]] = Query(default=None, alias=query.alias, include_in_schema=False), + elements: Optional[List[str]] = query, ) -> Optional[List[Any]]: - if query.default != Ellipsis and element is None and not elements: + if query.default != Ellipsis and not elements: return query.default - if elements and len(elements) > 1: - return elements - return listify(element) + if elements and len(elements) == 1: + return listify(elements[0]) + return elements return parse_elements diff --git a/lib/galaxy/webapps/galaxy/api/jobs.py b/lib/galaxy/webapps/galaxy/api/jobs.py index 8c46228c9cb..46390412b7f 100644 --- a/lib/galaxy/webapps/galaxy/api/jobs.py +++ b/lib/galaxy/webapps/galaxy/api/jobs.py @@ -69,11 +69,11 @@ log = logging.getLogger(__name__) router = Router(tags=["jobs"]) -StateQueryParam: Optional[str] = Query( +StateQueryParam = Query( default=None, alias="state", title="States", - description="Comma-separated list of states to filter job query on. If unspecified, jobs of any state may be returned.", + description="A list or comma-separated list of states to filter job query on. If unspecified, jobs of any state may be returned.", ) UserDetailsQueryParam: bool = Query( @@ -95,7 +95,7 @@ ViewQueryParam: JobIndexViewEnum = Query( ) -ToolIdQueryParam: Optional[str] = Query( +ToolIdQueryParam = Query( default=None, alias="tool_id", title="Tool ID(s)", @@ -103,7 +103,7 @@ ToolIdQueryParam: Optional[str] = Query( ) -ToolIdLikeQueryParam: Optional[str] = Query( +ToolIdLikeQueryParam = Query( default=None, alias="tool_id_like", title="Tool ID Pattern(s)", From c9a8e4f63ed552fc5ac3a0bf653ba37aba6cb5e6 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 19 Aug 2022 12:52:11 +0200 Subject: [PATCH 375/553] Update PRs --- doc/source/releases/22.05.rst | 297 +++++++++++++++++++- doc/source/releases/22.05_announce_user.rst | 111 ++++++++ doc/source/releases/22.05_prs.rst | 104 +++++++ 3 files changed, 511 insertions(+), 1 deletion(-) diff --git a/doc/source/releases/22.05.rst b/doc/source/releases/22.05.rst index ea2f6d6bd50..3d03c9abe46 100644 --- a/doc/source/releases/22.05.rst +++ b/doc/source/releases/22.05.rst @@ -81,6 +81,12 @@ Enhancements * Add support for gz-compressed gfa1 and gfa2 files (thanks to `@gallardoalba `__). `Pull Request 13927`_ +* New Datatype: QIIME 2 + (thanks to `@ebolyen `__). + `Pull Request 14216`_ +* Add scool datatype + (thanks to `@bernt-matthias `__). + `Pull Request 14480`_ .. enhancement_tag_tools * Add JupyTool, user-configurable interactive Jupyter-based tool @@ -199,6 +205,9 @@ Enhancements * A few small Gravity updates (thanks to `@natefoo `__). `Pull Request 13995`_ +* Add log rotation options and update logging documentation + (thanks to `@natefoo `__). + `Pull Request 14457`_ .. enhancement * Allow site-specific history default, leave fallback option to legacy @@ -588,6 +597,45 @@ Enhancements * Support bulk dbkey and datatype collection changes (thanks to `@mvdbeek `__). `Pull Request 14172`_ +* Add release tag to client-submitted sentry events + (thanks to `@dannon `__). + `Pull Request 14205`_ +* Add selenium tests for uploads + (thanks to `@jdavcs `__). + `Pull Request 14232`_ +* Only serialize history if changed since last check + (thanks to `@mvdbeek `__). + `Pull Request 14251`_ +* Add purged dataset badge + (thanks to `@davelopez `__). + `Pull Request 14252`_ +* Add Deleted histories plugin for DiskUsage dashboard + (thanks to `@dannon `__). + `Pull Request 14253`_ +* Small speedup by using cache_ok on MetadataType + (thanks to `@mvdbeek `__). + `Pull Request 14255`_ +* Improve handling of non-existent or uninitialized database when running upgrade script + (thanks to `@jdavcs `__). + `Pull Request 14329`_ +* Optimize active counts query + (thanks to `@mvdbeek `__). + `Pull Request 14338`_ +* Include auth in openAPI schema + (thanks to `@mvdbeek `__). + `Pull Request 14345`_ +* Optimize History watcher to request detailed information only for expanded items + (thanks to `@davelopez `__). + `Pull Request 14375`_ +* Support quoted strings in bool expressions + (thanks to `@davelopez `__). + `Pull Request 14406`_ +* Docker k8s ansible fixes + (thanks to `@nuwang `__). + `Pull Request 14449`_ +* Disable translogger middleware by default + (thanks to `@natefoo `__). + `Pull Request 14467`_ .. small_enhancement * Python code formatting standard, automatic @@ -695,6 +743,15 @@ Enhancements * Update tpv rule module name and constrain version (thanks to `@nuwang `__). `Pull Request 14072`_ +* Move `Show Histories Side-by-Side` menu entry below histories count + (thanks to `@davelopez `__). + `Pull Request 14214`_ +* Avoid loading expensive properties for all histories + (thanks to `@davelopez `__). + `Pull Request 14347`_ +* remove debug statements from tool search + (thanks to `@bgruening `__). + `Pull Request 14386`_ Fixes @@ -717,6 +774,9 @@ Fixes * Fix a bug in PCA artifact staging that prevents a plugin rebuild (thanks to `@dannon `__). `Pull Request 14148`_ +* Visualization fix for MSA + (thanks to `@dannon `__). + `Pull Request 14263`_ .. bug_tag_datatypes * Tighten sniffers @@ -734,9 +794,18 @@ Fixes * Enable generating urls for WSGI routes within FastAPI routes (thanks to `@mvdbeek `__). `Pull Request 14066`_ -* Fix collection download for bam native files +* Fix collection download for BAM native files (thanks to `@mvdbeek `__). `Pull Request 14162`_ +* Make Agp set_meta more lenient + (thanks to `@astrovsky01 `__). + `Pull Request 14277`_ +* Deleted, discarded and deferred file not found tweaks + (thanks to `@mvdbeek `__). + `Pull Request 14296`_ +* Fix xml deprecation warning in ``parse_requirements_from_xml`` + (thanks to `@bernt-matthias `__). + `Pull Request 14483`_ .. bug_tag_tools * Fix David URL @@ -745,6 +814,12 @@ Fixes * Bump ncb-datasets-cli dependency to 13.14.0 (thanks to `@mvdbeek `__). `Pull Request 13853`_ +* Fixes for JupyTool, and overlapping versions with jupyter + (thanks to `@blankenberg `__). + `Pull Request 14309`_ +* Grep1 tool: fix keep_header option + (thanks to `@jancrichter `__). + `Pull Request 14475`_ .. bug_tag_workflows * Fix workflow index API boolean parameters @@ -759,6 +834,9 @@ Fixes * Fix showing invocations for a particular workflow (thanks to `@jmchilton `__). `Pull Request 14102`_ +* Fix effective datatype in workflow editor node terminals + (thanks to `@mvdbeek `__). + `Pull Request 14473`_ .. bug_tag_ui * Bump karma from 6.3.13 to 6.3.14 in /client @@ -803,14 +881,23 @@ Fixes * Once committed to a plugin rebuild, stage old hash… (thanks to `@dannon `__). `Pull Request 14153`_ +* Update yarn.lock file + (thanks to `@nsoranzo `__). + `Pull Request 14337`_ .. bug_tag_jobs * Fix for uploading metadata to remote object store (thanks to `@mvdbeek `__). `Pull Request 13348`_ +* SLURM: check first if stopped for cancelled jobs + (thanks to `@bernt-matthias `__). + `Pull Request 13453`_ * Fix extended_metadata jobs with dce inputs (thanks to `@mvdbeek `__). `Pull Request 13553`_ +* Write to exit code file before running metadata script + (thanks to `@mvdbeek `__). + `Pull Request 13557`_ * Only stream stdout/stderr on kubernetes (thanks to `@nsoranzo `__). `Pull Request 13642`_ @@ -835,6 +922,12 @@ Fixes * Fix deleting jobs when deleting datasets (thanks to `@mvdbeek `__). `Pull Request 14108`_ +* Put revoke for canceling upload task behind ``enable_celery_tasks`` flag + (thanks to `@mvdbeek `__). + `Pull Request 14219`_ +* Specify time as datetime object in job queries + (thanks to `@simonbray `__). + `Pull Request 14281`_ .. bug_tag_admin * Drop uWSGI from Galaxy Reports documentation @@ -858,6 +951,18 @@ Fixes * Interactivetool doc/sample tweaks (thanks to `@dannon `__). `Pull Request 14025`_ +* Decrease log level for tool not found + (thanks to `@mvdbeek `__). + `Pull Request 14204`_ +* Drop extension from config_exception + (thanks to `@mvdbeek `__). + `Pull Request 14320`_ +* Fix first startup when only python3 is on PATH + (thanks to `@mvdbeek `__). + `Pull Request 14414`_ +* Pass ``--cleanenv`` by default to singularity command + (thanks to `@mvdbeek `__). + `Pull Request 14429`_ .. bug * fix `drill_down` parameters @@ -1295,6 +1400,9 @@ Fixes * Deferred data fixes (thanks to `@mvdbeek `__). `Pull Request 14181`_ +* Show job progress bar while there are non-terminal jobs, declutter text + (thanks to `@assuntad23 `__). + `Pull Request 14182`_ * Switch History Modal: fix pagination (thanks to `@davelopez `__). `Pull Request 14183`_ @@ -1307,6 +1415,9 @@ Fixes * Fix `FilesDialog` navigation back when a file source shows an error (thanks to `@davelopez `__). `Pull Request 14190`_ +* Send composite datasets directly to tusUpload + (thanks to `@jdavcs `__). + `Pull Request 14191`_ * Support stop_job param in query string (thanks to `@mvdbeek `__). `Pull Request 14194`_ @@ -1316,5 +1427,189 @@ Fixes * Add ``SuppressNoResponseReturnedMiddleware`` (thanks to `@mvdbeek `__). `Pull Request 14202`_ +* Shift 'queued' state lower in priority in collection status + (thanks to `@dannon `__). + `Pull Request 14217`_ +* Generate the headers handson table uses to avoid missing header issue + (thanks to `@assuntad23 `__). + `Pull Request 14218`_ +* Fixes for the tus resumable upload command line script + (thanks to `@natefoo `__). + `Pull Request 14221`_ +* HistoryFilters datepicker fix: date now shows up in field + (thanks to `@ahmedhamidawan `__). + `Pull Request 14226`_ +* Citation link decoding fix + (thanks to `@dannon `__). + `Pull Request 14231`_ +* Place watchHistory logic in try/catch/finally + (thanks to `@mvdbeek `__). + `Pull Request 14233`_ +* Fix validation of nested element fetch data payloads + (thanks to `@mvdbeek `__). + `Pull Request 14245`_ +* History watch throttling -- relax when backgrounded + (thanks to `@dannon `__). + `Pull Request 14264`_ +* Fix History dataset database entry overflow + (thanks to `@ahmedhamidawan `__). + `Pull Request 14266`_ +* Allow delete option when history items are shown outside of panel + (thanks to `@guerler `__). + `Pull Request 14269`_ +* Replace old storage FAQ in preferences + (thanks to `@davelopez `__). + `Pull Request 14270`_ +* Fix ReviewCleanupDialog state in Storage Dashboard + (thanks to `@davelopez `__). + `Pull Request 14271`_ +* Drop exception catching when querying db for session + (thanks to `@mvdbeek `__). + `Pull Request 14274`_ +* Small tour fixes + (thanks to `@jmchilton `__). + `Pull Request 14280`_ +* Fix encoding Decimal values and inf/-inf + (thanks to `@mvdbeek `__). + `Pull Request 14284`_ +* Drop dataset error controller method + (thanks to `@mvdbeek `__). + `Pull Request 14287`_ +* Fix tag autocomplete for strings that need url encoding + (thanks to `@mvdbeek `__). + `Pull Request 14288`_ +* Fix display_as with authz_method=rbac + (thanks to `@mvdbeek `__). + `Pull Request 14289`_ +* Check for app_name and link_name before unquoting + (thanks to `@mvdbeek `__). + `Pull Request 14291`_ +* Avoid race condition in disk object store delete + (thanks to `@mvdbeek `__). + `Pull Request 14292`_ +* Increase contrast of Beta label (accessibility) in Storage Dashboard + (thanks to `@davelopez `__). + `Pull Request 14302`_ +* Sort histories in history switcher by most recently updated + (thanks to `@davelopez `__). + `Pull Request 14307`_ +* Fix jobs API not allowing dates for ``date_range_min`` and ``date_range_max`` + (thanks to `@nsoranzo `__). + `Pull Request 14315`_ +* Prevent iframe from interfering with drop events + (thanks to `@guerler `__). + `Pull Request 14318`_ +* Fix local version switching + (thanks to `@mvdbeek `__). + `Pull Request 14319`_ +* Add HREF links to some history item actions + (thanks to `@davelopez `__). + `Pull Request 14325`_ +* Attempt to use epoch of client build time for cache busting + (thanks to `@mvdbeek `__). + `Pull Request 14328`_ +* Fix filtering by an extension list in dataset API + (thanks to `@nsoranzo `__). + `Pull Request 14330`_ +* fix `startswith` attribute of `` + (thanks to `@bernt-matthias `__). + `Pull Request 14332`_ +* Drop serverside i18n + (thanks to `@dannon `__). + `Pull Request 14334`_ +* Upgrade FastAPI to 0.79.0 + (thanks to `@mvdbeek `__). + `Pull Request 14335`_ +* Avoid ``FileNotFoundError`` when Dataset is purged, but HDA is not + (thanks to `@mvdbeek `__). + `Pull Request 14336`_ +* Don't hit object store when getting size + (thanks to `@mvdbeek `__). + `Pull Request 14340`_ +* Fix ``GET /api/whoami`` when ``last_password_change`` is NULL + (thanks to `@nsoranzo `__). + `Pull Request 14342`_ +* Fix oldstyle dataset display + (thanks to `@dannon `__). + `Pull Request 14343`_ +* Reload histories when the user 'really' changes + (thanks to `@davelopez `__). + `Pull Request 14349`_ +* Workflow download API: check if a workflow is importable (not published) + (thanks to `@nsoranzo `__). + `Pull Request 14355`_ +* Keep current history details on list of histories update + (thanks to `@davelopez `__). + `Pull Request 14357`_ +* Fix handling + encoding of spaces in tool names + (thanks to `@hexylena `__). + `Pull Request 14358`_ +* Fix enable_account_interface option hiding too much + (thanks to `@davelopez `__). + `Pull Request 14363`_ +* Fix tool search config defaults + (thanks to `@dannon `__). + `Pull Request 14364`_ +* Fixed tool_utils types & schema-salad pin + (thanks to `@mr-c `__). + `Pull Request 14371`_ +* Tool search backend bug fixes + (thanks to `@neoformit `__). + `Pull Request 14372`_ +* Fix incorrect history swapping in some cases where we swap on the client but the server is never notified + (thanks to `@dannon `__). + `Pull Request 14376`_ +* Fix unhashable type in history contents API + (thanks to `@davelopez `__). + `Pull Request 14388`_ +* Fix validation issue for dataset_details + (thanks to `@davelopez `__). + `Pull Request 14395`_ +* Always allow 'copy datasets' action in history, even when empty + (thanks to `@dannon `__). + `Pull Request 14402`_ +* Calculate CRC32 for files in size between 1444 and 1459 bytes + (thanks to `@mvdbeek `__). + `Pull Request 14417`_ +* Fix additional errors when requesting dataset details in history contents + (thanks to `@davelopez `__). + `Pull Request 14418`_ +* Fix number of jobs submitted display in tool success + (thanks to `@dannon `__). + `Pull Request 14420`_ +* Fix workflow direct step insertion in workflow editor + (thanks to `@dannon `__). + `Pull Request 14424`_ +* Make history contents filter with `contains` case insensitive + (thanks to `@davelopez `__). + `Pull Request 14426`_ +* Update pylibmagic and gravity + (thanks to `@mvdbeek `__). + `Pull Request 14428`_ +* Fix cache image singularity resolver if path contains uppercase chars + (thanks to `@mvdbeek `__). + `Pull Request 14431`_ +* Revert startswith of tool parameter options + (thanks to `@qiagu `__). + `Pull Request 14440`_ +* Fix console errors when stored workflow id hasn't been fetched yet + (thanks to `@mvdbeek `__). + `Pull Request 14444`_ +* Register trailing slashes in API routes + (thanks to `@mvdbeek `__). + `Pull Request 14452`_ +* Fix data_range_{min,max} parsing + (thanks to `@mvdbeek `__). + `Pull Request 14456`_ +* Fix doc versioning banner and other doc fixes + (thanks to `@nsoranzo `__). + `Pull Request 14466`_ +* Bump Gravity version to 0.13.3 + (thanks to `@natefoo `__). + `Pull Request 14471`_ +* Update error message when building ucsc_build_sites.txt fails + (thanks to `@mvdbeek `__). + `Pull Request 14479`_ .. include:: 22.05_prs.rst + diff --git a/doc/source/releases/22.05_announce_user.rst b/doc/source/releases/22.05_announce_user.rst index 9d3bff572f4..9b94ef86562 100644 --- a/doc/source/releases/22.05_announce_user.rst +++ b/doc/source/releases/22.05_announce_user.rst @@ -84,6 +84,27 @@ New Visualizations =========================================================== .. visualizations +* Add gulp target for force-rebuild of viz plugins + (thanks to `@dannon `__). + `Pull Request 13370`_ +* Properly initialize chart settings for new visualizations + (thanks to `@guerler `__). + `Pull Request 13561`_ +* Point to GTN tutorial in visualizations readme + (thanks to `@beatrizserrano `__). + `Pull Request 13616`_ +* Add 3D PCA visualization + (thanks to `@xtrojak `__). + `Pull Request 13771`_ +* Support phylocanvas autobuild + (thanks to `@dannon `__). + `Pull Request 14023`_ +* Fix a bug in PCA artifact staging that prevents a plugin rebuild + (thanks to `@dannon `__). + `Pull Request 14148`_ +* Visualization fix for MSA + (thanks to `@dannon `__). + `Pull Request 14263`_ * Add 3D PCA visualization (thanks to `@xtrojak `__). `Pull Request 13771`_ @@ -95,6 +116,66 @@ New Datatypes =========================================================== .. datatypes +* Python code formatting standard, automatic + (thanks to `@dannon `__). + `Pull Request 11162`_ +* Add new molecule datatypes + (thanks to `@muon-spectroscopy-computational-project `__). + `Pull Request 12375`_ +* Upgrade syntax to Python 3.7 + (thanks to `@nsoranzo `__). + `Pull Request 13500`_ +* Add mzqc datatype + (thanks to `@bernt-matthias `__). + `Pull Request 13564`_ +* Update mypy to 0.942 and fix new mypy errors + (thanks to `@nsoranzo `__). + `Pull Request 13650`_ +* Create data_fetch and set_metadata celery tasks + (thanks to `@mvdbeek `__). + `Pull Request 13655`_ +* Add bigWig to Wig converter + (thanks to `@gallardoalba `__). + `Pull Request 13708`_ +* Replace last use of deprecated ``imp`` module + (thanks to `@nsoranzo `__). + `Pull Request 13817`_ +* Add support for gz-compressed gfa1 and gfa2 files + (thanks to `@gallardoalba `__). + `Pull Request 13927`_ +* Tighten sniffers + (thanks to `@mvdbeek `__). + `Pull Request 13959`_ +* Don't create a BGZF index when running the compressing converter + (thanks to `@nsoranzo `__). + `Pull Request 13969`_ +* Fix bug: set creation_date on dataset.metadata, not dataset + (thanks to `@jdavcs `__). + `Pull Request 14039`_ +* Fix composite datatypes with ``substitute_name_with_metadata`` + (thanks to `@mvdbeek `__). + `Pull Request 14053`_ +* Enable generating urls for WSGI routes within FastAPI routes + (thanks to `@mvdbeek `__). + `Pull Request 14066`_ +* Fix collection download for BAM native files + (thanks to `@mvdbeek `__). + `Pull Request 14162`_ +* New Datatype: QIIME 2 + (thanks to `@ebolyen `__). + `Pull Request 14216`_ +* Make Agp set_meta more lenient + (thanks to `@astrovsky01 `__). + `Pull Request 14277`_ +* Deleted, discarded and deferred file not found tweaks + (thanks to `@mvdbeek `__). + `Pull Request 14296`_ +* Add scool datatype + (thanks to `@bernt-matthias `__). + `Pull Request 14480`_ +* Fix xml deprecation warning in ``parse_requirements_from_xml`` + (thanks to `@bernt-matthias `__). + `Pull Request 14483`_ * Add new molecule datatypes (thanks to `@elichad `__). `Pull Request 12375`_ @@ -115,6 +196,36 @@ Builtin Tool Updates =========================================================== .. tools +* Python code formatting standard, automatic + (thanks to `@dannon `__). + `Pull Request 11162`_ +* Add built-in converters to tool panel + (thanks to `@jdavcs `__). + `Pull Request 13447`_ +* Add JupyTool, user-configurable interactive Jupyter-based tool + (thanks to `@blankenberg `__). + `Pull Request 13606`_ +* Fix David URL + (thanks to `@hexylena `__). + `Pull Request 13666`_ +* Add and update various interactive tools + (thanks to `@gmauro `__). + `Pull Request 13811`_ +* Bump ncb-datasets-cli dependency to 13.14.0 + (thanks to `@mvdbeek `__). + `Pull Request 13853`_ +* New Datatype: QIIME 2 + (thanks to `@ebolyen `__). + `Pull Request 14216`_ +* Fixes for JupyTool, and overlapping versions with jupyter + (thanks to `@blankenberg `__). + `Pull Request 14309`_ +* remove debug statements from tool search + (thanks to `@bgruening `__). + `Pull Request 14386`_ +* Grep1 tool: fix keep_header option + (thanks to `@jancrichter `__). + `Pull Request 14475`_ * Overhaul and improve the Jupyter Interactive Tool, providing many new interface options (thanks to `@blankenberg `__). `Pull Request 13606`_ diff --git a/doc/source/releases/22.05_prs.rst b/doc/source/releases/22.05_prs.rst index f4a3c569e96..ab0a63d8eb8 100644 --- a/doc/source/releases/22.05_prs.rst +++ b/doc/source/releases/22.05_prs.rst @@ -56,6 +56,7 @@ .. _Pull Request 13448: https://github.com/galaxyproject/galaxy/pull/13448 .. _Pull Request 13449: https://github.com/galaxyproject/galaxy/pull/13449 .. _Pull Request 13450: https://github.com/galaxyproject/galaxy/pull/13450 +.. _Pull Request 13453: https://github.com/galaxyproject/galaxy/pull/13453 .. _Pull Request 13456: https://github.com/galaxyproject/galaxy/pull/13456 .. _Pull Request 13458: https://github.com/galaxyproject/galaxy/pull/13458 .. _Pull Request 13459: https://github.com/galaxyproject/galaxy/pull/13459 @@ -89,6 +90,8 @@ .. _Pull Request 13545: https://github.com/galaxyproject/galaxy/pull/13545 .. _Pull Request 13553: https://github.com/galaxyproject/galaxy/pull/13553 .. _Pull Request 13555: https://github.com/galaxyproject/galaxy/pull/13555 +.. _Pull Request 13557: https://github.com/galaxyproject/galaxy/pull/13557 +.. _Pull Request 13559: https://github.com/galaxyproject/galaxy/pull/13559 .. _Pull Request 13560: https://github.com/galaxyproject/galaxy/pull/13560 .. _Pull Request 13561: https://github.com/galaxyproject/galaxy/pull/13561 .. _Pull Request 13562: https://github.com/galaxyproject/galaxy/pull/13562 @@ -430,12 +433,113 @@ .. _Pull Request 14176: https://github.com/galaxyproject/galaxy/pull/14176 .. _Pull Request 14179: https://github.com/galaxyproject/galaxy/pull/14179 .. _Pull Request 14181: https://github.com/galaxyproject/galaxy/pull/14181 +.. _Pull Request 14182: https://github.com/galaxyproject/galaxy/pull/14182 .. _Pull Request 14183: https://github.com/galaxyproject/galaxy/pull/14183 .. _Pull Request 14186: https://github.com/galaxyproject/galaxy/pull/14186 .. _Pull Request 14189: https://github.com/galaxyproject/galaxy/pull/14189 .. _Pull Request 14190: https://github.com/galaxyproject/galaxy/pull/14190 +.. _Pull Request 14191: https://github.com/galaxyproject/galaxy/pull/14191 .. _Pull Request 14194: https://github.com/galaxyproject/galaxy/pull/14194 .. _Pull Request 14196: https://github.com/galaxyproject/galaxy/pull/14196 .. _Pull Request 14198: https://github.com/galaxyproject/galaxy/pull/14198 .. _Pull Request 14201: https://github.com/galaxyproject/galaxy/pull/14201 .. _Pull Request 14202: https://github.com/galaxyproject/galaxy/pull/14202 +.. _Pull Request 14204: https://github.com/galaxyproject/galaxy/pull/14204 +.. _Pull Request 14205: https://github.com/galaxyproject/galaxy/pull/14205 +.. _Pull Request 14214: https://github.com/galaxyproject/galaxy/pull/14214 +.. _Pull Request 14216: https://github.com/galaxyproject/galaxy/pull/14216 +.. _Pull Request 14217: https://github.com/galaxyproject/galaxy/pull/14217 +.. _Pull Request 14218: https://github.com/galaxyproject/galaxy/pull/14218 +.. _Pull Request 14219: https://github.com/galaxyproject/galaxy/pull/14219 +.. _Pull Request 14221: https://github.com/galaxyproject/galaxy/pull/14221 +.. _Pull Request 14226: https://github.com/galaxyproject/galaxy/pull/14226 +.. _Pull Request 14231: https://github.com/galaxyproject/galaxy/pull/14231 +.. _Pull Request 14232: https://github.com/galaxyproject/galaxy/pull/14232 +.. _Pull Request 14233: https://github.com/galaxyproject/galaxy/pull/14233 +.. _Pull Request 14245: https://github.com/galaxyproject/galaxy/pull/14245 +.. _Pull Request 14251: https://github.com/galaxyproject/galaxy/pull/14251 +.. _Pull Request 14252: https://github.com/galaxyproject/galaxy/pull/14252 +.. _Pull Request 14253: https://github.com/galaxyproject/galaxy/pull/14253 +.. _Pull Request 14255: https://github.com/galaxyproject/galaxy/pull/14255 +.. _Pull Request 14263: https://github.com/galaxyproject/galaxy/pull/14263 +.. _Pull Request 14264: https://github.com/galaxyproject/galaxy/pull/14264 +.. _Pull Request 14265: https://github.com/galaxyproject/galaxy/pull/14265 +.. _Pull Request 14266: https://github.com/galaxyproject/galaxy/pull/14266 +.. _Pull Request 14269: https://github.com/galaxyproject/galaxy/pull/14269 +.. _Pull Request 14270: https://github.com/galaxyproject/galaxy/pull/14270 +.. _Pull Request 14271: https://github.com/galaxyproject/galaxy/pull/14271 +.. _Pull Request 14274: https://github.com/galaxyproject/galaxy/pull/14274 +.. _Pull Request 14277: https://github.com/galaxyproject/galaxy/pull/14277 +.. _Pull Request 14279: https://github.com/galaxyproject/galaxy/pull/14279 +.. _Pull Request 14280: https://github.com/galaxyproject/galaxy/pull/14280 +.. _Pull Request 14281: https://github.com/galaxyproject/galaxy/pull/14281 +.. _Pull Request 14284: https://github.com/galaxyproject/galaxy/pull/14284 +.. _Pull Request 14287: https://github.com/galaxyproject/galaxy/pull/14287 +.. _Pull Request 14288: https://github.com/galaxyproject/galaxy/pull/14288 +.. _Pull Request 14289: https://github.com/galaxyproject/galaxy/pull/14289 +.. _Pull Request 14291: https://github.com/galaxyproject/galaxy/pull/14291 +.. _Pull Request 14292: https://github.com/galaxyproject/galaxy/pull/14292 +.. _Pull Request 14296: https://github.com/galaxyproject/galaxy/pull/14296 +.. _Pull Request 14302: https://github.com/galaxyproject/galaxy/pull/14302 +.. _Pull Request 14307: https://github.com/galaxyproject/galaxy/pull/14307 +.. _Pull Request 14308: https://github.com/galaxyproject/galaxy/pull/14308 +.. _Pull Request 14309: https://github.com/galaxyproject/galaxy/pull/14309 +.. _Pull Request 14315: https://github.com/galaxyproject/galaxy/pull/14315 +.. _Pull Request 14318: https://github.com/galaxyproject/galaxy/pull/14318 +.. _Pull Request 14319: https://github.com/galaxyproject/galaxy/pull/14319 +.. _Pull Request 14320: https://github.com/galaxyproject/galaxy/pull/14320 +.. _Pull Request 14325: https://github.com/galaxyproject/galaxy/pull/14325 +.. _Pull Request 14328: https://github.com/galaxyproject/galaxy/pull/14328 +.. _Pull Request 14329: https://github.com/galaxyproject/galaxy/pull/14329 +.. _Pull Request 14330: https://github.com/galaxyproject/galaxy/pull/14330 +.. _Pull Request 14332: https://github.com/galaxyproject/galaxy/pull/14332 +.. _Pull Request 14334: https://github.com/galaxyproject/galaxy/pull/14334 +.. _Pull Request 14335: https://github.com/galaxyproject/galaxy/pull/14335 +.. _Pull Request 14336: https://github.com/galaxyproject/galaxy/pull/14336 +.. _Pull Request 14337: https://github.com/galaxyproject/galaxy/pull/14337 +.. _Pull Request 14338: https://github.com/galaxyproject/galaxy/pull/14338 +.. _Pull Request 14340: https://github.com/galaxyproject/galaxy/pull/14340 +.. _Pull Request 14342: https://github.com/galaxyproject/galaxy/pull/14342 +.. _Pull Request 14343: https://github.com/galaxyproject/galaxy/pull/14343 +.. _Pull Request 14345: https://github.com/galaxyproject/galaxy/pull/14345 +.. _Pull Request 14347: https://github.com/galaxyproject/galaxy/pull/14347 +.. _Pull Request 14349: https://github.com/galaxyproject/galaxy/pull/14349 +.. _Pull Request 14355: https://github.com/galaxyproject/galaxy/pull/14355 +.. _Pull Request 14357: https://github.com/galaxyproject/galaxy/pull/14357 +.. _Pull Request 14358: https://github.com/galaxyproject/galaxy/pull/14358 +.. _Pull Request 14363: https://github.com/galaxyproject/galaxy/pull/14363 +.. _Pull Request 14364: https://github.com/galaxyproject/galaxy/pull/14364 +.. _Pull Request 14371: https://github.com/galaxyproject/galaxy/pull/14371 +.. _Pull Request 14372: https://github.com/galaxyproject/galaxy/pull/14372 +.. _Pull Request 14375: https://github.com/galaxyproject/galaxy/pull/14375 +.. _Pull Request 14376: https://github.com/galaxyproject/galaxy/pull/14376 +.. _Pull Request 14386: https://github.com/galaxyproject/galaxy/pull/14386 +.. _Pull Request 14388: https://github.com/galaxyproject/galaxy/pull/14388 +.. _Pull Request 14395: https://github.com/galaxyproject/galaxy/pull/14395 +.. _Pull Request 14402: https://github.com/galaxyproject/galaxy/pull/14402 +.. _Pull Request 14403: https://github.com/galaxyproject/galaxy/pull/14403 +.. _Pull Request 14406: https://github.com/galaxyproject/galaxy/pull/14406 +.. _Pull Request 14414: https://github.com/galaxyproject/galaxy/pull/14414 +.. _Pull Request 14417: https://github.com/galaxyproject/galaxy/pull/14417 +.. _Pull Request 14418: https://github.com/galaxyproject/galaxy/pull/14418 +.. _Pull Request 14420: https://github.com/galaxyproject/galaxy/pull/14420 +.. _Pull Request 14424: https://github.com/galaxyproject/galaxy/pull/14424 +.. _Pull Request 14426: https://github.com/galaxyproject/galaxy/pull/14426 +.. _Pull Request 14428: https://github.com/galaxyproject/galaxy/pull/14428 +.. _Pull Request 14429: https://github.com/galaxyproject/galaxy/pull/14429 +.. _Pull Request 14431: https://github.com/galaxyproject/galaxy/pull/14431 +.. _Pull Request 14440: https://github.com/galaxyproject/galaxy/pull/14440 +.. _Pull Request 14444: https://github.com/galaxyproject/galaxy/pull/14444 +.. _Pull Request 14449: https://github.com/galaxyproject/galaxy/pull/14449 +.. _Pull Request 14452: https://github.com/galaxyproject/galaxy/pull/14452 +.. _Pull Request 14456: https://github.com/galaxyproject/galaxy/pull/14456 +.. _Pull Request 14457: https://github.com/galaxyproject/galaxy/pull/14457 +.. _Pull Request 14466: https://github.com/galaxyproject/galaxy/pull/14466 +.. _Pull Request 14467: https://github.com/galaxyproject/galaxy/pull/14467 +.. _Pull Request 14470: https://github.com/galaxyproject/galaxy/pull/14470 +.. _Pull Request 14471: https://github.com/galaxyproject/galaxy/pull/14471 +.. _Pull Request 14473: https://github.com/galaxyproject/galaxy/pull/14473 +.. _Pull Request 14475: https://github.com/galaxyproject/galaxy/pull/14475 +.. _Pull Request 14479: https://github.com/galaxyproject/galaxy/pull/14479 +.. _Pull Request 14480: https://github.com/galaxyproject/galaxy/pull/14480 +.. _Pull Request 14483: https://github.com/galaxyproject/galaxy/pull/14483 From 18a9a39d972f082fd77cfc6b76574638f5928a12 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 19 Aug 2022 16:11:41 +0200 Subject: [PATCH 376/553] Write admin announce, add deferred datasets to user announcement --- doc/source/releases/22.05_announce.rst | 616 +++++++++++++++++++- doc/source/releases/22.05_announce_user.rst | 12 +- doc/source/releases/index.rst | 1 + scripts/release-diff.py | 2 +- 4 files changed, 624 insertions(+), 7 deletions(-) diff --git a/doc/source/releases/22.05_announce.rst b/doc/source/releases/22.05_announce.rst index 1997de3e400..8e82df136f3 100644 --- a/doc/source/releases/22.05_announce.rst +++ b/doc/source/releases/22.05_announce.rst @@ -1,12 +1,618 @@ -:orphan: - =========================================================== May 2022 Galaxy Release (v 22.05) =========================================================== +.. include:: _header.rst -Schedule +Highlights =========================================================== - * Planned Freeze Date: 2022-05-02 - * Planned Release Date: 2022-05-23 + +**The new History is the default History** + See the `22.05 user release notes <22.05_announce_user.html>`__ for details. + +**Galaxy is now exclusively a FastAPI application** + As announced in the release notes for Galaxy Release 22.01 we have removed support to run Galaxy as a WSGI application. + If you are still using uWSGI please consult the `Migrating to Gunicorn documentation `__. + +**Deferred dataset resolution** + Optional deferred dataset resolution enables users to select that datasets fetched from URLs or remote file sources should not be fetched into Galaxy's objectstore. + Instead these datasets are only fetched when jobs using these datasets are run. + +**Enhanced Celery tasks and features** + Galaxy can optionally delegate the data upload job to Celery, and Galaxy can run the metadata script in Celery. This results in much shorter runtime for small jobs. + To enable this set `enable_celery_tasks` to `true` and ensure that at least one celery worker is started. + If Celery tasks are enabled it is also possible to change the datatype for many history items in batch. + +Also check out the `22.05 user release notes <22.05_announce_user.html>`__ + +Get Galaxy +========== + +The code lives at `GitHub `__ and you should have `Git `__ to obtain it. + +To get a new Galaxy repository run: + .. code-block:: shell + + $ git clone -b release_22.05 https://github.com/galaxyproject/galaxy.git + +To update an existing Galaxy repository run: + .. code-block:: shell + + $ git fetch origin && git checkout release_22.05 && git pull --ff-only origin release_22.05 + +See the `community hub `__ for additional details on source code locations. + +Configuration Changes +===================== + +Added +----- + +The following configuration options are new + +config/galaxy.yml.sample:galaxy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- mapping.galaxy.mapping.celery_backend +- mapping.galaxy.mapping.celery_broker +- mapping.galaxy.mapping.display_builtin_converters +- mapping.galaxy.mapping.file_sources +- mapping.galaxy.mapping.helpsite_url +- mapping.galaxy.mapping.log_destination +- mapping.galaxy.mapping.log_rotate_count +- mapping.galaxy.mapping.log_rotate_size +- mapping.galaxy.mapping.prefer_custos_login +- mapping.galaxy.mapping.short_term_storage_cleanup_interval +- mapping.galaxy.mapping.short_term_storage_default_duration +- mapping.galaxy.mapping.short_term_storage_dir +- mapping.galaxy.mapping.short_term_storage_maximum_duration +- mapping.galaxy.mapping.tool_help_bm25f_k1 +- mapping.galaxy.mapping.tool_name_exact_multiplier +- mapping.galaxy.mapping.tool_ngram_factor +- mapping.galaxy.mapping.use_legacy_history +- mapping.galaxy.mapping.workflow_monitor_sleep + + +Changed +------- + +The following configuration options have been changed + +config/galaxy.yml.sample:galaxy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- mapping.galaxy.mapping.amqp_internal_connection.desc has changed from + + :: + + Galaxy uses AMQP internally for communicating between processes. For + example, when reloading the toolbox or locking job execution, the process + that handled that particular request will tell all others to also reload, + lock jobs, etc. + For connection examples, see http://docs.celeryproject.org/projects/kombu/en/latest/userguide/connections.html + + Without specifying anything here, galaxy will first attempt to use your + specified database_connection above. If that's not specified either, Galaxy + will automatically create and use a separate sqlite database located in your + /database folder (indicated in the commented out line below). + + to + + :: + + Galaxy uses AMQP internally for communicating between processes. For + example, when reloading the toolbox or locking job execution, the process + that handled that particular request will tell all others to also reload, + lock jobs, etc. + For connection examples, see https://docs.celeryq.dev/projects/kombu/en/stable/userguide/connections.html + + Without specifying anything here, galaxy will first attempt to use your + specified database_connection above. If that's not specified either, Galaxy + will automatically create and use a separate sqlite database located in your + /database folder (indicated in the commented out line below). + + +- mapping.galaxy.mapping.debug.desc has changed from + + :: + + Debug enables access to various config options useful for development + and debugging: use_lint, use_profile, and use_printdebug. It also + causes the files used by PBS/SGE (submission script, output, and error) + to remain on disk after the job is complete. + + In addition, this will set uWSGI's `honour-stdin` option to `true`; + thus, preventing uWSGI from remapping stdin to `/dev/null` and + enabling debugging with tools like pdb. To keep uWSGI's default + setting, set `honor-stdin` to `false` in the `uwsgi` section of this + configuration file. + + to + + :: + + Debug enables access to various config options useful for development + and debugging: use_lint, use_profile, and use_printdebug. It also + causes the files used by PBS/SGE (submission script, output, and error) + to remain on disk after the job is complete. + + +- mapping.galaxy.mapping.heartbeat_interval.desc has changed from + + :: + + Control the period (in seconds) between dumps. Use -1 to disable. Regardless + of this setting, if use_heartbeat is enabled, you can send a Galaxy process + (unless running with uWSGI) SIGUSR1 (`kill -USR1`) to force a dump. + + to + + :: + + Control the period (in seconds) between dumps. Use -1 to disable. Regardless + of this setting, if use_heartbeat is enabled, you can send a Galaxy process + SIGUSR1 (`kill -USR1`) to force a dump. + + +- mapping.galaxy.mapping.helpsite_url.required has changed from + + :: + + False + + to + + :: + + True + + +- mapping.galaxy.mapping.log_level.desc has changed from + + :: + + Verbosity of console log messages. Acceptable values can be found here: + https://docs.python.org/library/logging.html#logging-levels + A custom debug level of "TRACE" is available for even more verbosity. + + to + + :: + + Verbosity of console log messages. Acceptable values can be found here: + https://docs.python.org/library/logging.html#logging-levels + A custom debug level of "TRACE" is available for even more verbosity. + + +- mapping.galaxy.mapping.logging.desc has changed from + + :: + + Controls where and how the server logs messages. If unset, the default is to log all messages to standard + output at the level defined by the `log_level` configuration option. Configuration is described in the + documentation at: + https://docs.galaxyproject.org/en/master/admin/config_logging.html + + to + + :: + + Controls where and how the server logs messages. If set, overrides all settings in the log_* configuration + options. Configuration is described in the documentation at: + https://docs.galaxyproject.org/en/master/admin/config_logging.html + + +- mapping.galaxy.mapping.metadata_strategy.desc has changed from + + :: + + Determines how metadata will be set. Valid values are `directory` and `extended`. + In extended mode jobs will decide if a tool run failed, the object stores + configuration is serialized and made available to the job and is used for + writing output datasets to the object store as part of the job and dynamic + output discovery (e.g. discovered datasets , unpopulated collections, + etc) happens as part of the job. + + to + + :: + + Determines how metadata will be set. Valid values are `directory`, `extended`, + `directory_celery` and `extended_celery`. + In extended mode jobs will decide if a tool run failed, the object stores + configuration is serialized and made available to the job and is used for + writing output datasets to the object store as part of the job and dynamic + output discovery (e.g. discovered datasets , unpopulated collections, + etc) happens as part of the job. In `directory_celery` and `extended_celery` metadata + will be set within a celery task. + + +- mapping.galaxy.mapping.monitor_thread_join_timeout.desc has changed from + + :: + + When stopping Galaxy cleanly, how much time to give various monitoring/polling + threads to finish before giving up on joining them. Set to 0 to disable this and + terminate without waiting. Among others, these threads include the job handler + workers, which are responsible for preparing/submitting and collecting/finishing + jobs, and which can cause job errors if not shut down cleanly. If using + supervisord, consider also increasing the value of `stopwaitsecs`. If using job + handler mules, consider also setting the `mule-reload-mercy` uWSGI option. See + the Galaxy Admin Documentation for more. + + to + + :: + + When stopping Galaxy cleanly, how much time to give various monitoring/polling + threads to finish before giving up on joining them. Set to 0 to disable this and + terminate without waiting. Among others, these threads include the job handler + workers, which are responsible for preparing/submitting and collecting/finishing + jobs, and which can cause job errors if not shut down cleanly. If using + supervisord, consider also increasing the value of `stopwaitsecs`. See the + Galaxy Admin Documentation for more. + + +- mapping.galaxy.mapping.screencasts_url.default has changed from + + :: + + https://vimeo.com/galaxyproject + + to + + :: + + https://www.youtube.com/c/galaxyproject + + +- mapping.galaxy.mapping.simplified_workflow_run_ui_target_history.default has changed from + + :: + + current + + to + + :: + + prefer_current + + +- mapping.galaxy.mapping.simplified_workflow_run_ui_target_history.desc has changed from + + :: + + When the simplified workflow run form is rendered, should the invocation outputs + be sent to the 'current' history or a 'new' history. + + to + + :: + + When the simplified workflow run form is rendered, should the invocation outputs + be sent to the 'current' history or a 'new' history. If the user should be presented + and option between these - set this to 'prefer_current' or 'prefer_new' to display + a runtime setting with the corresponding default. The default is to provide the + user this option and default it to the current history (the traditional behavior + of Galaxy for years) - this corresponds to the setting 'prefer_current'. + + +- mapping.galaxy.mapping.simplified_workflow_run_ui_target_history.enum has changed from + + :: + + current + new + + to + + :: + + current + new + prefer_current + prefer_new + + +- mapping.galaxy.mapping.tool_description_boost.default has changed from + + :: + + 2.0 + + to + + :: + + 8.0 + + +- mapping.galaxy.mapping.tool_description_boost.desc has changed from + + :: + + Boosts are used to customize this instance's toolbox search. + The higher the boost, the more importance the scoring algorithm gives to the + given field. Section refers to the tool group in the tool panel. Rest of + the fields are tool's attributes. + + to + + :: + + In tool search, a query match against a tool's description text will + receive this score multiplier. + + +- mapping.galaxy.mapping.tool_enable_ngram_search.desc has changed from + + :: + + Enable/ disable Ngram-search for tools. It makes tool + search results tolerant for spelling mistakes in the query + by dividing the query into multiple ngrams and search for + each ngram + + to + + :: + + Disabling this will prevent partial matches on tool names. + Enable/disable Ngram-search for tools. It makes tool + search results tolerant for spelling mistakes in the query, and will + also match query substrings e.g. "genome" will match "genomics" or + "metagenome". + + +- mapping.galaxy.mapping.tool_help_boost.default has changed from + + :: + + 0.5 + + to + + :: + + 1.0 + + +- mapping.galaxy.mapping.tool_help_boost.desc has changed from + + :: + + Boosts are used to customize this instance's toolbox search. + The higher the boost, the more importance the scoring algorithm gives to the + given field. Section refers to the tool group in the tool panel. Rest of + the fields are tool's attributes. + + to + + :: + + In tool search, a query match against a tool's help text will receive + this score multiplier. + + +- mapping.galaxy.mapping.tool_id_boost.default has changed from + + :: + + 9.0 + + to + + :: + + 20.0 + + +- mapping.galaxy.mapping.tool_id_boost.desc has changed from + + :: + + Boosts are used to customize this instance's toolbox search. + The higher the boost, the more importance the scoring algorithm gives to the + given field. Section refers to the tool group in the tool panel. Rest of + the fields are tool's attributes. + + to + + :: + + In tool search, a query match against a tool's ID text will receive + this score multiplier. The query must be an exact match against ID + in order to be counted as a match. + + +- mapping.galaxy.mapping.tool_label_boost.desc has changed from + + :: + + Boosts are used to customize this instance's toolbox search. + The higher the boost, the more importance the scoring algorithm gives to the + given field. Section refers to the tool group in the tool panel. Rest of + the fields are tool's attributes. + + to + + :: + + In tool search, a query match against a tool's label text will + receive this score multiplier. + + +- mapping.galaxy.mapping.tool_name_boost.default has changed from + + :: + + 9.0 + + to + + :: + + 20.0 + + +- mapping.galaxy.mapping.tool_name_boost.desc has changed from + + :: + + Boosts are used to customize this instance's toolbox search. + The higher the boost, the more importance the scoring algorithm gives to the + given field. Section refers to the tool group in the tool panel. Rest of + the fields are tool's attributes. + + to + + :: + + In tool search, a query match against a tool's name text will receive + this score multiplier. + + +- mapping.galaxy.mapping.tool_ngram_maxsize.desc has changed from + + :: + + Set maximum size of ngrams + + to + + :: + + Set maximum character length of ngrams + + +- mapping.galaxy.mapping.tool_ngram_minsize.desc has changed from + + :: + + Set minimum size of ngrams + + to + + :: + + Set minimum character length of ngrams + + +- mapping.galaxy.mapping.tool_search_limit.desc has changed from + + :: + + Limits the number of results in toolbox search. Can be used to tweak how many + results will appear. + + to + + :: + + Limits the number of results in toolbox search. Use to set the + maximum number of tool search results to display. + + +- mapping.galaxy.mapping.tool_section_boost.desc has changed from + + :: + + Boosts are used to customize this instance's toolbox search. + The higher the boost, the more importance the scoring algorithm gives to the + given field. Section refers to the tool group in the tool panel. Rest of + the fields are tool's attributes. + + to + + :: + + In tool search, a query match against a tool's section text will + receive this score multiplier. + + +- mapping.galaxy.mapping.tool_stub_boost.default has changed from + + :: + + 5.0 + + to + + :: + + 2.0 + + +- mapping.galaxy.mapping.tool_stub_boost.desc has changed from + + :: + + Boosts are used to customize this instance's toolbox search. + The higher the boost, the more importance the scoring algorithm gives to the + given field. Section refers to the tool group in the tool panel. Rest of + the fields are tool's attributes. + + to + + :: + + A stub is parsed from the GUID as "owner/repo/tool_id". + In tool search, a query match against a tool's stub text will receive + this score multiplier. + + +- mapping.galaxy.mapping.wiki_url.desc has changed from + + :: + + The URL linked by the "Wiki" link in the "Help" menu. + + to + + :: + + The URL linked by the "Community Hub" link in the "Help" menu. + + + + +Removed +------- + +The following configuration options have been completely removed + +config/tool_shed.yml.sample +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- uwsgi + +config/galaxy.yml.sample +~~~~~~~~~~~~~~~~~~~~~~~~ + +- uwsgi + +config/reports.yml.sample +~~~~~~~~~~~~~~~~~~~~~~~~~ + +- uwsgi + +config/galaxy.yml.sample:galaxy +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- mapping.galaxy.mapping.containers_config_file +- mapping.galaxy.mapping.enable_beta_containers_interface +- mapping.galaxy.mapping.interactive_environment_plugins_directory +- mapping.galaxy.mapping.mailing_lists_url +- mapping.galaxy.mapping.qa_url +- mapping.galaxy.mapping.search_url + + +Release Notes +=========================================================== + +.. include:: 22.05.rst + :start-after: announce_start + +.. include:: _thanks.rst diff --git a/doc/source/releases/22.05_announce_user.rst b/doc/source/releases/22.05_announce_user.rst index 9b94ef86562..4ed92080092 100644 --- a/doc/source/releases/22.05_announce_user.rst +++ b/doc/source/releases/22.05_announce_user.rst @@ -23,7 +23,7 @@ Check it out now! **Storage Dashboard** (beta) -Have you ever been over your quotum? 250 GB sure goes fast! Now with the new Storage Dashboard you can get a quick overview of ways to help clean up deleted datasets and recover some of that quotum allocation. This is a beta version of this interface, let us know if you have any issues. In future versions, it will be expanded to help you understand how your allocation is being used, and which histories and datasets should be cleaned up first. +Have you ever been over your quota? 250 GB sure goes fast! Now with the new Storage Dashboard you can get a quick overview of ways to help clean up deleted datasets and recover some of that quotum allocation. This is a beta version of this interface, let us know if you have any issues. In future versions, it will be expanded to help you understand how your allocation is being used, and which histories and datasets should be cleaned up first. .. raw:: html @@ -37,6 +37,16 @@ The new history allows for improved bulk operations, selecting dozens or hundred +**Deferred dataset resolution enables running workflows and tools without importing data into Galaxy first** + +It is now possible to defer dataset resolution for datasets imported via URLs and the "Choose remote files" dialog. +This means that the deferred dataset will only be downloaded as it is needed during job execution. Deferred datasets will not +count towards you storage quota, as the data is not stored by Galaxy. To enable deferred dataset resolution click on "settings" +in the upload dialog. + +.. figure:: images/22.05-deferred-data-upload.png + :alt: Screenshot of the upload modal. The settings menu is expanded and shows the "Deferred dataset resolution" checkbox. + **Workflow Improvements** You can now see all invocations of a specific workflow, across all of your histories. diff --git a/doc/source/releases/index.rst b/doc/source/releases/index.rst index da1e2921287..7ad738caa8c 100644 --- a/doc/source/releases/index.rst +++ b/doc/source/releases/index.rst @@ -4,6 +4,7 @@ Releases .. toctree:: :maxdepth: 1 + 22.05_announce_user 22.01_announce_user 21.09_announce_user 21.05_announce_user diff --git a/scripts/release-diff.py b/scripts/release-diff.py index 98739758100..10e69a620af 100644 --- a/scripts/release-diff.py +++ b/scripts/release-diff.py @@ -86,7 +86,7 @@ def _report_dict(title, subheading, data, mapper): def _indent(s, by=4): whitespace = " " * by - s = s if isinstance(s, list) else s.splitlines() + s = s if isinstance(s, list) else str(s).splitlines() return "\n".join(f"{whitespace}{line}" for line in s) From 2c12d3a55ff438ca23aec06d339999e648c4c82b Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 19 Aug 2022 16:25:38 +0200 Subject: [PATCH 377/553] Add newer PRs --- doc/source/releases/22.05.rst | 3 +++ doc/source/releases/22.05_prs.rst | 1 + 2 files changed, 4 insertions(+) diff --git a/doc/source/releases/22.05.rst b/doc/source/releases/22.05.rst index 3d03c9abe46..c2f9d09f9ca 100644 --- a/doc/source/releases/22.05.rst +++ b/doc/source/releases/22.05.rst @@ -636,6 +636,9 @@ Enhancements * Disable translogger middleware by default (thanks to `@natefoo `__). `Pull Request 14467`_ +* Fix Jobs API index to accept query parameters as lists + (thanks to `@davelopez `__). + `Pull Request 14482`_ .. small_enhancement * Python code formatting standard, automatic diff --git a/doc/source/releases/22.05_prs.rst b/doc/source/releases/22.05_prs.rst index ab0a63d8eb8..db2d6ec3da2 100644 --- a/doc/source/releases/22.05_prs.rst +++ b/doc/source/releases/22.05_prs.rst @@ -542,4 +542,5 @@ .. _Pull Request 14475: https://github.com/galaxyproject/galaxy/pull/14475 .. _Pull Request 14479: https://github.com/galaxyproject/galaxy/pull/14479 .. _Pull Request 14480: https://github.com/galaxyproject/galaxy/pull/14480 +.. _Pull Request 14482: https://github.com/galaxyproject/galaxy/pull/14482 .. _Pull Request 14483: https://github.com/galaxyproject/galaxy/pull/14483 From 2f34e4070cb277d8036ba58142939edc2f5a10e5 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 19 Aug 2022 17:11:57 +0200 Subject: [PATCH 378/553] Drop overly verbose changes --- doc/source/releases/22.05_announce.rst | 106 ------------------------- 1 file changed, 106 deletions(-) diff --git a/doc/source/releases/22.05_announce.rst b/doc/source/releases/22.05_announce.rst index 8e82df136f3..5de5a386529 100644 --- a/doc/source/releases/22.05_announce.rst +++ b/doc/source/releases/22.05_announce.rst @@ -82,37 +82,6 @@ The following configuration options have been changed config/galaxy.yml.sample:galaxy ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- mapping.galaxy.mapping.amqp_internal_connection.desc has changed from - - :: - - Galaxy uses AMQP internally for communicating between processes. For - example, when reloading the toolbox or locking job execution, the process - that handled that particular request will tell all others to also reload, - lock jobs, etc. - For connection examples, see http://docs.celeryproject.org/projects/kombu/en/latest/userguide/connections.html - - Without specifying anything here, galaxy will first attempt to use your - specified database_connection above. If that's not specified either, Galaxy - will automatically create and use a separate sqlite database located in your - /database folder (indicated in the commented out line below). - - to - - :: - - Galaxy uses AMQP internally for communicating between processes. For - example, when reloading the toolbox or locking job execution, the process - that handled that particular request will tell all others to also reload, - lock jobs, etc. - For connection examples, see https://docs.celeryq.dev/projects/kombu/en/stable/userguide/connections.html - - Without specifying anything here, galaxy will first attempt to use your - specified database_connection above. If that's not specified either, Galaxy - will automatically create and use a separate sqlite database located in your - /database folder (indicated in the commented out line below). - - - mapping.galaxy.mapping.debug.desc has changed from :: @@ -138,53 +107,6 @@ config/galaxy.yml.sample:galaxy to remain on disk after the job is complete. -- mapping.galaxy.mapping.heartbeat_interval.desc has changed from - - :: - - Control the period (in seconds) between dumps. Use -1 to disable. Regardless - of this setting, if use_heartbeat is enabled, you can send a Galaxy process - (unless running with uWSGI) SIGUSR1 (`kill -USR1`) to force a dump. - - to - - :: - - Control the period (in seconds) between dumps. Use -1 to disable. Regardless - of this setting, if use_heartbeat is enabled, you can send a Galaxy process - SIGUSR1 (`kill -USR1`) to force a dump. - - -- mapping.galaxy.mapping.helpsite_url.required has changed from - - :: - - False - - to - - :: - - True - - -- mapping.galaxy.mapping.log_level.desc has changed from - - :: - - Verbosity of console log messages. Acceptable values can be found here: - https://docs.python.org/library/logging.html#logging-levels - A custom debug level of "TRACE" is available for even more verbosity. - - to - - :: - - Verbosity of console log messages. Acceptable values can be found here: - https://docs.python.org/library/logging.html#logging-levels - A custom debug level of "TRACE" is available for even more verbosity. - - - mapping.galaxy.mapping.logging.desc has changed from :: @@ -228,32 +150,6 @@ config/galaxy.yml.sample:galaxy will be set within a celery task. -- mapping.galaxy.mapping.monitor_thread_join_timeout.desc has changed from - - :: - - When stopping Galaxy cleanly, how much time to give various monitoring/polling - threads to finish before giving up on joining them. Set to 0 to disable this and - terminate without waiting. Among others, these threads include the job handler - workers, which are responsible for preparing/submitting and collecting/finishing - jobs, and which can cause job errors if not shut down cleanly. If using - supervisord, consider also increasing the value of `stopwaitsecs`. If using job - handler mules, consider also setting the `mule-reload-mercy` uWSGI option. See - the Galaxy Admin Documentation for more. - - to - - :: - - When stopping Galaxy cleanly, how much time to give various monitoring/polling - threads to finish before giving up on joining them. Set to 0 to disable this and - terminate without waiting. Among others, these threads include the job handler - workers, which are responsible for preparing/submitting and collecting/finishing - jobs, and which can cause job errors if not shut down cleanly. If using - supervisord, consider also increasing the value of `stopwaitsecs`. See the - Galaxy Admin Documentation for more. - - - mapping.galaxy.mapping.screencasts_url.default has changed from :: @@ -576,8 +472,6 @@ config/galaxy.yml.sample:galaxy The URL linked by the "Community Hub" link in the "Help" menu. - - Removed ------- From 95326249cddfab51426c2c048c278b21f05e90b1 Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Fri, 19 Aug 2022 17:37:27 +0100 Subject: [PATCH 379/553] Update application documentation with: ``` make -C doc/ updaterst ``` --- doc/source/lib/galaxy.app_unittest_utils.rst | 8 - doc/source/lib/galaxy.containers.rst | 42 - doc/source/lib/galaxy.datatypes.rst | 8 + doc/source/lib/galaxy.files.rst | 11 + .../lib/galaxy.job_metrics.instrumenters.rst | 8 - doc/source/lib/galaxy.job_metrics.rst | 8 + doc/source/lib/galaxy.managers.rst | 8 + doc/source/lib/galaxy.model.migrate.rst | 27 - .../lib/galaxy.model.migrate.triggers.rst | 26 - .../lib/galaxy.model.migrate.versions.rst | 1458 ----------------- doc/source/lib/galaxy.model.migrations.rst | 26 + doc/source/lib/galaxy.model.orm.rst | 8 + doc/source/lib/galaxy.model.rst | 19 +- doc/source/lib/galaxy.model.store.rst | 8 + ...galaxy.model.tool_shed_install.migrate.rst | 26 - ...del.tool_shed_install.migrate.versions.rst | 146 -- .../lib/galaxy.model.tool_shed_install.rst | 8 - doc/source/lib/galaxy.model.triggers.rst | 34 + .../lib/galaxy.model.unittest_utils.rst | 8 + doc/source/lib/galaxy.rst | 1 - doc/source/lib/galaxy.schema.rst | 16 + .../lib/galaxy.tool_shed.galaxy_install.rst | 1 - ...alaxy_install.tool_dependencies.recipe.rst | 58 - ..._shed.galaxy_install.tool_dependencies.rst | 26 - doc/source/lib/galaxy.tool_util.deps.rst | 8 + .../lib/galaxy.tool_util.ontologies.rst | 18 + doc/source/lib/galaxy.tool_util.rst | 1 + doc/source/lib/galaxy.tours.rst | 11 + doc/source/lib/galaxy.util.pastescript.rst | 26 - doc/source/lib/galaxy.util.rst | 9 - .../lib/galaxy.visualization.plugins.rst | 8 - .../lib/galaxy.web.framework.middleware.rst | 8 - doc/source/lib/galaxy.web.rst | 9 +- .../lib/galaxy.web.short_term_storage.rst | 7 + doc/source/lib/galaxy.webapps.galaxy.api.rst | 16 + .../lib/galaxy.webapps.galaxy.controllers.rst | 8 - .../lib/galaxy.webapps.galaxy.services.rst | 48 + doc/source/lib/galaxy.webapps.openapi.rst | 18 + doc/source/lib/galaxy.webapps.rst | 1 + .../lib/galaxy_ext.container_monitor.rst | 18 + doc/source/lib/galaxy_ext.rst | 1 + doc/source/lib/galaxy_test.api.rst | 16 - doc/source/lib/galaxy_test.performance.rst | 8 - doc/source/lib/galaxy_test.rst | 11 + doc/source/lib/galaxy_test.selenium.rst | 16 + doc/source/lib/tool_shed.test.functional.rst | 16 - 46 files changed, 328 insertions(+), 1943 deletions(-) delete mode 100644 doc/source/lib/galaxy.containers.rst delete mode 100644 doc/source/lib/galaxy.model.migrate.rst delete mode 100644 doc/source/lib/galaxy.model.migrate.triggers.rst delete mode 100644 doc/source/lib/galaxy.model.migrate.versions.rst create mode 100644 doc/source/lib/galaxy.model.migrations.rst delete mode 100644 doc/source/lib/galaxy.model.tool_shed_install.migrate.rst delete mode 100644 doc/source/lib/galaxy.model.tool_shed_install.migrate.versions.rst create mode 100644 doc/source/lib/galaxy.model.triggers.rst delete mode 100644 doc/source/lib/galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.rst delete mode 100644 doc/source/lib/galaxy.tool_shed.galaxy_install.tool_dependencies.rst create mode 100644 doc/source/lib/galaxy.tool_util.ontologies.rst delete mode 100644 doc/source/lib/galaxy.util.pastescript.rst create mode 100644 doc/source/lib/galaxy.web.short_term_storage.rst create mode 100644 doc/source/lib/galaxy.webapps.openapi.rst create mode 100644 doc/source/lib/galaxy_ext.container_monitor.rst diff --git a/doc/source/lib/galaxy.app_unittest_utils.rst b/doc/source/lib/galaxy.app_unittest_utils.rst index b7102289a47..03d8255bcae 100644 --- a/doc/source/lib/galaxy.app_unittest_utils.rst +++ b/doc/source/lib/galaxy.app_unittest_utils.rst @@ -9,14 +9,6 @@ galaxy.app\_unittest\_utils package Submodules ---------- -galaxy.app\_unittest\_utils.celery\_helper module -------------------------------------------------- - -.. automodule:: galaxy.app_unittest_utils.celery_helper - :members: - :undoc-members: - :show-inheritance: - galaxy.app\_unittest\_utils.galaxy\_mock module ----------------------------------------------- diff --git a/doc/source/lib/galaxy.containers.rst b/doc/source/lib/galaxy.containers.rst deleted file mode 100644 index 6a1a6952015..00000000000 --- a/doc/source/lib/galaxy.containers.rst +++ /dev/null @@ -1,42 +0,0 @@ -galaxy.containers package -========================= - -.. automodule:: galaxy.containers - :members: - :undoc-members: - :show-inheritance: - -Submodules ----------- - -galaxy.containers.docker module -------------------------------- - -.. automodule:: galaxy.containers.docker - :members: - :undoc-members: - :show-inheritance: - -galaxy.containers.docker\_decorators module -------------------------------------------- - -.. automodule:: galaxy.containers.docker_decorators - :members: - :undoc-members: - :show-inheritance: - -galaxy.containers.docker\_model module --------------------------------------- - -.. automodule:: galaxy.containers.docker_model - :members: - :undoc-members: - :show-inheritance: - -galaxy.containers.docker\_swarm module --------------------------------------- - -.. automodule:: galaxy.containers.docker_swarm - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/lib/galaxy.datatypes.rst b/doc/source/lib/galaxy.datatypes.rst index ba4f5c2ed25..6975459123f 100644 --- a/doc/source/lib/galaxy.datatypes.rst +++ b/doc/source/lib/galaxy.datatypes.rst @@ -268,6 +268,14 @@ galaxy.datatypes.proteomics module :undoc-members: :show-inheritance: +galaxy.datatypes.qiime2 module +------------------------------ + +.. automodule:: galaxy.datatypes.qiime2 + :members: + :undoc-members: + :show-inheritance: + galaxy.datatypes.qualityscore module ------------------------------------ diff --git a/doc/source/lib/galaxy.files.rst b/doc/source/lib/galaxy.files.rst index 47b7e4bf13d..8d98f0d70b8 100644 --- a/doc/source/lib/galaxy.files.rst +++ b/doc/source/lib/galaxy.files.rst @@ -14,3 +14,14 @@ Subpackages galaxy.files.sources galaxy.files.unittest_utils + +Submodules +---------- + +galaxy.files.uris module +------------------------ + +.. automodule:: galaxy.files.uris + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.job_metrics.instrumenters.rst b/doc/source/lib/galaxy.job_metrics.instrumenters.rst index 54615895b99..c6312d28484 100644 --- a/doc/source/lib/galaxy.job_metrics.instrumenters.rst +++ b/doc/source/lib/galaxy.job_metrics.instrumenters.rst @@ -17,14 +17,6 @@ galaxy.job\_metrics.instrumenters.cgroup module :undoc-members: :show-inheritance: -galaxy.job\_metrics.instrumenters.collectl module -------------------------------------------------- - -.. automodule:: galaxy.job_metrics.instrumenters.collectl - :members: - :undoc-members: - :show-inheritance: - galaxy.job\_metrics.instrumenters.core module --------------------------------------------- diff --git a/doc/source/lib/galaxy.job_metrics.rst b/doc/source/lib/galaxy.job_metrics.rst index f8c01bd1cb5..73af55fcaf0 100644 --- a/doc/source/lib/galaxy.job_metrics.rst +++ b/doc/source/lib/galaxy.job_metrics.rst @@ -24,3 +24,11 @@ galaxy.job\_metrics.formatting module :members: :undoc-members: :show-inheritance: + +galaxy.job\_metrics.safety module +--------------------------------- + +.. automodule:: galaxy.job_metrics.safety + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.managers.rst b/doc/source/lib/galaxy.managers.rst index 0a1c0bebbc1..426630b05c1 100644 --- a/doc/source/lib/galaxy.managers.rst +++ b/doc/source/lib/galaxy.managers.rst @@ -273,6 +273,14 @@ galaxy.managers.metrics module :undoc-members: :show-inheritance: +galaxy.managers.model\_stores module +------------------------------------ + +.. automodule:: galaxy.managers.model_stores + :members: + :undoc-members: + :show-inheritance: + galaxy.managers.pages module ---------------------------- diff --git a/doc/source/lib/galaxy.model.migrate.rst b/doc/source/lib/galaxy.model.migrate.rst deleted file mode 100644 index 7f78af9078c..00000000000 --- a/doc/source/lib/galaxy.model.migrate.rst +++ /dev/null @@ -1,27 +0,0 @@ -galaxy.model.migrate package -============================ - -.. automodule:: galaxy.model.migrate - :members: - :undoc-members: - :show-inheritance: - -Subpackages ------------ - -.. toctree:: - :maxdepth: 4 - - galaxy.model.migrate.triggers - galaxy.model.migrate.versions - -Submodules ----------- - -galaxy.model.migrate.check module ---------------------------------- - -.. automodule:: galaxy.model.migrate.check - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/lib/galaxy.model.migrate.triggers.rst b/doc/source/lib/galaxy.model.migrate.triggers.rst deleted file mode 100644 index 7297f66154f..00000000000 --- a/doc/source/lib/galaxy.model.migrate.triggers.rst +++ /dev/null @@ -1,26 +0,0 @@ -galaxy.model.migrate.triggers package -===================================== - -.. automodule:: galaxy.model.migrate.triggers - :members: - :undoc-members: - :show-inheritance: - -Submodules ----------- - -galaxy.model.migrate.triggers.history\_update\_time\_field module ------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.triggers.history_update_time_field - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.triggers.update\_audit\_table module ---------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.triggers.update_audit_table - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/lib/galaxy.model.migrate.versions.rst b/doc/source/lib/galaxy.model.migrate.versions.rst deleted file mode 100644 index 07d2348277c..00000000000 --- a/doc/source/lib/galaxy.model.migrate.versions.rst +++ /dev/null @@ -1,1458 +0,0 @@ -galaxy.model.migrate.versions package -===================================== - -.. automodule:: galaxy.model.migrate.versions - :members: - :undoc-members: - :show-inheritance: - -Submodules ----------- - -galaxy.model.migrate.versions.0001\_initial\_tables module ----------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0001_initial_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0002\_metadata\_file\_table module ----------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0002_metadata_file_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0003\_security\_and\_libraries module -------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0003_security_and_libraries - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0004\_indexes\_and\_defaults module ------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0004_indexes_and_defaults - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0005\_cleanup\_datasets\_fix module ------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0005_cleanup_datasets_fix - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0006\_change\_qual\_datatype module ------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0006_change_qual_datatype - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0007\_sharing\_histories module -------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0007_sharing_histories - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0008\_galaxy\_forms module --------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0008_galaxy_forms - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0009\_request\_table module ---------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0009_request_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0010\_hda\_display\_at\_authz\_table module -------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0010_hda_display_at_authz_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0011\_v0010\_mysql\_index\_fix module -------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0011_v0010_mysql_index_fix - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0012\_user\_address module --------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0012_user_address - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0013\_change\_lib\_item\_templates\_to\_forms module ----------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0013_change_lib_item_templates_to_forms - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0014\_pages module ------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0014_pages - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0015\_tagging module --------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0015_tagging - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0016\_v0015\_mysql\_index\_fix module -------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0016_v0015_mysql_index_fix - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0017\_library\_item\_indexes module ------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0017_library_item_indexes - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0018\_ordered\_tags\_and\_page\_tags module -------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0018_ordered_tags_and_page_tags - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0019\_request\_library\_folder module -------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0019_request_library_folder - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0020\_library\_upload\_job module ---------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0020_library_upload_job - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0021\_user\_prefs module ------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0021_user_prefs - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0022\_visualization\_tables module ----------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0022_visualization_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0023\_page\_published\_and\_deleted\_columns module ---------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0023_page_published_and_deleted_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0024\_page\_slug\_unique\_constraint module -------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0024_page_slug_unique_constraint - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0025\_user\_info module ------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0025_user_info - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0026\_cloud\_tables module --------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0026_cloud_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0027\_request\_events module ----------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0027_request_events - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0028\_external\_metadata\_file\_override module ------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0028_external_metadata_file_override - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0029\_user\_actions module --------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0029_user_actions - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0030\_history\_slug\_column module ----------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0030_history_slug_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0031\_community\_and\_workflow\_tags module -------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0031_community_and_workflow_tags - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0032\_stored\_workflow\_slug\_column module -------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0032_stored_workflow_slug_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0033\_published\_cols\_for\_histories\_and\_workflows module ------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0033_published_cols_for_histories_and_workflows - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0034\_page\_user\_share\_association module -------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0034_page_user_share_association - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0035\_item\_annotations\_and\_workflow\_step\_tags module ---------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0035_item_annotations_and_workflow_step_tags - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0036\_add\_deleted\_column\_to\_library\_template\_assoc\_tables module ------------------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0036_add_deleted_column_to_library_template_assoc_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0037\_samples\_library module ------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0037_samples_library - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0038\_add\_inheritable\_column\_to\_library\_template\_assoc\_tables module ---------------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0038_add_inheritable_column_to_library_template_assoc_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0039\_add\_synopsis\_column\_to\_library\_table module ------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0039_add_synopsis_column_to_library_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0040\_page\_annotations module ------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0040_page_annotations - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0041\_workflow\_invocation module ---------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0041_workflow_invocation - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0042\_workflow\_invocation\_fix module --------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0042_workflow_invocation_fix - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0043\_visualization\_sharing\_tagging\_annotating module --------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0043_visualization_sharing_tagging_annotating - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0044\_add\_notify\_column\_to\_request\_table module ----------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0044_add_notify_column_to_request_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0045\_request\_type\_permissions\_table module ----------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0045_request_type_permissions_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0046\_post\_job\_actions module -------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0046_post_job_actions - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0047\_job\_table\_user\_id\_column module ------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0047_job_table_user_id_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0048\_dataset\_instance\_state\_column module ---------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0048_dataset_instance_state_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0049\_api\_keys\_table module ------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0049_api_keys_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0050\_drop\_cloud\_tables module --------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0050_drop_cloud_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0051\_imported\_col\_for\_jobs\_table module --------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0051_imported_col_for_jobs_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0052\_sample\_dataset\_table module ------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0052_sample_dataset_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0053\_item\_ratings module --------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0053_item_ratings - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0054\_visualization\_dbkey module ---------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0054_visualization_dbkey - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0055\_add\_pja\_assoc\_for\_jobs module ---------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0055_add_pja_assoc_for_jobs - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0056\_workflow\_outputs module ------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0056_workflow_outputs - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0057\_request\_notify module ----------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0057_request_notify - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0058\_history\_import\_export module ------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0058_history_import_export - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0059\_sample\_dataset\_file\_path module ----------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0059_sample_dataset_file_path - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0060\_history\_archive\_import module -------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0060_history_archive_import - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0061\_tasks module ------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0061_tasks - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0062\_user\_openid\_table module --------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0062_user_openid_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0063\_sequencer\_table module ------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0063_sequencer_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0064\_add\_run\_and\_sample\_run\_association\_tables module ------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0064_add_run_and_sample_run_association_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0065\_add\_name\_to\_form\_fields\_and\_values module ------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0065_add_name_to_form_fields_and_values - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0066\_deferred\_job\_and\_transfer\_job\_tables module ------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0066_deferred_job_and_transfer_job_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0067\_populate\_sequencer\_table module ---------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0067_populate_sequencer_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0068\_rename\_sequencer\_to\_external\_services module ------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0068_rename_sequencer_to_external_services - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0069\_rename\_sequencer\_form\_type module ------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0069_rename_sequencer_form_type - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0070\_add\_info\_column\_to\_deferred\_job\_table module --------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0070_add_info_column_to_deferred_job_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0071\_add\_history\_and\_workflow\_to\_sample module ----------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0071_add_history_and_workflow_to_sample - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0072\_add\_pid\_and\_socket\_columns\_to\_transfer\_job\_table module ---------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0072_add_pid_and_socket_columns_to_transfer_job_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0073\_add\_ldda\_to\_implicit\_conversion\_table module -------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0073_add_ldda_to_implicit_conversion_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0074\_add\_purged\_column\_to\_library\_dataset\_table module -------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0074_add_purged_column_to_library_dataset_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0075\_add\_subindex\_column\_to\_run\_table module --------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0075_add_subindex_column_to_run_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0076\_fix\_form\_values\_data\_corruption module ------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0076_fix_form_values_data_corruption - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0077\_create\_tool\_tag\_association\_table module --------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0077_create_tool_tag_association_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0078\_add\_columns\_for\_disk\_usage\_accounting module -------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0078_add_columns_for_disk_usage_accounting - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0079\_input\_library\_to\_job\_table module -------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0079_input_library_to_job_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0080\_quota\_tables module --------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0080_quota_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0081\_add\_tool\_version\_to\_hda\_ldda module ----------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0081_add_tool_version_to_hda_ldda - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0082\_add\_tool\_shed\_repository\_table module ------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0082_add_tool_shed_repository_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0083\_add\_prepare\_files\_to\_task module ------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0083_add_prepare_files_to_task - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0084\_add\_ldda\_id\_to\_implicit\_conversion\_table module ------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0084_add_ldda_id_to_implicit_conversion_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0085\_add\_task\_info module ----------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0085_add_task_info - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0086\_add\_tool\_shed\_repository\_table\_columns module --------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0086_add_tool_shed_repository_table_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0087\_tool\_id\_guid\_map\_table module ---------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0087_tool_id_guid_map_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0088\_add\_installed\_changeset\_revison\_column module -------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0088_add_installed_changeset_revison_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0089\_add\_object\_store\_id\_columns module --------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0089_add_object_store_id_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0090\_add\_tool\_shed\_repository\_table\_columns module --------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0090_add_tool_shed_repository_table_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0091\_add\_tool\_version\_tables module ---------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0091_add_tool_version_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0092\_add\_migrate\_tools\_table module ---------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0092_add_migrate_tools_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0093\_add\_job\_params\_col module ----------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0093_add_job_params_col - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0094\_add\_job\_handler\_col module ------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0094_add_job_handler_col - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0095\_hda\_subsets module -------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0095_hda_subsets - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0096\_openid\_provider module ------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0096_openid_provider - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0097\_add\_ctx\_rev\_column module ----------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0097_add_ctx_rev_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0098\_genome\_index\_tool\_data\_table module ---------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0098_genome_index_tool_data_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0099\_add\_tool\_dependency\_table module ------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0099_add_tool_dependency_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0100\_alter\_tool\_dependency\_table\_version\_column module ------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0100_alter_tool_dependency_table_version_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0101\_drop\_installed\_changeset\_revision\_column module ---------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0101_drop_installed_changeset_revision_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0102\_add\_tool\_dependency\_status\_columns module ---------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0102_add_tool_dependency_status_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0103\_add\_tool\_shed\_repository\_status\_columns module ---------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0103_add_tool_shed_repository_status_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0104\_update\_genome\_downloader\_job\_parameters module --------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0104_update_genome_downloader_job_parameters - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0105\_add\_cleanup\_event\_table module ---------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0105_add_cleanup_event_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0106\_add\_missing\_indexes module ----------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0106_add_missing_indexes - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0107\_add\_exit\_code\_to\_job\_and\_task module ------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0107_add_exit_code_to_job_and_task - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0108\_add\_extended\_metadata module ------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0108_add_extended_metadata - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0109\_add\_repository\_dependency\_tables module ------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0109_add_repository_dependency_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0110\_add\_dataset\_uuid module -------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0110_add_dataset_uuid - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0111\_add\_job\_destinations module ------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0111_add_job_destinations - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0112\_add\_data\_manager\_history\_association\_and\_data\_manager\_job\_association\_tables module ---------------------------------------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0112_add_data_manager_history_association_and_data_manager_job_association_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0113\_update\_migrate\_tools\_table module ------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0113_update_migrate_tools_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0114\_update\_migrate\_tools\_table\_again module -------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0114_update_migrate_tools_table_again - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0115\_longer\_user\_password\_field module ------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0115_longer_user_password_field - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0116\_drop\_update\_available\_col\_add\_tool\_shed\_status\_col module ------------------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0116_drop_update_available_col_add_tool_shed_status_col - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0117\_add\_user\_activation module ----------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0117_add_user_activation - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0118\_add\_hda\_extended\_metadata module ------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0118_add_hda_extended_metadata - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0119\_job\_metrics module -------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0119_job_metrics - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0120\_dataset\_collections module ---------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0120_dataset_collections - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0121\_workflow\_uuids module ----------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0121_workflow_uuids - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0122\_grow\_mysql\_blobs module -------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0122_grow_mysql_blobs - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0123\_add\_workflow\_request\_tables module -------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0123_add_workflow_request_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0124\_job\_state\_history module --------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0124_job_state_history - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0125\_workflow\_step\_tracking module -------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0125_workflow_step_tracking - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0126\_password\_reset module ----------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0126_password_reset - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0127\_output\_collection\_adjustments module --------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0127_output_collection_adjustments - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0128\_session\_timeout module ------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0128_session_timeout - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0129\_job\_external\_output\_metadata\_validity module ------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0129_job_external_output_metadata_validity - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0130\_change\_pref\_datatype module ------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0130_change_pref_datatype - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0131\_subworkflow\_and\_input\_parameter\_modules module --------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0131_subworkflow_and_input_parameter_modules - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0132\_add\_lastpasswordchange\_to\_user module ----------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0132_add_lastpasswordchange_to_user - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0133\_add\_dependency\_column\_to\_job module ---------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0133_add_dependency_column_to_job - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0134\_hda\_set\_deleted\_if\_purged module ------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0134_hda_set_deleted_if_purged - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0135\_add\_library\_tags module -------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0135_add_library_tags - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0136\_collection\_and\_workflow\_state module ---------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0136_collection_and_workflow_state - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0137\_add\_copied\_from\_job\_id\_column module ------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0137_add_copied_from_job_id_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0138\_add\_hda\_version module ------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0138_add_hda_version - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0139\_add\_history\_dataset\_association\_history\_table module ---------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0139_add_history_dataset_association_history_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0140\_add\_dataset\_version\_to\_job\_to\_input\_dataset\_association\_table module ------------------------------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0140_add_dataset_version_to_job_to_input_dataset_association_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0141\_add\_oidc\_tables module ------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0141_add_oidc_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0142\_change\_numeric\_metric\_precision module ------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0142_change_numeric_metric_precision - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0143\_add\_cloudauthz\_tables module ------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0143_add_cloudauthz_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0144\_add\_cleanup\_event\_user\_table module ---------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0144_add_cleanup_event_user_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0145\_add\_workflow\_step\_input module ---------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0145_add_workflow_step_input - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0146\_workflow\_paths module ----------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0146_workflow_paths - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0147\_job\_messages module --------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0147_job_messages - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0148\_add\_checksum\_table module ---------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0148_add_checksum_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0149\_dynamic\_tools module ---------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0149_dynamic_tools - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0150\_add\_create\_time\_field\_for\_cloudauthz module ------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0150_add_create_time_field_for_cloudauthz - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0151\_add\_worker\_process module ---------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0151_add_worker_process - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0152\_add\_metadata\_file\_uuid module --------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0152_add_metadata_file_uuid - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0153\_add\_custos\_authnz\_token\_table module ----------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0153_add_custos_authnz_token_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0154\_created\_from\_basename module ------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0154_created_from_basename - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0155\_job\_galaxy\_version module ---------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0155_job_galaxy_version - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0156\_add\_interactivetools module ----------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0156_add_interactivetools - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0157\_rework\_dataset\_validation module ----------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0157_rework_dataset_validation - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0158\_workflow\_reports module ------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0158_workflow_reports - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0159\_add\_job\_external\_id\_index module ------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0159_add_job_external_id_index - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0160\_hda\_set\_deleted\_if\_purged\_again module -------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0160_hda_set_deleted_if_purged_again - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0161\_add\_workflow\_invocation\_output\_table module ------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.0161_add_workflow_invocation_output_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0162\_job\_only\_pjas module ----------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0162_job_only_pjas - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0163\_worker\_process\_pid module ---------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0163_worker_process_pid - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0164\_page\_format module -------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0164_page_format - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0165\_add\_content\_update\_time module ---------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0165_add_content_update_time - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0166\_job\_state\_summary\_view module --------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0166_job_state_summary_view - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0167\_add\_job\_to\_input\_dataset\_collection\_element\_association module ---------------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0167_add_job_to_input_dataset_collection_element_association - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0168\_stored\_workflow\_hidden\_col module ------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0168_stored_workflow_hidden_col - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0169\_add\_missing\_indexes module ----------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0169_add_missing_indexes - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0170\_add\_more\_missing\_indexes module ----------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0170_add_more_missing_indexes - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0171\_schemaorg\_metadata module --------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0171_schemaorg_metadata - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0172\_it\_entrypoint\_requires\_domain module ---------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0172_it_entrypoint_requires_domain - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0173\_add\_job\_id\_to\_dataset module --------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0173_add_job_id_to_dataset - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0174\_readd\_update\_time\_triggers module ------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0174_readd_update_time_triggers - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0175\_history\_audit module ---------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0175_history_audit - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0176\_add\_indexes\_on\_update\_time module -------------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0176_add_indexes_on_update_time - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0177\_update\_job\_state\_summary module ----------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0177_update_job_state_summary - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0178\_drop\_deferredjob\_table module -------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0178_drop_deferredjob_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0179\_drop\_transferjob\_table module -------------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0179_drop_transferjob_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.0180\_add\_vault\_table module ------------------------------------------------------------- - -.. automodule:: galaxy.model.migrate.versions.0180_add_vault_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.migrate.versions.util module ------------------------------------------ - -.. automodule:: galaxy.model.migrate.versions.util - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/lib/galaxy.model.migrations.rst b/doc/source/lib/galaxy.model.migrations.rst new file mode 100644 index 00000000000..4212e1dc003 --- /dev/null +++ b/doc/source/lib/galaxy.model.migrations.rst @@ -0,0 +1,26 @@ +galaxy.model.migrations package +=============================== + +.. automodule:: galaxy.model.migrations + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +galaxy.model.migrations.scripts module +-------------------------------------- + +.. automodule:: galaxy.model.migrations.scripts + :members: + :undoc-members: + :show-inheritance: + +galaxy.model.migrations.util module +----------------------------------- + +.. automodule:: galaxy.model.migrations.util + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.model.orm.rst b/doc/source/lib/galaxy.model.orm.rst index 726abd3e20a..d5d891d5614 100644 --- a/doc/source/lib/galaxy.model.orm.rst +++ b/doc/source/lib/galaxy.model.orm.rst @@ -32,3 +32,11 @@ galaxy.model.orm.scripts module :members: :undoc-members: :show-inheritance: + +galaxy.model.orm.util module +---------------------------- + +.. automodule:: galaxy.model.orm.util + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.model.rst b/doc/source/lib/galaxy.model.rst index 5805dce314f..a99d4400332 100644 --- a/doc/source/lib/galaxy.model.rst +++ b/doc/source/lib/galaxy.model.rst @@ -13,10 +13,11 @@ Subpackages :maxdepth: 4 galaxy.model.dataset_collections - galaxy.model.migrate + galaxy.model.migrations galaxy.model.orm galaxy.model.store galaxy.model.tool_shed_install + galaxy.model.triggers galaxy.model.unittest_utils galaxy.model.view @@ -55,6 +56,22 @@ galaxy.model.database\_utils module :undoc-members: :show-inheritance: +galaxy.model.deferred module +---------------------------- + +.. automodule:: galaxy.model.deferred + :members: + :undoc-members: + :show-inheritance: + +galaxy.model.index\_filter\_util module +--------------------------------------- + +.. automodule:: galaxy.model.index_filter_util + :members: + :undoc-members: + :show-inheritance: + galaxy.model.item\_attrs module ------------------------------- diff --git a/doc/source/lib/galaxy.model.store.rst b/doc/source/lib/galaxy.model.store.rst index 84e3b2fcb3f..6a7baa50222 100644 --- a/doc/source/lib/galaxy.model.store.rst +++ b/doc/source/lib/galaxy.model.store.rst @@ -24,3 +24,11 @@ galaxy.model.store.discover module :members: :undoc-members: :show-inheritance: + +galaxy.model.store.load\_objects module +--------------------------------------- + +.. automodule:: galaxy.model.store.load_objects + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.model.tool_shed_install.migrate.rst b/doc/source/lib/galaxy.model.tool_shed_install.migrate.rst deleted file mode 100644 index 6fbecd637b3..00000000000 --- a/doc/source/lib/galaxy.model.tool_shed_install.migrate.rst +++ /dev/null @@ -1,26 +0,0 @@ -galaxy.model.tool\_shed\_install.migrate package -================================================ - -.. automodule:: galaxy.model.tool_shed_install.migrate - :members: - :undoc-members: - :show-inheritance: - -Subpackages ------------ - -.. toctree:: - :maxdepth: 4 - - galaxy.model.tool_shed_install.migrate.versions - -Submodules ----------- - -galaxy.model.tool\_shed\_install.migrate.check module ------------------------------------------------------ - -.. automodule:: galaxy.model.tool_shed_install.migrate.check - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/lib/galaxy.model.tool_shed_install.migrate.versions.rst b/doc/source/lib/galaxy.model.tool_shed_install.migrate.versions.rst deleted file mode 100644 index 9c39abe91a3..00000000000 --- a/doc/source/lib/galaxy.model.tool_shed_install.migrate.versions.rst +++ /dev/null @@ -1,146 +0,0 @@ -galaxy.model.tool\_shed\_install.migrate.versions package -========================================================= - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions - :members: - :undoc-members: - :show-inheritance: - -Submodules ----------- - -galaxy.model.tool\_shed\_install.migrate.versions.0001\_add\_tool\_shed\_repository\_table module -------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0001_add_tool_shed_repository_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0002\_add\_tool\_shed\_repository\_table\_columns module ----------------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0002_add_tool_shed_repository_table_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0003\_tool\_id\_guid\_map\_table module ------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0003_tool_id_guid_map_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0004\_add\_installed\_changeset\_revison\_column module ---------------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0004_add_installed_changeset_revison_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0005\_add\_tool\_shed\_repository\_table\_columns module ----------------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0005_add_tool_shed_repository_table_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0006\_add\_tool\_version\_tables module ------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0006_add_tool_version_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0007\_add\_migrate\_tools\_table module ------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0007_add_migrate_tools_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0008\_add\_ctx\_rev\_column module ------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0008_add_ctx_rev_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0009\_add\_tool\_dependency\_table module -------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0009_add_tool_dependency_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0010\_alter\_tool\_dependency\_table\_version\_column module --------------------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0010_alter_tool_dependency_table_version_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0011\_drop\_installed\_changeset\_revision\_column module ------------------------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0011_drop_installed_changeset_revision_column - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0012\_add\_tool\_dependency\_status\_columns module ------------------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0012_add_tool_dependency_status_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0013\_add\_tool\_shed\_repository\_status\_columns module ------------------------------------------------------------------------------------------------------------ - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0013_add_tool_shed_repository_status_columns - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0014\_add\_repository\_dependency\_tables module --------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0014_add_repository_dependency_tables - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0015\_update\_migrate\_tools\_table module --------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0015_update_migrate_tools_table - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0016\_update\_migrate\_tools\_table\_again module ---------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0016_update_migrate_tools_table_again - :members: - :undoc-members: - :show-inheritance: - -galaxy.model.tool\_shed\_install.migrate.versions.0017\_drop\_update\_available\_col\_add\_tool\_shed\_status\_col module -------------------------------------------------------------------------------------------------------------------------- - -.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0017_drop_update_available_col_add_tool_shed_status_col - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/lib/galaxy.model.tool_shed_install.rst b/doc/source/lib/galaxy.model.tool_shed_install.rst index 464c6ec817e..310da54edfa 100644 --- a/doc/source/lib/galaxy.model.tool_shed_install.rst +++ b/doc/source/lib/galaxy.model.tool_shed_install.rst @@ -6,14 +6,6 @@ galaxy.model.tool\_shed\_install package :undoc-members: :show-inheritance: -Subpackages ------------ - -.. toctree:: - :maxdepth: 4 - - galaxy.model.tool_shed_install.migrate - Submodules ---------- diff --git a/doc/source/lib/galaxy.model.triggers.rst b/doc/source/lib/galaxy.model.triggers.rst new file mode 100644 index 00000000000..8b533245807 --- /dev/null +++ b/doc/source/lib/galaxy.model.triggers.rst @@ -0,0 +1,34 @@ +galaxy.model.triggers package +============================= + +.. automodule:: galaxy.model.triggers + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +galaxy.model.triggers.history\_update\_time\_field module +--------------------------------------------------------- + +.. automodule:: galaxy.model.triggers.history_update_time_field + :members: + :undoc-members: + :show-inheritance: + +galaxy.model.triggers.update\_audit\_table module +------------------------------------------------- + +.. automodule:: galaxy.model.triggers.update_audit_table + :members: + :undoc-members: + :show-inheritance: + +galaxy.model.triggers.utils module +---------------------------------- + +.. automodule:: galaxy.model.triggers.utils + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.model.unittest_utils.rst b/doc/source/lib/galaxy.model.unittest_utils.rst index b6b8fc19959..b99b4ecfeaf 100644 --- a/doc/source/lib/galaxy.model.unittest_utils.rst +++ b/doc/source/lib/galaxy.model.unittest_utils.rst @@ -16,3 +16,11 @@ galaxy.model.unittest\_utils.data\_app module :members: :undoc-members: :show-inheritance: + +galaxy.model.unittest\_utils.store\_fixtures module +--------------------------------------------------- + +.. automodule:: galaxy.model.unittest_utils.store_fixtures + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.rst b/doc/source/lib/galaxy.rst index 5220a7fd12b..29c593de677 100644 --- a/doc/source/lib/galaxy.rst +++ b/doc/source/lib/galaxy.rst @@ -18,7 +18,6 @@ Subpackages galaxy.authnz galaxy.celery galaxy.config - galaxy.containers galaxy.datatypes galaxy.dependencies galaxy.exceptions diff --git a/doc/source/lib/galaxy.schema.rst b/doc/source/lib/galaxy.schema.rst index 0e245468d5d..3f1420b256b 100644 --- a/doc/source/lib/galaxy.schema.rst +++ b/doc/source/lib/galaxy.schema.rst @@ -9,6 +9,14 @@ galaxy.schema package Submodules ---------- +galaxy.schema.fetch\_data module +-------------------------------- + +.. automodule:: galaxy.schema.fetch_data + :members: + :undoc-members: + :show-inheritance: + galaxy.schema.fields module --------------------------- @@ -33,6 +41,14 @@ galaxy.schema.schema module :undoc-members: :show-inheritance: +galaxy.schema.tasks module +-------------------------- + +.. automodule:: galaxy.schema.tasks + :members: + :undoc-members: + :show-inheritance: + galaxy.schema.types module -------------------------- diff --git a/doc/source/lib/galaxy.tool_shed.galaxy_install.rst b/doc/source/lib/galaxy.tool_shed.galaxy_install.rst index bc765a12beb..63b17d56508 100644 --- a/doc/source/lib/galaxy.tool_shed.galaxy_install.rst +++ b/doc/source/lib/galaxy.tool_shed.galaxy_install.rst @@ -15,7 +15,6 @@ Subpackages galaxy.tool_shed.galaxy_install.datatypes galaxy.tool_shed.galaxy_install.metadata galaxy.tool_shed.galaxy_install.repository_dependencies - galaxy.tool_shed.galaxy_install.tool_dependencies galaxy.tool_shed.galaxy_install.tools Submodules diff --git a/doc/source/lib/galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.rst b/doc/source/lib/galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.rst deleted file mode 100644 index 78eb081a3cd..00000000000 --- a/doc/source/lib/galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.rst +++ /dev/null @@ -1,58 +0,0 @@ -galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe package -=================================================================== - -.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe - :members: - :undoc-members: - :show-inheritance: - -Submodules ----------- - -galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.asynchronous\_reader module ---------------------------------------------------------------------------------------- - -.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.asynchronous_reader - :members: - :undoc-members: - :show-inheritance: - -galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.env\_file\_builder module -------------------------------------------------------------------------------------- - -.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.env_file_builder - :members: - :undoc-members: - :show-inheritance: - -galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.install\_environment module ---------------------------------------------------------------------------------------- - -.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.install_environment - :members: - :undoc-members: - :show-inheritance: - -galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.recipe\_manager module ----------------------------------------------------------------------------------- - -.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.recipe_manager - :members: - :undoc-members: - :show-inheritance: - -galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.step\_handler module --------------------------------------------------------------------------------- - -.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.step_handler - :members: - :undoc-members: - :show-inheritance: - -galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.tag\_handler module -------------------------------------------------------------------------------- - -.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.tag_handler - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/lib/galaxy.tool_shed.galaxy_install.tool_dependencies.rst b/doc/source/lib/galaxy.tool_shed.galaxy_install.tool_dependencies.rst deleted file mode 100644 index f577255f4ea..00000000000 --- a/doc/source/lib/galaxy.tool_shed.galaxy_install.tool_dependencies.rst +++ /dev/null @@ -1,26 +0,0 @@ -galaxy.tool\_shed.galaxy\_install.tool\_dependencies package -============================================================ - -.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies - :members: - :undoc-members: - :show-inheritance: - -Subpackages ------------ - -.. toctree:: - :maxdepth: 4 - - galaxy.tool_shed.galaxy_install.tool_dependencies.recipe - -Submodules ----------- - -galaxy.tool\_shed.galaxy\_install.tool\_dependencies.env\_manager module ------------------------------------------------------------------------- - -.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.env_manager - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/lib/galaxy.tool_util.deps.rst b/doc/source/lib/galaxy.tool_util.deps.rst index 947dddb4f28..11b9620b43a 100644 --- a/doc/source/lib/galaxy.tool_util.deps.rst +++ b/doc/source/lib/galaxy.tool_util.deps.rst @@ -67,6 +67,14 @@ galaxy.tool\_util.deps.container\_classes module :undoc-members: :show-inheritance: +galaxy.tool\_util.deps.container\_volumes module +------------------------------------------------ + +.. automodule:: galaxy.tool_util.deps.container_volumes + :members: + :undoc-members: + :show-inheritance: + galaxy.tool\_util.deps.containers module ---------------------------------------- diff --git a/doc/source/lib/galaxy.tool_util.ontologies.rst b/doc/source/lib/galaxy.tool_util.ontologies.rst new file mode 100644 index 00000000000..a637bad8e76 --- /dev/null +++ b/doc/source/lib/galaxy.tool_util.ontologies.rst @@ -0,0 +1,18 @@ +galaxy.tool\_util.ontologies package +==================================== + +.. automodule:: galaxy.tool_util.ontologies + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +galaxy.tool\_util.ontologies.ontology\_data module +-------------------------------------------------- + +.. automodule:: galaxy.tool_util.ontologies.ontology_data + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.tool_util.rst b/doc/source/lib/galaxy.tool_util.rst index e8150cd1d9c..c0ae09c08dc 100644 --- a/doc/source/lib/galaxy.tool_util.rst +++ b/doc/source/lib/galaxy.tool_util.rst @@ -18,6 +18,7 @@ Subpackages galaxy.tool_util.deps galaxy.tool_util.linters galaxy.tool_util.locations + galaxy.tool_util.ontologies galaxy.tool_util.parser galaxy.tool_util.toolbox galaxy.tool_util.unittest_utils diff --git a/doc/source/lib/galaxy.tours.rst b/doc/source/lib/galaxy.tours.rst index 56232296de6..6acee82e903 100644 --- a/doc/source/lib/galaxy.tours.rst +++ b/doc/source/lib/galaxy.tours.rst @@ -5,3 +5,14 @@ galaxy.tours package :members: :undoc-members: :show-inheritance: + +Submodules +---------- + +galaxy.tours.validate module +---------------------------- + +.. automodule:: galaxy.tours.validate + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.util.pastescript.rst b/doc/source/lib/galaxy.util.pastescript.rst deleted file mode 100644 index 1eabd88f0c9..00000000000 --- a/doc/source/lib/galaxy.util.pastescript.rst +++ /dev/null @@ -1,26 +0,0 @@ -galaxy.util.pastescript package -=============================== - -.. automodule:: galaxy.util.pastescript - :members: - :undoc-members: - :show-inheritance: - -Submodules ----------- - -galaxy.util.pastescript.loadwsgi module ---------------------------------------- - -.. automodule:: galaxy.util.pastescript.loadwsgi - :members: - :undoc-members: - :show-inheritance: - -galaxy.util.pastescript.serve module ------------------------------------- - -.. automodule:: galaxy.util.pastescript.serve - :members: - :undoc-members: - :show-inheritance: diff --git a/doc/source/lib/galaxy.util.rst b/doc/source/lib/galaxy.util.rst index 8a7703a412d..c685d84751c 100644 --- a/doc/source/lib/galaxy.util.rst +++ b/doc/source/lib/galaxy.util.rst @@ -13,7 +13,6 @@ Subpackages :maxdepth: 4 galaxy.util.custom_logging - galaxy.util.pastescript galaxy.util.path galaxy.util.tool_shed @@ -388,14 +387,6 @@ galaxy.util.watcher module :undoc-members: :show-inheritance: -galaxy.util.web\_compat module ------------------------------- - -.. automodule:: galaxy.util.web_compat - :members: - :undoc-members: - :show-inheritance: - galaxy.util.xml\_macros module ------------------------------ diff --git a/doc/source/lib/galaxy.visualization.plugins.rst b/doc/source/lib/galaxy.visualization.plugins.rst index 6209b4d1398..2910013437e 100644 --- a/doc/source/lib/galaxy.visualization.plugins.rst +++ b/doc/source/lib/galaxy.visualization.plugins.rst @@ -17,14 +17,6 @@ galaxy.visualization.plugins.config\_parser module :undoc-members: :show-inheritance: -galaxy.visualization.plugins.interactive\_environments module -------------------------------------------------------------- - -.. automodule:: galaxy.visualization.plugins.interactive_environments - :members: - :undoc-members: - :show-inheritance: - galaxy.visualization.plugins.plugin module ------------------------------------------ diff --git a/doc/source/lib/galaxy.web.framework.middleware.rst b/doc/source/lib/galaxy.web.framework.middleware.rst index f86afbd143d..7eccd1d39b3 100644 --- a/doc/source/lib/galaxy.web.framework.middleware.rst +++ b/doc/source/lib/galaxy.web.framework.middleware.rst @@ -9,14 +9,6 @@ galaxy.web.framework.middleware package Submodules ---------- -galaxy.web.framework.middleware.batch module --------------------------------------------- - -.. automodule:: galaxy.web.framework.middleware.batch - :members: - :undoc-members: - :show-inheritance: - galaxy.web.framework.middleware.error module -------------------------------------------- diff --git a/doc/source/lib/galaxy.web.rst b/doc/source/lib/galaxy.web.rst index d32dba66462..0fa754d7f88 100644 --- a/doc/source/lib/galaxy.web.rst +++ b/doc/source/lib/galaxy.web.rst @@ -15,18 +15,11 @@ Subpackages galaxy.web.framework galaxy.web.legacy_framework galaxy.web.proxy + galaxy.web.short_term_storage Submodules ---------- -galaxy.web.buildapp module --------------------------- - -.. automodule:: galaxy.web.buildapp - :members: - :undoc-members: - :show-inheritance: - galaxy.web.form\_builder module ------------------------------- diff --git a/doc/source/lib/galaxy.web.short_term_storage.rst b/doc/source/lib/galaxy.web.short_term_storage.rst new file mode 100644 index 00000000000..576245fa1c4 --- /dev/null +++ b/doc/source/lib/galaxy.web.short_term_storage.rst @@ -0,0 +1,7 @@ +galaxy.web.short\_term\_storage package +======================================= + +.. automodule:: galaxy.web.short_term_storage + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.webapps.galaxy.api.rst b/doc/source/lib/galaxy.webapps.galaxy.api.rst index 54995bc1dd9..8682f4468c5 100644 --- a/doc/source/lib/galaxy.webapps.galaxy.api.rst +++ b/doc/source/lib/galaxy.webapps.galaxy.api.rst @@ -337,6 +337,14 @@ galaxy.webapps.galaxy.api.search module :undoc-members: :show-inheritance: +galaxy.webapps.galaxy.api.short\_term\_storage module +----------------------------------------------------- + +.. automodule:: galaxy.webapps.galaxy.api.short_term_storage + :members: + :undoc-members: + :show-inheritance: + galaxy.webapps.galaxy.api.tags module ------------------------------------- @@ -345,6 +353,14 @@ galaxy.webapps.galaxy.api.tags module :undoc-members: :show-inheritance: +galaxy.webapps.galaxy.api.tasks module +-------------------------------------- + +.. automodule:: galaxy.webapps.galaxy.api.tasks + :members: + :undoc-members: + :show-inheritance: + galaxy.webapps.galaxy.api.tool\_data module ------------------------------------------- diff --git a/doc/source/lib/galaxy.webapps.galaxy.controllers.rst b/doc/source/lib/galaxy.webapps.galaxy.controllers.rst index d60ce2330bd..f3fe0a6ca33 100644 --- a/doc/source/lib/galaxy.webapps.galaxy.controllers.rst +++ b/doc/source/lib/galaxy.webapps.galaxy.controllers.rst @@ -81,14 +81,6 @@ galaxy.webapps.galaxy.controllers.history module :undoc-members: :show-inheritance: -galaxy.webapps.galaxy.controllers.interactive\_environments module ------------------------------------------------------------------- - -.. automodule:: galaxy.webapps.galaxy.controllers.interactive_environments - :members: - :undoc-members: - :show-inheritance: - galaxy.webapps.galaxy.controllers.library module ------------------------------------------------ diff --git a/doc/source/lib/galaxy.webapps.galaxy.services.rst b/doc/source/lib/galaxy.webapps.galaxy.services.rst index 871a56dad7e..b784e52d468 100644 --- a/doc/source/lib/galaxy.webapps.galaxy.services.rst +++ b/doc/source/lib/galaxy.webapps.galaxy.services.rst @@ -9,6 +9,14 @@ galaxy.webapps.galaxy.services package Submodules ---------- +galaxy.webapps.galaxy.services.authenticate module +-------------------------------------------------- + +.. automodule:: galaxy.webapps.galaxy.services.authenticate + :members: + :undoc-members: + :show-inheritance: + galaxy.webapps.galaxy.services.base module ------------------------------------------ @@ -49,6 +57,22 @@ galaxy.webapps.galaxy.services.history\_contents module :undoc-members: :show-inheritance: +galaxy.webapps.galaxy.services.invocations module +------------------------------------------------- + +.. automodule:: galaxy.webapps.galaxy.services.invocations + :members: + :undoc-members: + :show-inheritance: + +galaxy.webapps.galaxy.services.jobs module +------------------------------------------ + +.. automodule:: galaxy.webapps.galaxy.services.jobs + :members: + :undoc-members: + :show-inheritance: + galaxy.webapps.galaxy.services.libraries module ----------------------------------------------- @@ -97,6 +121,22 @@ galaxy.webapps.galaxy.services.sharable module :undoc-members: :show-inheritance: +galaxy.webapps.galaxy.services.tools module +------------------------------------------- + +.. automodule:: galaxy.webapps.galaxy.services.tools + :members: + :undoc-members: + :show-inheritance: + +galaxy.webapps.galaxy.services.users module +------------------------------------------- + +.. automodule:: galaxy.webapps.galaxy.services.users + :members: + :undoc-members: + :show-inheritance: + galaxy.webapps.galaxy.services.visualizations module ---------------------------------------------------- @@ -104,3 +144,11 @@ galaxy.webapps.galaxy.services.visualizations module :members: :undoc-members: :show-inheritance: + +galaxy.webapps.galaxy.services.workflows module +----------------------------------------------- + +.. automodule:: galaxy.webapps.galaxy.services.workflows + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.webapps.openapi.rst b/doc/source/lib/galaxy.webapps.openapi.rst new file mode 100644 index 00000000000..7af8dd005b7 --- /dev/null +++ b/doc/source/lib/galaxy.webapps.openapi.rst @@ -0,0 +1,18 @@ +galaxy.webapps.openapi package +============================== + +.. automodule:: galaxy.webapps.openapi + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +galaxy.webapps.openapi.utils module +----------------------------------- + +.. automodule:: galaxy.webapps.openapi.utils + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy.webapps.rst b/doc/source/lib/galaxy.webapps.rst index e8f02a396c3..df681fd888a 100644 --- a/doc/source/lib/galaxy.webapps.rst +++ b/doc/source/lib/galaxy.webapps.rst @@ -14,6 +14,7 @@ Subpackages galaxy.webapps.base galaxy.webapps.galaxy + galaxy.webapps.openapi galaxy.webapps.reports Submodules diff --git a/doc/source/lib/galaxy_ext.container_monitor.rst b/doc/source/lib/galaxy_ext.container_monitor.rst new file mode 100644 index 00000000000..16c2596f199 --- /dev/null +++ b/doc/source/lib/galaxy_ext.container_monitor.rst @@ -0,0 +1,18 @@ +galaxy\_ext.container\_monitor package +====================================== + +.. automodule:: galaxy_ext.container_monitor + :members: + :undoc-members: + :show-inheritance: + +Submodules +---------- + +galaxy\_ext.container\_monitor.monitor module +--------------------------------------------- + +.. automodule:: galaxy_ext.container_monitor.monitor + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy_ext.rst b/doc/source/lib/galaxy_ext.rst index 22bf2e82487..fbc02806749 100644 --- a/doc/source/lib/galaxy_ext.rst +++ b/doc/source/lib/galaxy_ext.rst @@ -12,5 +12,6 @@ Subpackages .. toctree:: :maxdepth: 4 + galaxy_ext.container_monitor galaxy_ext.expressions galaxy_ext.metadata diff --git a/doc/source/lib/galaxy_test.api.rst b/doc/source/lib/galaxy_test.api.rst index 12049df9da5..0486930b82e 100644 --- a/doc/source/lib/galaxy_test.api.rst +++ b/doc/source/lib/galaxy_test.api.rst @@ -17,14 +17,6 @@ Subpackages Submodules ---------- -galaxy\_test.api.conftest module --------------------------------- - -.. automodule:: galaxy_test.api.conftest - :members: - :undoc-members: - :show-inheritance: - galaxy\_test.api.sharable module -------------------------------- @@ -33,14 +25,6 @@ galaxy\_test.api.sharable module :undoc-members: :show-inheritance: -galaxy\_test.api.test\_api\_batch module ----------------------------------------- - -.. automodule:: galaxy_test.api.test_api_batch - :members: - :undoc-members: - :show-inheritance: - galaxy\_test.api.test\_authenticate module ------------------------------------------ diff --git a/doc/source/lib/galaxy_test.performance.rst b/doc/source/lib/galaxy_test.performance.rst index 5930228cd0b..11d091b4191 100644 --- a/doc/source/lib/galaxy_test.performance.rst +++ b/doc/source/lib/galaxy_test.performance.rst @@ -9,14 +9,6 @@ galaxy\_test.performance package Submodules ---------- -galaxy\_test.performance.conftest module ----------------------------------------- - -.. automodule:: galaxy_test.performance.conftest - :members: - :undoc-members: - :show-inheritance: - galaxy\_test.performance.test\_workflow\_framework\_performance module ---------------------------------------------------------------------- diff --git a/doc/source/lib/galaxy_test.rst b/doc/source/lib/galaxy_test.rst index 00eb52df606..00fa7466c4c 100644 --- a/doc/source/lib/galaxy_test.rst +++ b/doc/source/lib/galaxy_test.rst @@ -17,3 +17,14 @@ Subpackages galaxy_test.driver galaxy_test.performance galaxy_test.selenium + +Submodules +---------- + +galaxy\_test.conftest module +---------------------------- + +.. automodule:: galaxy_test.conftest + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/lib/galaxy_test.selenium.rst b/doc/source/lib/galaxy_test.selenium.rst index fbfa28b243c..85de6c7db3b 100644 --- a/doc/source/lib/galaxy_test.selenium.rst +++ b/doc/source/lib/galaxy_test.selenium.rst @@ -97,6 +97,14 @@ galaxy\_test.selenium.test\_data\_source\_tools module :undoc-members: :show-inheritance: +galaxy\_test.selenium.test\_dataset\_metadata\_download module +-------------------------------------------------------------- + +.. automodule:: galaxy_test.selenium.test_dataset_metadata_download + :members: + :undoc-members: + :show-inheritance: + galaxy\_test.selenium.test\_histories\_list module -------------------------------------------------- @@ -185,6 +193,14 @@ galaxy\_test.selenium.test\_history\_structure module :undoc-members: :show-inheritance: +galaxy\_test.selenium.test\_invocation\_grid module +--------------------------------------------------- + +.. automodule:: galaxy_test.selenium.test_invocation_grid + :members: + :undoc-members: + :show-inheritance: + galaxy\_test.selenium.test\_jupyter module ------------------------------------------ diff --git a/doc/source/lib/tool_shed.test.functional.rst b/doc/source/lib/tool_shed.test.functional.rst index 557c9a025f0..3bbb84a4631 100644 --- a/doc/source/lib/tool_shed.test.functional.rst +++ b/doc/source/lib/tool_shed.test.functional.rst @@ -441,14 +441,6 @@ tool\_shed.test.functional.test\_1410\_update\_manager module :undoc-members: :show-inheritance: -tool\_shed.test.functional.test\_1420\_tool\_dependency\_environment\_inheritance module ----------------------------------------------------------------------------------------- - -.. automodule:: tool_shed.test.functional.test_1420_tool_dependency_environment_inheritance - :members: - :undoc-members: - :show-inheritance: - tool\_shed.test.functional.test\_1430\_repair\_installed\_repository module --------------------------------------------------------------------------- @@ -457,14 +449,6 @@ tool\_shed.test.functional.test\_1430\_repair\_installed\_repository module :undoc-members: :show-inheritance: -tool\_shed.test.functional.test\_1440\_missing\_env\_sh\_files module ---------------------------------------------------------------------- - -.. automodule:: tool_shed.test.functional.test_1440_missing_env_sh_files - :members: - :undoc-members: - :show-inheritance: - tool\_shed.test.functional.test\_1450\_installing\_datatypes\_sniffers module ----------------------------------------------------------------------------- From 4fcbe8026899e542850e44d2e665f7d23535fa8d Mon Sep 17 00:00:00 2001 From: Nicola Soranzo Date: Fri, 19 Aug 2022 18:33:20 +0100 Subject: [PATCH 380/553] Doc fixes --- doc/source/admin/config.rst | 2 +- doc/source/admin/config_logging.rst | 19 ++++++++----------- lib/galaxy/model/orm/util.py | 5 +++-- lib/galaxy/webapps/galaxy/api/common.py | 12 ++++++------ 4 files changed, 18 insertions(+), 20 deletions(-) diff --git a/doc/source/admin/config.rst b/doc/source/admin/config.rst index 0d95c1595a2..a2ffed2b8af 100644 --- a/doc/source/admin/config.rst +++ b/doc/source/admin/config.rst @@ -93,7 +93,7 @@ Configuration Basics ---------------------------- - Edit ``config/galaxy.yml`` (copy it from ``config/galaxy.yml.sample`` if it does not exist) to make configuration - changes. This is a `YAML configuration file`_ and should contain one or two sections, one named ``gravity`` for + changes. This is a YAML configuration file and should contain one or two sections, one named ``gravity`` for process management via `Gravity`_ (optional) and one named ``galaxy`` for Galaxy (required). - The `gravity` section contain several important options about how to diff --git a/doc/source/admin/config_logging.rst b/doc/source/admin/config_logging.rst index cd6e4460a9a..33348695a9a 100644 --- a/doc/source/admin/config_logging.rst +++ b/doc/source/admin/config_logging.rst @@ -9,22 +9,19 @@ There are two ways in which you can configure logging for Galaxy servers: 1. Basic/automatic configuration with control over log level and log destination (standard output or a named log file). 2. More complex configuration using the Python :mod:`logging` module's :func:`logging.config.dictConfig` or :func:`logging.config.fileConfig`. -By default, Galaxy logs all messages to standard output at the ``DEBUG`` logging level, unless the ``--daemon`` argument -is passed to ``run.sh``, in which case, output is logged to a location configured in `gravity`_. - -Gravity and related terminology are explained in detail in the :doc:`Scaling and Load Balancing ` documentation. - Basic Configuration ---------------------------- -Basic logging configuration can be used to modify the level of log messages and the file to which Galaxy logs. The level -is controlled by the ``log_level`` configuration option. +Basic logging configuration can be used to modify the level of log messages and the file to which Galaxy logs. -If not set, Galaxy logs all messages at the ``DEBUG`` level (versions prior to 18.01 defaulted to ``INFO`` if unset, but -the default config file shipped with ``log_level`` explicitly set to ``DEBUG`` for development purposes). +The logging level is controlled by the ``log_level`` configuration option. By default, Galaxy logs all messages at the +``DEBUG`` level. -Galaxy logs all messages to standard output by default if running in the foreground. If running in the background, the -log is written to a location configured in `gravity`_. +Galaxy logs all messages to standard output by default if running in the foreground. If running in the background (e.g. +by passing the ``--daemon`` argument to ``run.sh``), the log is written to a location configured in +`gravity `_. + +Gravity and related terminology are explained in detail in the :doc:`Scaling and Load Balancing ` documentation. **Setting the log level:** diff --git a/lib/galaxy/model/orm/util.py b/lib/galaxy/model/orm/util.py index f8b064a9ba9..795af1616fb 100644 --- a/lib/galaxy/model/orm/util.py +++ b/lib/galaxy/model/orm/util.py @@ -8,12 +8,13 @@ def add_object_to_object_session(object, object_with_session): https://docs.sqlalchemy.org/en/14/changelog/migration_14.html#cascade-backrefs-behavior-deprecated-for-removal-in-2-0 This function preserves SQLAlchemy's pre-2.0 logic and should be used when: + 1. foo and bar are model instances, that are associated (via SQLAlchemy's relationship), AND 2. bar is assigned to foo's bar relationship (e.g. foo.bar = bar), AND 3. bar is in a session and foo is not, AND 4. foo is implicitly added to bar's session upon assignment(2), as indicated - by a RemovedIn20Warning specifying that the '"foo" object is being merged into a Session - along the backref cascade path...' + by a RemovedIn20Warning specifying that the '"foo" object is being merged into a Session + along the backref cascade path...' """ if object_with_session: session = get_object_session(object_with_session) diff --git a/lib/galaxy/webapps/galaxy/api/common.py b/lib/galaxy/webapps/galaxy/api/common.py index 063d9a6d56d..b74daf0d70c 100644 --- a/lib/galaxy/webapps/galaxy/api/common.py +++ b/lib/galaxy/webapps/galaxy/api/common.py @@ -149,10 +149,10 @@ def query_parameter_as_list(query): """Used as FastAPI dependable for query parameters that need to behave as a list of values separated by comma or as multiple instances of the same parameter. - **Important**: the `query` annotation provided must define the `alias` exactly as the name of the actual parameter name. + .. important:: the ``query`` annotation provided must define the ``alias`` exactly as the name of the actual parameter name. + + Usage example:: - Usage example: - ```python ValueQueryParam = Query( default=None, alias="value", # Important! this is the parameter name that will be displayed in the API docs @@ -166,11 +166,11 @@ def query_parameter_as_list(query): values: Optional[List[str]] = Depends(query_parameter_as_list(ValueQueryParam)), ): ... - ``` This will render in the API docs as a single string query parameter but will make the following requests equivalent: - - `api/my_route?value=val1,val2,val3` - - `api/my_route?value=val1&value=val2&value=val3` + + - ``api/my_route?value=val1,val2,val3`` + - ``api/my_route?value=val1&value=val2&value=val3`` """ def parse_elements( From 47cdd76c3c6f272be7d4c8655a80dae8be5aebcf Mon Sep 17 00:00:00 2001 From: galaxybot Date: Sat, 20 Aug 2022 03:43:03 +0000 Subject: [PATCH 381/553] Update Python dependencies --- lib/galaxy/dependencies/dev-requirements.txt | 25 +++++++++---------- .../dependencies/pinned-lint-requirements.txt | 6 ++--- .../dependencies/pinned-requirements.txt | 18 ++++++------- 3 files changed, 24 insertions(+), 25 deletions(-) diff --git a/lib/galaxy/dependencies/dev-requirements.txt b/lib/galaxy/dependencies/dev-requirements.txt index 6f5be35b08b..c1318d40ec7 100644 --- a/lib/galaxy/dependencies/dev-requirements.txt +++ b/lib/galaxy/dependencies/dev-requirements.txt @@ -35,9 +35,9 @@ bx-python==0.8.13; python_version >= "3.7" cachecontrol==0.12.11; python_version >= "3.6" and python_version < "4" cached-property==1.5.2; python_version < "3.8" and python_version >= "3.7" celery==5.2.7; python_version >= "3.7" -certifi==2022.6.15; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") +certifi==2022.6.15; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") or python_full_version >= "3.5.0" and python_version < "4" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") cffi==1.15.1 -charset-normalizer==2.1.0; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") and python_full_version >= "3.6.0" +charset-normalizer==2.1.1; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") and python_full_version >= "3.6.0" cheetah3==3.2.6.post1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") circus==0.17.1 click-didyoumean==0.3.0; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and python_version >= "3.7" @@ -45,12 +45,12 @@ click-plugins==1.1.1; python_version >= "3.7" click-repl==0.2.0; python_version >= "3.7" click==8.1.3; python_version >= "3.7" and python_full_version >= "3.6.2" and python_full_version < "4.0.0" cloudauthz==0.6.0 -cloudbridge==3.0.0 +cloudbridge==3.1.0 colorama==0.4.5; sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.6.2" and platform_system == "Windows" and (python_version >= "2.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.5.0" and platform_system == "Windows") and (python_version >= "3.7" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.5.0") and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6") or sys_platform == "win32" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6") and python_full_version >= "3.5.0") coloredlogs==15.0.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0" -coverage==6.4.3; python_version >= "3.7" -cryptography==37.0.4; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") +coverage==6.4.4; python_version >= "3.7" +cryptography==37.0.4; python_version >= "3.6" cwltest==2.2.20210901154959; python_version >= "3.6" and python_version < "4" cwltool==3.1.20211107152837; python_version >= "3.6" and python_version < "4" cycler==0.11.0; python_version >= "3.7" @@ -65,9 +65,9 @@ docutils==0.16; (python_version >= "2.7" and python_full_version < "3.0.0") or ( ecdsa==0.18.0; python_version >= "2.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" edam-ontology==1.25.2 fastapi-utils==0.2.1; python_version >= "3.6" and python_version < "4.0" -fastapi==0.79.0; python_full_version >= "3.6.1" +fastapi==0.79.1; python_full_version >= "3.6.1" fluent-logger==0.10.0; python_version >= "3.5" -fonttools==4.34.4; python_version >= "3.7" +fonttools==4.36.0; python_version >= "3.7" frozenlist==1.3.1; python_version >= "3.7" fs==2.4.16 funcsigs==1.0.2 @@ -82,7 +82,7 @@ h5py==3.7.0; python_version >= "3.7" httpcore==0.15.0; python_version >= "3.7" httpx==0.23.0; python_version >= "3.7" humanfriendly==10.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" -idna==3.3; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4")) and python_full_version >= "3.6.2" +idna==3.3; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") and python_full_version >= "3.6.2" imagesize==1.4.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6" importlib-metadata==4.12.0; python_version == "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.6.0" and python_version < "3.8" and python_version >= "3.7") and python_full_version >= "3.6.2" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6") importlib-resources==5.9.0; python_version >= "3.7" @@ -92,7 +92,7 @@ isodate==0.6.1; python_version >= "3.7" and python_version < "4" isort==5.10.1; python_full_version >= "3.6.1" and python_version < "4.0" jinja2==3.1.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" jsonref==0.2; python_version >= "3.6" -jsonschema==4.9.1; python_version >= "3.7" +jsonschema==4.13.0; python_version >= "3.7" junit-xml==1.9; python_version >= "3.6" and python_version < "4" kiwisolver==1.4.4; python_version >= "3.7" kombu==5.2.4; python_version >= "3.7" @@ -122,7 +122,7 @@ oyaml==1.0 packaging==21.3; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" paramiko==2.11.0 parsley==1.3 -paste==3.5.1 +paste==3.5.2 pastedeploy==2.1.1 pathspec==0.9.0; python_full_version >= "3.6.2" and python_version >= "3.7" pbr==5.10.0; python_version >= "2.6" @@ -146,12 +146,11 @@ pydot==1.4.2; python_version >= "3.6" and python_full_version < "3.0.0" and pyth pyeventsystem==0.1.0 pyfaidx==0.7.1 pygithub==1.55; python_version >= "3.6" -pygments==2.12.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6") +pygments==2.13.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6") pyjwt==2.4.0; python_version >= "3.6" pykwalify==1.8.0 pylibmagic==0.2.1; python_version >= "3.7" pynacl==1.5.0; python_version >= "3.6" -pyopenssl==22.0.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") pyparsing==3.0.9; python_full_version >= "3.6.8" pyreadline3==3.4.1; sys_platform == "win32" and python_version >= "3.8" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0") pyreadline==2.1; sys_platform == "win32" and python_version < "3.8" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0") @@ -193,7 +192,7 @@ ruamel.yaml.clib==0.2.6 ruamel.yaml==0.17.17 schema-salad==8.3.20220801194920; python_version >= "3.6" scipy==1.7.3; python_version >= "3.7" and python_version < "3.11" -selenium==4.4.0; python_version >= "3.7" and python_version < "4.0" +selenium==4.4.3; python_version >= "3.7" and python_version < "4.0" setuptools-scm==5.0.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4" and python_version >= "3.7" shellescape==3.8.1; python_version >= "3.6" and python_version < "4" six==1.16.0; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" or python_full_version >= "3.3.0" and python_version >= "3.7" and python_version < "4" diff --git a/lib/galaxy/dependencies/pinned-lint-requirements.txt b/lib/galaxy/dependencies/pinned-lint-requirements.txt index e05372f1c56..edae394749a 100644 --- a/lib/galaxy/dependencies/pinned-lint-requirements.txt +++ b/lib/galaxy/dependencies/pinned-lint-requirements.txt @@ -12,7 +12,7 @@ typed-ast==1.5.4 types-bleach==5.0.3 types-boto==2.49.17 types-contextvars==2.4.7 -types-cryptography==3.3.21 +types-cryptography==3.3.22 types-dataclasses==0.6.6 types-docutils==0.19.0 types-Markdown==3.4.0 @@ -20,8 +20,8 @@ types-paramiko==2.11.3 types-pkg-resources==0.1.3 types-python-dateutil==2.8.19 types-PyYAML==6.0.11 -types-requests==2.28.8 +types-requests==2.28.9 types-six==1.16.18 -types-urllib3==1.26.22 +types-urllib3==1.26.23 typing_extensions==4.3.0 zipp==3.8.1 diff --git a/lib/galaxy/dependencies/pinned-requirements.txt b/lib/galaxy/dependencies/pinned-requirements.txt index 725cb7a90b7..a6fd60e43c7 100644 --- a/lib/galaxy/dependencies/pinned-requirements.txt +++ b/lib/galaxy/dependencies/pinned-requirements.txt @@ -30,9 +30,9 @@ bx-python==0.8.13; python_version >= "3.7" cachecontrol==0.12.11; python_version >= "3.6" and python_version < "4" cached-property==1.5.2; python_version < "3.8" and python_version >= "3.7" celery==5.2.7; python_version >= "3.7" -certifi==2022.6.15; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") +certifi==2022.6.15; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") or python_full_version >= "3.5.0" and python_version < "4" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") cffi==1.15.1; implementation_name == "pypy" and python_version >= "3.6" -charset-normalizer==2.1.0; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") and python_full_version >= "3.6.0" +charset-normalizer==2.1.1; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") and python_full_version >= "3.6.0" cheetah3==3.2.6.post1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0") circus==0.17.1 click-didyoumean==0.3.0; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and python_version >= "3.7" @@ -40,11 +40,11 @@ click-plugins==1.1.1; python_version >= "3.7" click-repl==0.2.0; python_version >= "3.7" click==8.1.3; python_full_version >= "3.6.2" and python_full_version < "4.0.0" and python_version >= "3.7" cloudauthz==0.6.0 -cloudbridge==3.0.0 +cloudbridge==3.1.0 colorama==0.4.5; python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.5.0" coloredlogs==15.0.1; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0" -cryptography==37.0.4; python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") +cryptography==37.0.4; python_version >= "3.6" cwltool==3.1.20211107152837; python_version >= "3.6" and python_version < "4" decorator==5.1.1; python_version >= "3.6" and python_version < "4" defusedxml==0.7.1; python_version >= "3.0" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.0" @@ -55,7 +55,7 @@ docutils==0.16; (python_version >= "2.7" and python_full_version < "3.0.0") or ( ecdsa==0.18.0; python_version >= "2.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" edam-ontology==1.25.2 fastapi-utils==0.2.1; python_version >= "3.6" and python_version < "4.0" -fastapi==0.79.0; python_full_version >= "3.6.1" +fastapi==0.79.1; python_full_version >= "3.6.1" frozenlist==1.3.1; python_version >= "3.7" fs==2.4.16 funcsigs==1.0.2 @@ -68,13 +68,13 @@ gxformat2==0.15.0 h11==0.12.0; python_version >= "3.7" h5py==3.7.0; python_version >= "3.7" humanfriendly==10.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.5.0" -idna==3.3; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.7" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4")) and python_full_version >= "3.6.2" +idna==3.3; python_version >= "3.7" and python_version < "4" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version < "4") and python_full_version >= "3.6.2" importlib-metadata==4.12.0; python_version == "3.7" and (python_version >= "3.7" and python_full_version < "3.0.0" and python_version < "3.8" or python_full_version >= "3.6.0" and python_version < "3.8" and python_version >= "3.7") importlib-resources==5.9.0; python_version >= "3.7" isa-rwval==0.10.10 isodate==0.6.1; python_version >= "3.7" and python_version < "4" jsonref==0.2; python_version >= "3.6" -jsonschema==4.9.1; python_version >= "3.7" +jsonschema==4.13.0; python_version >= "3.7" kombu==5.2.4; python_version >= "3.7" lagom==1.7.1; python_version >= "3.6" and python_version < "4.0" lockfile==0.12.2; python_version >= "3.6" and python_version < "4" @@ -97,7 +97,7 @@ oyaml==1.0 packaging==21.3; python_version >= "3.6" paramiko==2.11.0 parsley==1.3 -paste==3.5.1 +paste==3.5.2 pastedeploy==2.1.1 pbr==5.10.0; python_version >= "2.6" pebble==4.6.3 @@ -114,7 +114,7 @@ pydantic==1.9.2; python_full_version >= "3.6.1" pydot==1.4.2; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" or python_version >= "3.6" and python_version < "4" and python_full_version >= "3.4.0" pyeventsystem==0.1.0 pyfaidx==0.7.1 -pygments==2.12.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.6" +pygments==2.13.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and python_version >= "3.6" pyjwt==2.4.0; python_version >= "3.6" pykwalify==1.8.0 pylibmagic==0.2.1; python_version >= "3.7" From 0d40797e03cffbbbf853cde0025ef37c5601e30e Mon Sep 17 00:00:00 2001 From: Marius van den Beek Date: Mon, 22 Aug 2022 16:34:03 +0200 Subject: [PATCH 382/553] Add Alembic to admin announcement Co-authored-by: John Davis --- doc/source/releases/22.05_announce.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/source/releases/22.05_announce.rst b/doc/source/releases/22.05_announce.rst index 5de5a386529..df1c663910e 100644 --- a/doc/source/releases/22.05_announce.rst +++ b/doc/source/releases/22.05_announce.rst @@ -24,6 +24,10 @@ Highlights To enable this set `enable_celery_tasks` to `true` and ensure that at least one celery worker is started. If Celery tasks are enabled it is also possible to change the datatype for many history items in batch. +**Galaxy has a new database migrations system based on Alembic.** + The new migrations system is built on top of Alembic. The SQLAlchemy Migrate tool been retired. + For usage, see `Galaxy's migrations documentation `__. + For an architectural overview, see `pull request #13108 `__. Also check out the `22.05 user release notes <22.05_announce_user.html>`__ Get Galaxy From b5ae0ac5d88d459db0b590534ab213e6b4170dbb Mon Sep 17 00:00:00 2001 From: Marius van den Beek Date: Mon, 22 Aug 2022 17:02:39 +0200 Subject: [PATCH 383/553] Apply Magda's typo and spelling fixes --- doc/source/releases/22.05_announce.rst | 8 ++++---- doc/source/releases/22.05_announce_user.rst | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/source/releases/22.05_announce.rst b/doc/source/releases/22.05_announce.rst index df1c663910e..d186cb1cc19 100644 --- a/doc/source/releases/22.05_announce.rst +++ b/doc/source/releases/22.05_announce.rst @@ -17,15 +17,15 @@ Highlights **Deferred dataset resolution** Optional deferred dataset resolution enables users to select that datasets fetched from URLs or remote file sources should not be fetched into Galaxy's objectstore. - Instead these datasets are only fetched when jobs using these datasets are run. + Deferred datasets are only fetched when jobs using these datasets are run. **Enhanced Celery tasks and features** Galaxy can optionally delegate the data upload job to Celery, and Galaxy can run the metadata script in Celery. This results in much shorter runtime for small jobs. - To enable this set `enable_celery_tasks` to `true` and ensure that at least one celery worker is started. - If Celery tasks are enabled it is also possible to change the datatype for many history items in batch. + To enable this, set `enable_celery_tasks` to `true` and ensure that at least one celery worker is started. + If Celery tasks are enabled, it is also possible to change the datatype for many history items in batch. **Galaxy has a new database migrations system based on Alembic.** - The new migrations system is built on top of Alembic. The SQLAlchemy Migrate tool been retired. + The new migrations system is built on top of Alembic. The SQLAlchemy Migrate tool has been retired. For usage, see `Galaxy's migrations documentation `__. For an architectural overview, see `pull request #13108 `__. Also check out the `22.05 user release notes <22.05_announce_user.html>`__ diff --git a/doc/source/releases/22.05_announce_user.rst b/doc/source/releases/22.05_announce_user.rst index 4ed92080092..9f874d7c3d2 100644 --- a/doc/source/releases/22.05_announce_user.rst +++ b/doc/source/releases/22.05_announce_user.rst @@ -23,7 +23,7 @@ Check it out now! **Storage Dashboard** (beta) -Have you ever been over your quota? 250 GB sure goes fast! Now with the new Storage Dashboard you can get a quick overview of ways to help clean up deleted datasets and recover some of that quotum allocation. This is a beta version of this interface, let us know if you have any issues. In future versions, it will be expanded to help you understand how your allocation is being used, and which histories and datasets should be cleaned up first. +Have you ever been over your quota? 250 GB sure goes fast! Now with the new Storage Dashboard you can get a quick overview of ways to help clean up deleted datasets and recover some of that quota allocation. This is a beta version of this interface, let us know if you have any issues. In future versions, it will be expanded to help you understand how your allocation is being used, and which histories and datasets should be cleaned up first. .. raw:: html @@ -31,21 +31,21 @@ Have you ever been over your quota? 250 GB sure goes fast! Now with the new Stor **Bulk History Operations** -The new history allows for improved bulk operations, selecting dozens or hundreds of datasets to retag or change their dbkey automatically, a process that used to require using collections or doing them one by one. +The new history allows for improved bulk operations, selecting dozens or hundreds of datasets to retag or change database key automatically, a process that used to require using collections or doing them one by one. .. raw:: html - + **Deferred dataset resolution enables running workflows and tools without importing data into Galaxy first** It is now possible to defer dataset resolution for datasets imported via URLs and the "Choose remote files" dialog. This means that the deferred dataset will only be downloaded as it is needed during job execution. Deferred datasets will not -count towards you storage quota, as the data is not stored by Galaxy. To enable deferred dataset resolution click on "settings" +count towards your storage quota, as the data is not stored by Galaxy. To enable deferred dataset resolution click on "Settings" in the upload dialog. .. figure:: images/22.05-deferred-data-upload.png - :alt: Screenshot of the upload modal. The settings menu is expanded and shows the "Deferred dataset resolution" checkbox. + :alt: Screenshot of the upload modal. The Settings menu is expanded and shows the "Deferred dataset resolution" checkbox. **Workflow Improvements** @@ -61,7 +61,7 @@ This is especially useful if you run a single workflow across multiple datasets, Additional workflow improvements have been made, e.g. numbering of steps in a workflow. Improvements have been made to the internal representation of the workflow that should make the saved `.ga` and `.gxwf.yml` files easier to compare across changes. -Workflows can also now be zoomed via scrolling, this interface should be more familiar for anyone who has used Google Maps: +Workflows can also now be zoomed in and out via scrolling, this interface should be more familiar for anyone who has used Google Maps: .. raw:: html From 3d24ef2d91f0567099cefe52baee89c82db17d66 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Mon, 22 Aug 2022 17:37:48 +0200 Subject: [PATCH 384/553] Add last PR --- doc/source/releases/22.05.rst | 3 +++ doc/source/releases/22.05_prs.rst | 1 + 2 files changed, 4 insertions(+) diff --git a/doc/source/releases/22.05.rst b/doc/source/releases/22.05.rst index c2f9d09f9ca..7c7a11ed9b5 100644 --- a/doc/source/releases/22.05.rst +++ b/doc/source/releases/22.05.rst @@ -968,6 +968,9 @@ Fixes `Pull Request 14429`_ .. bug +* Doc fixes + (thanks to `@nsoranzo `__). + `Pull Request 14488`_ * fix `drill_down` parameters (thanks to `@bernt-matthias `__). `Pull Request 12232`_ diff --git a/doc/source/releases/22.05_prs.rst b/doc/source/releases/22.05_prs.rst index db2d6ec3da2..77b5af4c985 100644 --- a/doc/source/releases/22.05_prs.rst +++ b/doc/source/releases/22.05_prs.rst @@ -1,5 +1,6 @@ .. github_links +.. _Pull Request 14488: https://github.com/galaxyproject/galaxy/pull/14488 .. _Pull Request 11162: https://github.com/galaxyproject/galaxy/pull/11162 .. _Pull Request 11748: https://github.com/galaxyproject/galaxy/pull/11748 .. _Pull Request 12232: https://github.com/galaxyproject/galaxy/pull/12232 From aa577230f881b535a66b4630d52c2aa24b402b7e Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Mon, 22 Aug 2022 17:47:37 +0200 Subject: [PATCH 385/553] Drop placeholders --- doc/source/releases/22.05.rst | 42 ----------------------------------- 1 file changed, 42 deletions(-) diff --git a/doc/source/releases/22.05.rst b/doc/source/releases/22.05.rst index 7c7a11ed9b5..2869bc72d80 100644 --- a/doc/source/releases/22.05.rst +++ b/doc/source/releases/22.05.rst @@ -9,11 +9,6 @@ Enhancements ------------------------------- -.. major_feature - - -.. feature - * Add new molecule datatypes (thanks to `@muon-spectroscopy-computational-project `__). `Pull Request 12375`_ @@ -56,13 +51,9 @@ Enhancements * Update color scheme collection progress bar (thanks to `@assuntad23 `__). `Pull Request 14031`_ -.. enhancement_tag_viz - * Add gulp target for force-rebuild of viz plugins (thanks to `@dannon `__). `Pull Request 13370`_ -.. enhancement_tag_datatypes - * Add mzqc datatype (thanks to `@bernt-matthias `__). `Pull Request 13564`_ @@ -87,13 +78,9 @@ Enhancements * Add scool datatype (thanks to `@bernt-matthias `__). `Pull Request 14480`_ -.. enhancement_tag_tools - * Add JupyTool, user-configurable interactive Jupyter-based tool (thanks to `@blankenberg `__). `Pull Request 13606`_ -.. enhancement_tag_workflows - * Simplified workflow form runtime options (thanks to `@jmchilton `__). `Pull Request 13613`_ @@ -136,8 +123,6 @@ Enhancements * Add workflow deletion selenium tests (thanks to `@jmchilton `__). `Pull Request 13994`_ -.. enhancement_tag_ui - * Update Client dependency, swap to node 16 (thanks to `@dannon `__). `Pull Request 13282`_ @@ -162,8 +147,6 @@ Enhancements * Add client build timestamp to application config (thanks to `@dannon `__). `Pull Request 13874`_ -.. enhancement_tag_jobs - * Attach dataset source in model store imports (thanks to `@mvdbeek `__). `Pull Request 13560`_ @@ -182,8 +165,6 @@ Enhancements * Jobs Index and Grid Improvements (thanks to `@jmchilton `__). `Pull Request 13893`_ -.. enhancement_tag_admin - * make maximum number of retries for username validation configurable (thanks to `@bernt-matthias `__). `Pull Request 13177`_ @@ -208,8 +189,6 @@ Enhancements * Add log rotation options and update logging documentation (thanks to `@natefoo `__). `Pull Request 14457`_ -.. enhancement - * Allow site-specific history default, leave fallback option to legacy (thanks to `@dannon `__). `Pull Request 11748`_ @@ -639,8 +618,6 @@ Enhancements * Fix Jobs API index to accept query parameters as lists (thanks to `@davelopez `__). `Pull Request 14482`_ -.. small_enhancement - * Python code formatting standard, automatic (thanks to `@dannon `__). `Pull Request 11162`_ @@ -760,11 +737,6 @@ Enhancements Fixes ------------------------------- -.. major_bug - - -.. bug_tag_viz - * Properly initialize chart settings for new visualizations (thanks to `@guerler `__). `Pull Request 13561`_ @@ -780,8 +752,6 @@ Fixes * Visualization fix for MSA (thanks to `@dannon `__). `Pull Request 14263`_ -.. bug_tag_datatypes - * Tighten sniffers (thanks to `@mvdbeek `__). `Pull Request 13959`_ @@ -809,8 +779,6 @@ Fixes * Fix xml deprecation warning in ``parse_requirements_from_xml`` (thanks to `@bernt-matthias `__). `Pull Request 14483`_ -.. bug_tag_tools - * Fix David URL (thanks to `@hexylena `__). `Pull Request 13666`_ @@ -823,8 +791,6 @@ Fixes * Grep1 tool: fix keep_header option (thanks to `@jancrichter `__). `Pull Request 14475`_ -.. bug_tag_workflows - * Fix workflow index API boolean parameters (thanks to `@jmchilton `__). `Pull Request 13698`_ @@ -840,8 +806,6 @@ Fixes * Fix effective datatype in workflow editor node terminals (thanks to `@mvdbeek `__). `Pull Request 14473`_ -.. bug_tag_ui - * Bump karma from 6.3.13 to 6.3.14 in /client (thanks to `@galaxyproject `__). `Pull Request 13357`_ @@ -887,8 +851,6 @@ Fixes * Update yarn.lock file (thanks to `@nsoranzo `__). `Pull Request 14337`_ -.. bug_tag_jobs - * Fix for uploading metadata to remote object store (thanks to `@mvdbeek `__). `Pull Request 13348`_ @@ -931,8 +893,6 @@ Fixes * Specify time as datetime object in job queries (thanks to `@simonbray `__). `Pull Request 14281`_ -.. bug_tag_admin - * Drop uWSGI from Galaxy Reports documentation (thanks to `@jdavcs `__). `Pull Request 13406`_ @@ -966,8 +926,6 @@ Fixes * Pass ``--cleanenv`` by default to singularity command (thanks to `@mvdbeek `__). `Pull Request 14429`_ -.. bug - * Doc fixes (thanks to `@nsoranzo `__). `Pull Request 14488`_ From a8ff8c62b1dbb8186c7965bdd2c09e4b092103d3 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Mon, 22 Aug 2022 21:03:02 +0200 Subject: [PATCH 386/553] Add missing image --- .../images/22.05-deferred-data-upload.png | Bin 0 -> 258510 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/source/releases/images/22.05-deferred-data-upload.png diff --git a/doc/source/releases/images/22.05-deferred-data-upload.png b/doc/source/releases/images/22.05-deferred-data-upload.png new file mode 100644 index 0000000000000000000000000000000000000000..372ca567ae509e8ca7c810abf970336224d56973 GIT binary patch literal 258510 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 >fgaW!UIfCnF77fhAhL>{%&fX$^AhLx#~)q9 zA6a!aAC%PLMtm+m0(TD&W9S7i0(j(OGR%)zpY1NUr|=alM&TR_>8pjWXqy}*U6`Y* zS{sZ%?%w#2zA0s_}aqR<$yfZnv6SkRm_IdoP+* z+x8tFh^2;k>LHg)TKM$ioILf?CKjV6+!3+HjchQzue1HRT$_)A5>$P0n#N$Md3qE5 zlmZ7l?p}SYWrcV1O~aNIK=u&>Uo7ID{ibu7hY(ZQ98&7tOmbL$ATspM<*A?k4}Zj5 zchc)Ajt|T)4~GYwTJ}5_yzQvwb~c)`W@tXaHB&mWn959Az9d-ns|IZgt+9eEPQWI+ zTm{tjC~nuHivS#Cnu=$==zGgY)Nq^ZUn=?E-$uzn;FOvgm9$;9P%paHgvPzm8S`%Z zsa)z*%;a$vq#VVRkp+X?#GpF5-8W*7s;Umlp!zbU!Q%vL?v^7L^ zqH~?bLJqUNTU|gbG{x(*U6-Y)onEV3zkm3maAo}PvG|4oOYih~MQ|4X%rU=g-ZEmJ z{E4qHbg#O)auG^V>#JUfIi) zN*YCO*(Yquobd@4)i&-rzNW6!KVQ88dvKy;ANO*tX~0Pg8!1#7l@qos5HKncMplv3 zvecyER_&(BWTZ3@k{n_#Lx}@-g z(%C|v!5f0zbz)4X#jppMHq+_ahXeiURc>`8?^Y=sENAWh{+H7|3b9hhrTcQ=(;X7F3g8K2FSmvlds z5W8`u#SK;Opppz<37FnonC8IHHJCII^~`xNts#|}%r9PNgr~6szHDUmtJP#wI1J}Pbc<56;(W*W(I7&=r0?yU)`h+Iiz@l^WOAdtmoLtbWwKag z8hTgKn2%m2rspMeD(MN>Z6yzMxH$NIX}t=dBPOW@CN39oo%B~++qqLeYJf&8X&;Ab zZl5Rok^BAx|4s=amCv>EZ6g){zLrL%=Klykh*R~Q!jyej90%XM4#W3WM+-5C`UaC4 z(vlgYG~ek~pD39-`9?{kAo2)nEIlow7!0mcAuGSdlhKq*wk96RTY#Bg;1;Z{Mlm@y z_4>S9IO6nbzf~8$6~A{-u7`>avJ?0&Q=MLlvpn=%xq$NCY$ zbUio4Y!)ma?i@zW9h*a_vgq}4anEft^4exA!KY)7n0Cw^4ij(z#wCIvh@w-_yl5jO zQ(Uw0d3kokimTlJyzwk zLD;E&;S`oycyGK`IBjZi40g%lMAXwq%CGf&KA|OW-GX`fKpwb1lX=f^HrC>Wb5D#r z>bu9YT`MS)=<+t3HEM(@lQXSiAb_9?xhw$yf+!e}AUH1dK_%%Q0NS6*r>B<=mFYp} zKBt?xVlNF7rZuG^Cx0KnwJT=IGWoLcYx0Pr;-=#$#99dHc(c&#BRzs#1R3gJ$5OWE z4hLqG7T7W7RxWIAPN7{~$1wCYCMHf3TU?Go8oLH*%Bxv0VLIoa&*GtnI^D=a z*Q5*r7cW+;0`#+8O8$k3d%v-qBu=o=KlhiYmCN2O6B}w5TKA?3ORnIn`<-EwRqc6} zYFd7^G2MkQ+H#ApT5ApSY&H9F$+SvK{ic(Alegnai7k_DT*19;?0A9}Q%p=9KL>N# z5*(serP%4WuT9qQ+}`>Mia-E-m|$|MOae@1445^US)?w05{rtcYea~EV!xT*=F{Z| zpZKCe>sE_I4%z@lu|iFOHeGFZUmL$$96%O$d2lP8VhhJ8jy;j73fRFWM2mIGRH1Bl zslZUg5ReVFl`jfucZG-x!eSmlOhe3*E*@wKBCkWtXci$q!JnsuYUwQe>DOORE+o@br>pRxdJhS!TQ|h!qJmh@RD_drj$)ogm z_arUH^5ZfF%CmPxDW00__i0CMBwfuZLYQ<6P;BZgCm_Dzw=7(`M^X7$D1@PN;aoypHXNxXO~2)av`8+M}ZHv6P>y%uel-|yEo_Y4a7{$&!qq>!+`FF0<;nD zaMxmtu25wmw-N%IR#6F?5aV>S`lf%^cqQM|&^mydM1J8^iwYr1#n( z_0~)~$=90-RP=dv1W2hrK;Qr*m&HAu@2f2f>WqSP!DZ(5CUfNuQ9Z=g4!Z(rWJ_+( zCay1@Y_cdvE)emu6sQV~vHz@UI7;QV8*b|dd=Y&kFSR+N(fZB9ES)atoFW`*UOT

77;19eeY$W=O{Y+ zxd?8uGe;XnY}6%OGaAcuc*%J^0)u*zR;-kAH}mtaLry~}(K55}_~g>DTLpRWwcV%! zy^4v6c_ayl&uDoi^1qSZOd4UqU*rR>C_fD++tT7Ke)3jE8Jb`-G$Yb zNMpgiCJ7+1eNRv$dQcp&E^(1sJ6t^R`-(T{$~;s9lS~982h5LW5bWUNn_6Y=D6ea? z3Kvf7UYgfPVsW4y85S=7`6zwx3WC9E470>Ge$sH-Zoe_!V%dD8jgIfAr8O;oodth; z7=mrQSjsc^$m{MTl)BeS$7*4`Zv&vdzTc<%vJ3yk#f9sF?Jp5%LfLUMo%U3bwB+vq z8Hh7m61!J59@l|ix3F-9(tA6oe#q+e?Za=?xv0$2g$33%x*7m+`<&>*Js4aAC40yX zWySZFcfJ-4N!o_>v`=w&N+Idxx02GpC>Xtq&|2}JxB326DgO$vvzoY%mv(dIm$ssIuFCc zomJB%0J1G8BQxF(U>?)jjFh|RQ*b<#!Ra$=Z?M)m$uaKoC}Yy8^$dgiJbgYq@LaNM zDORy*+n~PTsNs2TR7(4VcxNumY$nK&2Wzbg$9cP^ezV=@(D`7SbQl1~i~SYFm{9Wt zvkIOouZ4b;yLaGQy-ZJ7Ox&)^+}rg%T#wE#lDDJG_d+;P#s_@QVB% zTTh56rKX<4t0Vp1`+Y;23?Vq*Qs^45#ia;tc=;b#2W;(MA_+u`;+K51B~D|t!SaF# z0mU={Kwf!|>-kMoRTbnma+=f*#JpM-G9goZ$^s4#m8UCu_*j>Is)GdSmTih5VY7WM zx9`7I;-_hoD)lLM%mXSnapA$*{KTTq?yTFhYx=Hpu`2_zcU!|Ls$Nh|^ac*#kr+6P z@c#w`%Pd5BtQ|33+7Ap#5b-jUO!PMlD9G*$h7QOTiHBAe!f3mYRa%-|8RvWf{gt%( zgyrzqRh(JVi++Hup|NhQR=;t7&i=hQsgA15t;GAbZ{16ZOm5x?Bt047Cgrj%<-PH4 z;jIY7BdJA@5HPBkXKFOeox4k4SPXkQZphg5YqO&mN_1v>)0@wAEx@$|GeXP2E^{4A zm1zW6_QdMY!snYBfgdls^0&IIj_Hu`UA-MP9WX5>-`1Myn3te}oM0J`)oceG=6#cc zvD!2k;BZ)MhpHc^+MW0bNNa9af7EzA`%{I%Pc%N$kd(@#BjyUfG+*t`0(*x>LD=K9 z^DW!8<45RVuAK1L4A6`JcIMur^=t(CeMopDdo(UBmP74ERN4IH)sMt`& zXlhP7;l+R*T7=R*i&ZAlR%bq(bKTu zd+X@Vs+fK6T8RM$={ggsKEU|sK;(yklOD$O)wB>Xb>e#7{_NhQ>pM7*2&iR2$|zM4 z$xuT=*vyU2hiB@of5{T;6QTSdL5L7W|xMF=E&TOQsk8I;PNX z)@KmF<`4`HYb0+*6y$MVPr@(o=pDE0S}4!cbSn$qG9d2#sO z!pn{ED%I%SB3KxdvQ*E%Wnc7?ms{@*&93$2hPUM7)iwhDpJw%;(i}qQ_GwuzPAeN0DNLG`t6~9 zm@E2C=a+9s*g5i!ls`Znpo0krE0^hVh;OY}L%Ou(q9#9}2jGtZo9Gn${a3#zRI?J5 z<=m}H_#}iCg3*|jHz{0f@(@biMTt(Xva*{AmOMwM;^B!a-QuHt5<{sH`u9f?bJbRD^iV?Opv%@$Qeg>NSjW7vv<#Vr~oqDcc56B3!{yGzzWIYcE zJ0(B=z0UOgaT%H}<<-9Yo~a-DZh`j-&yw*wMypwx7|=X|Lde9Q2QLuOf@c?U5T%8Z zTjXQ9*s>4~J_!qn8UkPmVZ9g}j3)Hto}Vo}AoK zYq0zdm;g2}k~!@?EA;nR2^j^|v?z^glsg8;H0iD@WrJ@*kLZNu#rhn@WR@ESX=_E6 z#rZu>U1?!l@b9?z{OhELdD1AiXMyLg#^)P zaN~(%>~UQl%>)svTXA`%^c6=HU*i1lCpWDta$1sj%p%?A#&))aGGUyHY0E_+iOQ|| zt=c}Ipe~Fw%ITO#G=&l$qX|c_U#*qN*g@qoQYz|~``Va$BBxC_t8U|f@ZpG7to-Z> zlV3gF3DAR-8hsT^6tGGs-DuU9=^_(_jUMmaWrDfXj5-cLD`R@U_i!lV@y)|+k4aDi zzeo{q8fawTGVOA$H4$|_pEjQ)LPH>IpT>k+=~yzE`@|;aB_{;iowq7F2VgsPAPBm; z*UKLGv|2ssPhtp=2{K*-LL3e}5%srvn%l1sS#ekwHrwili(5&r%N2QhB7O#nj7Kzv ziaO1i9dh%Hz1DV|c_)db@n|}jrAW3fmt9LDgwp4ioHze&rrys(KjSYyC=u!rA&DAv zaujkoFWB^|sagx?XNF2BSGWME87(3&JyLEFy%_4-W%*7T_5R>+-KT&lQO&R)&ZFGn zp(GQ2J2p)@CB~|_i?PPG>)QSCXaLobvJy@Ua~)h=aB?2<_*_&&|H8P#CFCv4hy?HE z?b4h~L9c^Q;`?p1!-c$TpS51xY4zr3V<@od_qO~olXR8zI))CmH*e@&lC};IChMwL z8bsxJsrz$JdfGRp#oAP@YB?L?-EBLF;WM;7cjYGf(OSm`%k1bwWE-c_GbLQ2Nyp88 z3j{L{-q(c~WgsV$03s!)(j(p21T&$ro`C5$ya#sEOv@wAF$`WVJ3^5|bWD@EEve1y zJ4c`hyQy*z^cNPB?v&5Ph@qParzp{*|A-QK+|6M>FkILvy)6jm*G`1T#268XQej`L ze{xYeYR8y6Ts+~zcifhj`|8|4q$)}Rq?b(*iHm|D2_#en<=(Z~IpaT~9aMy?Sl*s@ zU6%Su1zgwkO3|k6@WPi??UBaIw0Jax0YK=*|AbNcFW_kwJ3hXs_ZRu;V@l3v2om1N zuOj*rf&%@ljTLBDjd60^&r`F4mG^Nf1^-;yl^=)e7;>2^NSXtTwk<6$n%Vx$(NzCB z?{?Q^f842v-vpO1P;PiHK3|GT59nwE6rx-R#itwz-F)`qcTGs{xtXaO0tMXvNJkr` zIRzly*GU!0NztB-X35}o%Foti5aI9^XlsQpf_D>N0PNv2GA#uN}cC$2qRi{pMW6-$Db-{7?iuP5dRu0aLM>sQkaF{hdxa;{o{N zs*W@ZIA_JiHKM6KF~6adE9cI8vfFQNYafzvnzi5hI{5L@|5?lm9urA2?|HUD^*o@L zI1+htIvv#)fLvTRX7}GC8^kue9|S`2t)11(t+U^yl>%e#62DCI?P{AbiTnB>lOV@mF-NecN(+7Zl#@^zFbM|gv%>$MEuQdTpfYQjF zRdx12Y#%itdp?|&@Wwe~<-f_rkFQO=O7K}D7J;OnK)L(>+b7Tps9X8p>(#*`3S7Eo z^viGI5EYC2=g4u6<~=Tl)Q2l)!yF$53Dvs_=OnL*Q(cAFJxDX(mGd`zEFb`Z2v1-y ziUmSv!N*qz^Dh;faR)q&N)qfL72p3*iGZVqvE~{a`)n>Qfn$bJ!dm&&Us#Pd`N5q@ zUU-RICZYdV)%L#TZg+Q^UdVXb$j*b)4SW#UVDX8u;V4Hft?(fK$&+__m%>h$;4R;` z_$>(rrGLY6UV0!)MP?8vfN7Iih!Vg%8&Fknlc{>7!a#&MSRlqXdxD??ln7`W>0eD~ zvEiP+_P_lTMNf#w-U9sLs}l}H&~u(QfvxoO@EDB%I%?1J6O%{TUL_B4CrH2ERQeA9 z(E}+e)01?X%^tB61NS_2qk(af3CD34_Oy(;9hdgt-hS61U*-t%M1V%wNSDgI^s z75A}LAulCGF{Bmx8Imryb=hIW-W9$EhyUP(aoVuevrE}K09IKsy}c|T%1;gEl2UY05sCS zsHV>UWH))uLBxQ?kQ|b=0JVMJERAs_RvhIQiI+8`{->Xgm%g3%>UaZ z|5tYjFa_-&?4sSzCMb#)OhD8SKcwpq1PzPuTOL&0{yUJ8hzV?RB6r;y#if#RXKFCPDK0TGIWXd#S!c8=?LgGgxzTxKjFHOj&*7_P^NR(s}B%h}Ol$y^T% z`im3wuOH*|Z2Rln31mzX+Y3%T%P0uhz+u-+Cnp5tkph>Xb5eg7+{n%rOaG@u3=T(m z@G>O-G;k40fZwMH?8*hPaPOZ&itQsz`-MM*Jm?sJf<^k13#Z$}w?i5P%#Jw?C*Y(Y z#5t=bUw$*ioIl$nXK(w@2W8y`bC{iiXp24j8DSnc>eJ;_3Bc0`?}9yqdjG%AcT$AC z1{(c46FH@KD(*`vs!!heyT~0$0@9|ePXec=pue!<4Zuq%_z*0d1D~4E7Ua9%NV1_M z=J%NY_pg3bfRO9yb+{mW_J(rT!9tR=zWov`jt3Ru>KBbNbi%v;hc?lsiogp^>NZfHJ)agj5gs`r!01 z9?#9VupZjjUE}e9>hr4)%zvH%DiCQ?Pv`F3c{VX9Q))tV6Vp5w?>n{UQR;z6k;Ql2 zm*#TIgTE4C|D3x2{uMCc{o0mX0k($7uU5S6GIe6HhCYY)hF=%=cp`;0@?MS^GWwJv zU-+NxsOlIj?}MYJ808dl@RuKf@qOxs|DQBgz<*{nnHyiAU&Tc2n5&i@mC6o(?ctm! zGvk?Z{`3WWWv~2P+!KppOMybzC3+w%kx`EzoW9xegy1ieKM&)S3MAe_%#RafIh5^Q zd#DVkSa-8g=KUU@qVNTG0aCzk8DJT%jXCIX{BGJ zn5@wr>(yB`7}Y1V2GNk-l-0mv_aorU82D>L7_IQ%m&`wxQQ&I`Jy%K*RxlvlNh);g z;vt>MWuB#r-D$FCZ~AqR&#GOk1NWfU|IN&~Iy#BZhL7sml{P)v$IXqp0;R`M}Q)a%!t0rt~w?xz3@ zZEZB2e~D5?M(R^~tyl*u?*m2H_ngC#-Ce}yA!XC3O;#Nz5@Ja(cUaokfro2(^B^m6 zH%ML^2o@crqE52f;QkcrD>3w4LJ0#+zpMka&FE^+0~(T2-*OuVtX)lL8C7q2OI&Tv z?)#hL=0OlN-eKfokAc(gXS!L#FG|aoL{$dgvI2#(Mo|OrGuhT7 z01mtS^%S@iAbN<-P4UwelbL;uu-O4!Ct58{7V{~KrSck1)3KTJ%ky7S!G|KHC4&c9 zxo>aeIRf3w?phI2S7F+pqbD3Euw66nhCKyPsRmYw?70I8JGG5ay?JnZJVH?#f8DN9 zTh1GdK$~4BsSzOH_QYIzn4tWZ`mAuuO5}RAJDC)@{;kQ(_+^3uU61?UL^ozgzZxp8 zI5jOrMc*q`1@W?pf(}{6?QokFWYP5stBKOG6#xQ1PWq9DWA{0Nf*Sb9f~z+7x8@6X z>%Mdohz3`sy3W7*;FYEJiF3jT@N?p!8d?>mnee5)*4z2tlK5^aMzR!De~h`Hi@s*v z9^*6e(gF@o1loIA^IHXl_OV}Wdi#<@&6~#c=EDoKlne8|SqfT?f_P9-MgP#X6B1t> z(AztJEe&uAP|y9B$N8UI>+GxdlaL|?G)Ma(P?v(m0Z1Pbw~c|g@ZgN}%j*klWaoh> zF;vf0|Hq?FNZ4Sh!WZs5hP`+5b)QO1%*t@74vZ|jB8N|qzD{(EhDEb5!r7JrDJ#Pi zY_*7XdLyzLhwxc!RcLPjjxPZ5+yi350E*AUmP*;%Kq6h8-}c;FBuly?_?$^?q1M?4= za#F+d(KI5+Y7cjOg?<*VK`s2I1O5_XSkp6r;-6 zQ6I8imS+SQf0f0Si^Yy7pMJ$nq_pLSv7nM1<%31k4Yf*1n;WUu(hFHbXtqD`HOpr-% zuDWT4AKB~S-}yDb2AnC;=34UcK=(T;kxw9Y@Sqzh!~oD@3&UoSfo;un(dC1c)n8Al z#@UZ1Od&*isQ_|j1H0(ZyxdBR+(Du}Z8ajQ$a;4dwM{K+c09K{bP+%gs8 zqik3hQrLZDqSHj=9}2C#R4IpDLziGJ_2*wKoDfalM^@y|9@ zvr%>H_2Z3AI`1!W@P@D-Zvqz-`~5{)K-svRxxBSbUEUi11D7{gPNJkims>jBrm!gPtXW3+og|N;yX)|%hvz777j%+K>;>o~!~jy&%Lm;@ zFZ&I7EF&chylH&;=HsQ2!jrYR!}unj4l|l$swy|FU+A0**!^vBj<@*nY`$(;@`^Gf zc7vI}^p#p|{i((-kI(kBZVdxwJeS zYK2B@9Q^#2fw8!tORtG1N%A`UF7R}No|E)ft49Ar^#k!MSRB3tij2Mq zAdOQ<^OiE%4|evw*jmEly+Y_-(BCYvxAc}l@Ia1H0oTenZr4Uv)|1AuWl$NI*?Fw^ zcrf&_-t}3b6i1~3Vg7XVN{Kd=e1$%+QqzWE>wwaXOmktq(x}V$=C93ly4LB_^vPA$ zd?ss=&lI0t*YN(e@iK<-vB1<9$R2lyOZ-lT6g~fJI>+YRhmd1-=lGu2>9kePuSVT*!bp8voSlZFUgPm2&i0@mYcJo>A znxwh9>{j#f1LypXLIJ11aM`T+iTw{UYjd4~zPF^VIYT;@2tj^9P|wF_pA~d$9j(zJ zP-ByS56HgNpd>lXo+%U=37x*JH_;g$U!S8wJP221S2%z#g3QRRnL*G}Cb2IfNl>s| z5$x8PA%a$=;g}#AP&QGU>S~G}{!++Q%@1P2+?)f3zPM1*Vh)q^BDX`Lc3fvW!iT88 zEYT~ZPV!#q#lATD@FW`K8Y5E(P9U87hS_kVNzIsj^G{O;2(2Z=@I{OLe@ z-##4?`xh{ROSbjS8vJF1}5}aLT6h=GKsQEiny=2}x%i|y~Iv2U5oldal_`OBWVxZLNefd*6?aUTqr?BgpJ>she z_poxp`s^Q7vGrWk%U9mn1}>#i_%PWXlONa%OWCG9&YU~&q--F|OSCaF+3XkK{1v;= zopT=d1W2+%Z|z12TPPuktkqGG1L|sPXh*nl7Afp=0@^Dj`ktrLtL-JOp<(W{bWb0p zf8Xp_91ibkbB5RhgKFrP{)VH2L;A*Bz6tN=8Pml>akRJ}d}DP`BF;RV@784vAfPPC z7c~weO#en|rv1C-8IA!VMs_EUxT_LjGOatBrBrt(hf(Xt`;|~Lx)Lx6RNOWb5-wV> zUH*<_+#GpPtMhnfHCw3(79rnpwfT3Z4}Luvw6*Ac7dBi-)3p%DwKfY-00mvEB`Q0{ z&-yY_7X-;crWnURax1?MP}(S5qZY+VW2 zd9P55SXF-Ys3oS_2(Ql~=B8E8w+(q7Y3LV5nAy`;w|;c!X$DAQ?uvu>&$XuOn^nXw z5e0DP8&7a|DYkKp3@F7E<#jN;7j(JHVOd%NT+HD(;~MwUXaujTy!&)?oB!}~3;%WW z-Xb`)7osy|AmH=LDfG8;3jNJ;{Rimp_tC8)E$MrUf+FitBtxgfM#B_etY5)@x$PqS z`2hrTD@#KW4dlIiFw}WO2_=kct)k_;5!^UILaG%<5jzVr%bLPBobul4TWVgb`V|M0 z$rF6p**p%K9`jxa)XoMQSup8+`z%(S`j2%i1C`2Num;Nuxx4BYYL@c0OLna!Kuq>1 z@aN*r`ewkZlbK}f8fN)@B0grPq*ysllR=Ryz;?7;vDCQc1F)q4dyk^gND9}U5+tVG zz54-62xtnIh@EDeYV5+ch}NEeRcNS_EkvbpIvb{O!yuua^)k0HP#B=C5t{hFh3>)8 z2MrEn_C99h{l!e|E_UlHrDEe?Nmg3BTgkom-uoOt=|#Ph8gv=lDZzqJWuYL z6f!lB(a2v53{qI`i$9#*JLywELw%&)ivh>vFQ?)KrauPCOAo{$Hw2V|UcG$5sNAJ% zL}?aK==U#b3T?y;9BiT&Qr|OV6Ny;ArJZwCGfPT6~+8{_RE=^Fp6Ge1WlioMaV!~MT+Sbg{mr+=M^70;6p`uSvgU0}^otR+x z!UZtaQv?v>@$h zt7OUCH{8*2^2j$+V!@n#;~v>92X;i^6N$Iq$mjWi#+gZF0rmo)Z2J-~XONIRB$v0q zFw^%(J*rzfnwV;>eY`aT5U%R{mKyKfm7dMvdBfA*CtbR(Ux2!|H7|egog13FhF;45 zxtAPX%T+h`tj^Rr#y9uId*Aqn`#J7>)%-LPAA^NFm>;IMd0`M8K9rfcK*Xf?2(gr&>FV6@pkV-I%9lgxw&&J3zTa}|O7pw3+H1w>690ewzvUQXB0zfK7 zCc$c1EhQp3P7AUPM#|i>Yf_ z4!pf>#T=8_8m^Gbkmq5^VCw{GDcWfs-*4eBb!6qKa-cpbHB$L+p578kLp+E$GeFcQ zJmT|PGkj;Cxb1E6cDQN_SphZhF%{xC#f4$09v+${{#Ja7F89*Mb`IL7gamv=oI(lF)dI`A~Vc} z0ySUwd;9U)64Mg}qTdX4T0EN;9Ak@MC!B87B;!T*%1MSGjI*nOFRdQF(x>a5Bk}s> zQ%F^>{r_QOh7VGc@*utHTulWapGdGjlkAgELe4$EYN88rU$5bN^h4d5!jdc7zSHG@ z$7A8P(Nht0Hn)&|-h1;$gs=wP8zsCOEmaE(#I^i8araUa7gS||nSMQny?dX__-BMj zABeXn$y4RRJrzsTkg%LGFa0XsQr2aM5ypAXgT+*QnJOt#4yol&RRxpp9*(#KUS3!z z*8u3(W&Re5(uI+l3T|61z9&ttQq4@UdEBp`iQTSpUF0d&6Vx5i#Vl6K<*ywDGC1Yhu-J)QHpdsi%qK$6Jn(2hIfoK_IUKv%s5gl5Fds{4jgIdaYK`<;h~^ zcp5)Sc~@MqCb$ApC-3f)iRkLqI=fG#2o=Rncm;g%d)To${sB~PJ!E`#l=u6>>h3iR zfYwe10KLv!`87pTwhWG^wQK%s)glqBy28!n6oc)-vCG*Cd-0vNSRDS;OOR2K(%Bvk z&?z>BGay30QQhsNj%h66KlBqk>y&g0**BYhT_wp3HNMpa$!JZ5(qn73NEDjR(I{5z za3{;svZJGwqI zts)w4W7ot0@L__t+4B>XChi4K)WD=r=$kG4&{Rq$qjj$Y_g3<$*w!2$bmr)3a$nt* zEcQXM$pc;USZ3>jx+ zsAZ+uFeKjj+i{1)w4>^(WP$3j%jI1x=r~9ZIuCNzecU+W2`jm-aSm*ufSnABtKb-t z%>ddv+K)8^Teul@Jq3RTj)A7*cQ2#k{dvlo<%xi<=1dHUQX+S|HA8t{t^y^L)8_7O z6jjlB9c-Hl^~YB6HrPaXeD7z69jHPjeHqi<&3iV|*}eBe{f(j!a^c{fwgZ%myfEVp zhL-cek~KLXlZh@V{`?ZVU#=nLp-e03-V%`+Ot9SUX~dIfSH5d6j`}1(ZLW&aB_b(C zHE{Zs6{$?~d9EwtT0OXJwlRUR;F@cD{geZS^%x`#{#Tb~)m18cFsL5c!8=D-eiVY= z1H*;C8=Sg58L}zanVw1Gac7d(jAERT8W!#4H7*X07mWm65p6Gh;Kr#0lao`c%I|ky z;ohV*^p#OeS?QWBUt#u8W)VFL_5|*v-ra_StGp5XH%Cm>YgM4?MrBK#y0bEyCoY6&Vsr6gn|)lSjL&Pe?0isf2Z{-9sz`=-h-lQ-CQiHs?ddpO2VOpJ1_NonkR>_mVVXz1 zI(fi@`(Qo4%>1v+HLiQuIm+^(uQ1ALqI;D5v>?yn3cv>~2lF(KTpv)QdMN@eFnK}1 zL^?EVBHD9uTsP)=^2`*`(%Y!^t*sCAeE6RFnXv|&!;VdxiG7#Mxc0u&2tSir^_$_{ zB5O~pKL1ikTwU5edM0(C>;p?ftxjm|I&fIuF`oLhzz zzO5ZN{>~u7Bz*Yw6i~Yo)(tgDWI63KkkGMvZT92eP+tiUJDA-f-f3yoo&hZ7$)g$R zuZFo=71s0wloDNMA=k!{nNCo+^mkS-59c@#A_bFo=dEs-eR<1qW7Qe&FY`K(UUR$& zFZ*@}{ZUB2C$3Ovre=U6^Wy@ygj6B=ff`DA^|q}jk2xAp9XB@Jfo(tW*8z*E&s&x@ z;=uitE%t2bLi%&#y{bm=@`Rrxcn-p&Z^JGpnvXYvTz(am7VMlLRGslOhAt#Wq5Jl* z(O0LN=2NmSWV#{5wJ%dw*9>zEuNtjzvV#23@4d~Mz1SUs$j-qGLbSQ4LWcw&6qdxQ>R@^=01n17pP4t&JquntCLYP|9YhD)U8aRBM*u^ z>=6gvI5tC?al>0v*79Hj)u$6387w=!hFoU^-NDLCk1I@RoG5hG@LE92z}FOxj^XaV zozqCAt=!3`_ydCY3n6jIr6BH`ORe3Hv{k8)E@d_iGoRJx&dN$JYd|zz8G1-X|C}a| z7YZzo&EXKUt9#1q?)(p!U1;v0^5k)z7)<~^1+U7BMq$d{;(#&DsXH}mwN^^|!)0O} zs5Gy;UWa(NmzvFwc=G4uK3j1n)YfLOXXlGhaFu>;*c+pRx+_7j%MN@b=hXL=uVeRmo*c2T=_!4J5lY$d3okRmJ0OWX8h2DK=m}L;$ewp0!K*D_ z?!~zrH&9WHT3yX?(*ICcixVJNcS!xRR$GgoTyhoyMI-sVAoLEw@WSm=>9qK z^+ya&+Zub!WX$6J&S8_|R}a`+0b!s6ZN@retVc7*L_m^kqEoTu@Tu6c!|Xq_HvZjt zG;?o6h%V^xc)4TCbAK)7=#b#Ehs9dIF27x=`4HWZTE4;7a|?&^ZqR7+Y15bE*?2>f zz1B3Gmk#g~{|a1egAuFY#uJLy?T^#YU!Om0=64-;uJhdL`u6;FxJI9zU_83NQ z(Zo%Q&em#VeQ;5-z%lQDMN&(d;{_UD#HSW@x15n~a&A#Oj$Oqq02KV;J68 zyO=6MO=kQBG3rD2cu9Tp)6GMp#Km)h6k*B=)B4x1wEWt}TxQZuue`jr(4gI5RHTQn z8DqC8FP_Ma{@vYiCsp*rs%ycr%~*k#xCovyM8S3}Nuwj5RyG_Nyg$a-u>x12V@IH` zkcpFV**c2rk3T}--Hi1puWsle|H~2I4fNAhz|Gz_3fcD10Ljd{`i*~05(xv1z-CtUbXp+$V=Z*)fdPaM zjQJ)2POU9#P&$xDSaRrtcZDA{FoTu&-2h6Fo+MG_D`JoCugp8}y@l<=7y4Pu#Xsuz zG!(Hn%jnR&BVxMkItlm4zKOt#0-2pFB^g}5nMyE2K@W4dvTs~mZi)FCs&=hB@`Sx# z{Nvk5Y+A2c_{QT9Cqu_@!c2ySCl?G1NChN---q0c(r>l*bwqe)Brw4Ht@4_X)h_nd zL|9Lhj>o(z?JIW>5&99y{KX0R2=sl)3l5J{>#HTWd~bp&lv}aHazBM1TWq6Z9(lmj zSUX-P-(qUYNa9a zQp-XR{Ct8L8IE!VaTcPlOy=S~`U-c0s6|eL5Wv9Ga@W}LV*s&!!Rlj-^J2fw?y3+K z@B~(Ld<0YDznu!gCk@q4BjqI>CXk#hAFD^r-4jYw`@^K1swGRv_5a4wO?28x@k35V zP|H2-Gc;dhSj8D~9|<1eA%asuj|PVIcBmtPMNEq0 zJWM7YJ@o*zpX*fT>K0v}|83g}R<4*1t^8J$nfZ9(5(BV5JKSXO@cLZ@&sEQOq!-b^ zJAsLl`^&Y-P5X_E-58lqAvYtrb78HTJWnQbx<*aLUgk=Sj}uoM0gtErF=E{Xv{H>{ z)5M(5F<6-BUWCJQQ#sEt>PN6G+!=cWnib>bqL<{xah>NO5An~MNo-ppqY>9ygtL}Ul$S2q~C zuCF(#df4&IsDEo?Fh)7Alk)}%m^pg+OfRz>O5T9_Aew7R-8-cjROJk&%!rh z|H8P(JA{H(Hkw{ZFQ8So2sU$Dz){`1)S%BQfqt-1Ac{LXveId6X|&{-*wB23r#`*a zQcN-(a93}nis`s6ZS!0#ShQ@cDw-ccPw&P^1BfO{*S1m4w<X;nHzORsF$850~}h ze*C~+2OV|;mw0YI=mKylI<*nBE4O0HJ2DsfxiXwq$n*h!6kA~Ni&P?~e)2-m5?o}Y z8?;@1CX$~^C(43ny-+UYbF?3CT#{o^%hZ7)dM0jXQUaN`vX1Mc5S}u;GSAc&Mz<-BH+Ng?7;{qMO8LY^{nefK1R`%Pclf~x z&vT!lQNJZ`_d8IGnRqZ_D#w`KR%bS) zyf!g5Zk^bWIDDAA&gHt4=;S>=fn0CccTxszg52k{KT>B~M9(GLP27q5zAb!-Xm&sC zB8xM0*@wdN%kxiXex%oY23L+b@4fxw&3ro~jD5HzGP)-u_`)*@7Sb|bMp$v4G*&LP ze_P1JU-{b4p*<+$etN43m6b2G$Vr)P-6pu#qZj7O@vN0DKJ?Dlsz^eF$7E_MJ0S+f zG5@FA5%0gb5d2e;HGE+MwA$L$ZEA^RolCOn_GU5saQfsY(zrw$`(l}0V`+c+eui#H zd$S(mmmmQnmU#Z}7r=-spRXtEkdt|PcB{|Z%;)ny6eZ)}R-cc!MBtjJ`3P#ryfH{th zy6Oj8^b@zpbwQ!~b?3yU{Y~*UJn4eoc=1IFJfoo)l5>o&JVNcz(QwC;v1={R6F8WZ zEM#1af<0g|#MgLZzV%G)XX)1ZFZn`z#oymj01n&tbO$_U3vz--N*69Cu8LvgsX z$zIC^(n|0{!!zH5@p^c^8i$RX!FOSr6ou?BgGLE(cxhWd;3VmE^@phZvDX1I!8G4? zuFu${Kosag1`i#9I0~Mi83$867?l$e4rD{~brTaL=`NsBmAjdtU1&!XNko<;X(9Nk~uPpnSH0nsD5=E209T6`C@ zpn{eKm_A004@8oQH1wJo=b`j^GY|Xpd_c-`9|+_i#o{h1Cu{{ghx7>$M#PiGr@`R;jcjo_+J>Px%BY<%<^h}U2tBKqv4 zYA5cM9*iFPagURPa9lxCR^1g|iW3UA4Yf4WcXcd0wlLHr?pQ&5ADL9BYA#t*}w!l}2M zD@DIFfXghUuFVk_+3(BNPpf0|h0q)NuibwZ6@8yzWGpyMVBry_$gIm*$$7T3VNd(mrqm3oHd z^qo_Y8(Pry^{QpZ4$fSU1SK3?iPM*^zqH1V4t>FNpep%bN)Hd4AP9-aT?Pa9)YJxj z56InA|FDA40&TxIgJ7&E5~h)6b`~$c(eAS6lw9uKxefmWKWmX}RCS_K*KPmf@|$@MJrD(g(O; ztRInEIh#K}rIyz~<#Kz-T0}k}^*WMRDvkR+x?hNCTBYk@68KATa zH1^gmMQf;$dFLTysbW;AYeL?_dx2UxP9B8yhVp?*ih6}3<%Vv%#kz43XeDyse+|1U z|C7d7PNp=0_w0n&Y*=HIDa)hp$FS3S3?~@RGI*5oY}k|S6RfO+b+2cUqlSPn?^(Wf zNwD`04)7;;jSS3zG8U_f>ry`|$^#ZOJcXzj`tNP=lK9L!ZAuw5PDb5bU!2;3l1Z#Y zm(RE%&JWB1r0XOZdhH$(s`QLRV)GK$C5*?&j-E#vz6MHzPI4Q8sTp*}NYu5JWfiW^ z7&i>Jt!Hpio^FW!002UIw8+A%WL2mO3_WD0yax!#CwzLgC=E}0dCrtSA2SKyp_R@q zl!iwe+7EK4gw&sq-Rd@Q^wKu=nYaw^23L8IqBqkdoplzn3R`Gm zVabX6f@^U{a+iIsU;;Uzg+6Jh?9HkeSH>$=p*&hBnK&N$b;{Jqat zO^Q#|BsW^KOc>cBqm9GE{mi^_BMsezvr0csigP$uJ9ZPrT9?Rb+Xucf?$R-v|5mIM zUo|D+_noM=ZW+&{Kvk32dz)ZfoV2jLVXd~`8Xo#K&TaXXaqX$D+ojp7ib-s3n4#iU z4In)a6u>$AJm;JZXKGQ0aRlN*)cIO?_ z6a$Lt&II_xd##VNs>2NHVLNL~LcI9*N$Zj2-zzi6$F* z5UahS=QO8s!sj-8B@}`=`I1_chuvfK{pmgDP$Idr{*6ae z4%K%=wAjr!H|-rYn*(Fa%JY~%t$9(=;xubp4G)se-Y-#A3jiEg(2%0A80{=8t){cC@w;2JcP%Ss%yF=H!qNfc0&|)&w?`N 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 AeE Date: Mon, 22 Aug 2022 21:46:16 +0200 Subject: [PATCH 387/553] Update version to 22.01.1 --- lib/galaxy/version.py | 2 +- packages/app/galaxy/project_galaxy_app.py | 2 +- packages/auth/galaxy/project_galaxy_auth.py | 2 +- packages/config/galaxy/project_galaxy_config.py | 2 +- packages/containers/galaxy/project_galaxy_containers.py | 2 +- packages/data/galaxy/project_galaxy_data.py | 2 +- packages/files/galaxy/project_galaxy_files.py | 2 +- packages/job_execution/galaxy/project_galaxy_job_execution.py | 2 +- packages/job_metrics/galaxy/project_galaxy_job_metrics.py | 2 +- packages/meta/galaxy/project_galaxy_meta.py | 2 +- packages/objectstore/galaxy/project_galaxy_objectstore.py | 2 +- packages/selenium/galaxy/project_galaxy_selenium.py | 2 +- packages/test_api/galaxy/project_galaxy_test_api.py | 2 +- packages/test_base/galaxy/project_galaxy_test_base.py | 2 +- packages/test_driver/galaxy/project_galaxy_test_driver.py | 2 +- packages/test_selenium/galaxy/project_galaxy_test_selenium.py | 2 +- packages/tool_util/galaxy/project_galaxy_tool_util.py | 2 +- packages/util/galaxy/project_galaxy_util.py | 2 +- packages/web_framework/galaxy/project_galaxy_web_framework.py | 2 +- packages/web_stack/galaxy/project_galaxy_web_stack.py | 2 +- packages/webapps/galaxy/project_galaxy_webapps.py | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/lib/galaxy/version.py b/lib/galaxy/version.py index 3365331b161..2f2b169e648 100644 --- a/lib/galaxy/version.py +++ b/lib/galaxy/version.py @@ -1,3 +1,3 @@ VERSION_MAJOR = "22.01" -VERSION_MINOR = "1.dev0" +VERSION_MINOR = "1" VERSION = VERSION_MAJOR + (f".{VERSION_MINOR}" if VERSION_MINOR else '') diff --git a/packages/app/galaxy/project_galaxy_app.py b/packages/app/galaxy/project_galaxy_app.py index 3c0372d2e48..1c6ef7111a3 100644 --- a/packages/app/galaxy/project_galaxy_app.py +++ b/packages/app/galaxy/project_galaxy_app.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-app" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/auth/galaxy/project_galaxy_auth.py b/packages/auth/galaxy/project_galaxy_auth.py index 74f4b34b3b1..9144b73387f 100644 --- a/packages/auth/galaxy/project_galaxy_auth.py +++ b/packages/auth/galaxy/project_galaxy_auth.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-auth" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/config/galaxy/project_galaxy_config.py b/packages/config/galaxy/project_galaxy_config.py index f42932d4761..f32b02b7e68 100644 --- a/packages/config/galaxy/project_galaxy_config.py +++ b/packages/config/galaxy/project_galaxy_config.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-config" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/containers/galaxy/project_galaxy_containers.py b/packages/containers/galaxy/project_galaxy_containers.py index 6bccfd07432..fa9b5f9b96a 100644 --- a/packages/containers/galaxy/project_galaxy_containers.py +++ b/packages/containers/galaxy/project_galaxy_containers.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-containers" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/data/galaxy/project_galaxy_data.py b/packages/data/galaxy/project_galaxy_data.py index 764b083a644..4a558eea9a6 100644 --- a/packages/data/galaxy/project_galaxy_data.py +++ b/packages/data/galaxy/project_galaxy_data.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-data" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/files/galaxy/project_galaxy_files.py b/packages/files/galaxy/project_galaxy_files.py index a439347fa8b..953365f331b 100644 --- a/packages/files/galaxy/project_galaxy_files.py +++ b/packages/files/galaxy/project_galaxy_files.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-files" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/job_execution/galaxy/project_galaxy_job_execution.py b/packages/job_execution/galaxy/project_galaxy_job_execution.py index 953f918c243..cc3ad2d577a 100644 --- a/packages/job_execution/galaxy/project_galaxy_job_execution.py +++ b/packages/job_execution/galaxy/project_galaxy_job_execution.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-job-execution" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/job_metrics/galaxy/project_galaxy_job_metrics.py b/packages/job_metrics/galaxy/project_galaxy_job_metrics.py index ce90a1c961a..26599fe4dd6 100644 --- a/packages/job_metrics/galaxy/project_galaxy_job_metrics.py +++ b/packages/job_metrics/galaxy/project_galaxy_job_metrics.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-job-metrics" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/meta/galaxy/project_galaxy_meta.py b/packages/meta/galaxy/project_galaxy_meta.py index b6c4a477e0c..de0d64b2e42 100644 --- a/packages/meta/galaxy/project_galaxy_meta.py +++ b/packages/meta/galaxy/project_galaxy_meta.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/objectstore/galaxy/project_galaxy_objectstore.py b/packages/objectstore/galaxy/project_galaxy_objectstore.py index 2c03f81834a..1a0f01ff2f7 100644 --- a/packages/objectstore/galaxy/project_galaxy_objectstore.py +++ b/packages/objectstore/galaxy/project_galaxy_objectstore.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-objectstore" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/selenium/galaxy/project_galaxy_selenium.py b/packages/selenium/galaxy/project_galaxy_selenium.py index 390ad9d7e0f..e395c50188a 100644 --- a/packages/selenium/galaxy/project_galaxy_selenium.py +++ b/packages/selenium/galaxy/project_galaxy_selenium.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-selenium" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/test_api/galaxy/project_galaxy_test_api.py b/packages/test_api/galaxy/project_galaxy_test_api.py index 3c1d5719748..ca2e951e1f8 100644 --- a/packages/test_api/galaxy/project_galaxy_test_api.py +++ b/packages/test_api/galaxy/project_galaxy_test_api.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-test-api" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/test_base/galaxy/project_galaxy_test_base.py b/packages/test_base/galaxy/project_galaxy_test_base.py index c280649b702..8d88f8a75bf 100644 --- a/packages/test_base/galaxy/project_galaxy_test_base.py +++ b/packages/test_base/galaxy/project_galaxy_test_base.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-test-base" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/test_driver/galaxy/project_galaxy_test_driver.py b/packages/test_driver/galaxy/project_galaxy_test_driver.py index a33496ae37a..5a2ba811087 100644 --- a/packages/test_driver/galaxy/project_galaxy_test_driver.py +++ b/packages/test_driver/galaxy/project_galaxy_test_driver.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-test-driver" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/test_selenium/galaxy/project_galaxy_test_selenium.py b/packages/test_selenium/galaxy/project_galaxy_test_selenium.py index 03cc5fb661c..5a343542a7b 100644 --- a/packages/test_selenium/galaxy/project_galaxy_test_selenium.py +++ b/packages/test_selenium/galaxy/project_galaxy_test_selenium.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-test-selenium" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/tool_util/galaxy/project_galaxy_tool_util.py b/packages/tool_util/galaxy/project_galaxy_tool_util.py index a358955d113..7583abb6666 100644 --- a/packages/tool_util/galaxy/project_galaxy_tool_util.py +++ b/packages/tool_util/galaxy/project_galaxy_tool_util.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-tool-util" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/util/galaxy/project_galaxy_util.py b/packages/util/galaxy/project_galaxy_util.py index 87de773aa40..3d19ad42586 100644 --- a/packages/util/galaxy/project_galaxy_util.py +++ b/packages/util/galaxy/project_galaxy_util.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-util" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/web_framework/galaxy/project_galaxy_web_framework.py b/packages/web_framework/galaxy/project_galaxy_web_framework.py index a71105ff7a1..c46bae229be 100644 --- a/packages/web_framework/galaxy/project_galaxy_web_framework.py +++ b/packages/web_framework/galaxy/project_galaxy_web_framework.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-web-framework" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/web_stack/galaxy/project_galaxy_web_stack.py b/packages/web_stack/galaxy/project_galaxy_web_stack.py index b1dfadd8829..ad10d302d3e 100644 --- a/packages/web_stack/galaxy/project_galaxy_web_stack.py +++ b/packages/web_stack/galaxy/project_galaxy_web_stack.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-web-stack" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/webapps/galaxy/project_galaxy_webapps.py b/packages/webapps/galaxy/project_galaxy_webapps.py index 5a66e78bfe8..529d30c7ac3 100644 --- a/packages/webapps/galaxy/project_galaxy_webapps.py +++ b/packages/webapps/galaxy/project_galaxy_webapps.py @@ -1,4 +1,4 @@ -__version__ = "22.1.0" +__version__ = "22.1.1" PROJECT_NAME = "galaxy-webapps" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" From 0a69d3d8822f4863648e3137e2d63fcf9b6c5ff5 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Mon, 22 Aug 2022 21:57:17 +0200 Subject: [PATCH 388/553] Update version to 22.1.2.dev0 --- lib/galaxy/version.py | 2 +- packages/app/galaxy/project_galaxy_app.py | 2 +- packages/auth/galaxy/project_galaxy_auth.py | 2 +- packages/config/galaxy/project_galaxy_config.py | 2 +- packages/containers/galaxy/project_galaxy_containers.py | 2 +- packages/data/galaxy/project_galaxy_data.py | 2 +- packages/files/galaxy/project_galaxy_files.py | 2 +- packages/job_execution/galaxy/project_galaxy_job_execution.py | 2 +- packages/job_metrics/galaxy/project_galaxy_job_metrics.py | 2 +- packages/meta/galaxy/project_galaxy_meta.py | 2 +- packages/objectstore/galaxy/project_galaxy_objectstore.py | 2 +- packages/selenium/galaxy/project_galaxy_selenium.py | 2 +- packages/test_api/galaxy/project_galaxy_test_api.py | 2 +- packages/test_base/galaxy/project_galaxy_test_base.py | 2 +- packages/test_driver/galaxy/project_galaxy_test_driver.py | 2 +- packages/test_selenium/galaxy/project_galaxy_test_selenium.py | 2 +- packages/tool_util/galaxy/project_galaxy_tool_util.py | 2 +- packages/util/galaxy/project_galaxy_util.py | 2 +- packages/web_framework/galaxy/project_galaxy_web_framework.py | 2 +- packages/web_stack/galaxy/project_galaxy_web_stack.py | 2 +- packages/webapps/galaxy/project_galaxy_webapps.py | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/lib/galaxy/version.py b/lib/galaxy/version.py index 2f2b169e648..05f46058fe9 100644 --- a/lib/galaxy/version.py +++ b/lib/galaxy/version.py @@ -1,3 +1,3 @@ VERSION_MAJOR = "22.01" -VERSION_MINOR = "1" +VERSION_MINOR = "2.dev0" VERSION = VERSION_MAJOR + (f".{VERSION_MINOR}" if VERSION_MINOR else '') diff --git a/packages/app/galaxy/project_galaxy_app.py b/packages/app/galaxy/project_galaxy_app.py index 1c6ef7111a3..7ed3e1c4efc 100644 --- a/packages/app/galaxy/project_galaxy_app.py +++ b/packages/app/galaxy/project_galaxy_app.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-app" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/auth/galaxy/project_galaxy_auth.py b/packages/auth/galaxy/project_galaxy_auth.py index 9144b73387f..0447128e4b9 100644 --- a/packages/auth/galaxy/project_galaxy_auth.py +++ b/packages/auth/galaxy/project_galaxy_auth.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-auth" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/config/galaxy/project_galaxy_config.py b/packages/config/galaxy/project_galaxy_config.py index f32b02b7e68..1c48067faac 100644 --- a/packages/config/galaxy/project_galaxy_config.py +++ b/packages/config/galaxy/project_galaxy_config.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-config" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/containers/galaxy/project_galaxy_containers.py b/packages/containers/galaxy/project_galaxy_containers.py index fa9b5f9b96a..6532ba9895e 100644 --- a/packages/containers/galaxy/project_galaxy_containers.py +++ b/packages/containers/galaxy/project_galaxy_containers.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-containers" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/data/galaxy/project_galaxy_data.py b/packages/data/galaxy/project_galaxy_data.py index 4a558eea9a6..40c2c76a357 100644 --- a/packages/data/galaxy/project_galaxy_data.py +++ b/packages/data/galaxy/project_galaxy_data.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-data" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/files/galaxy/project_galaxy_files.py b/packages/files/galaxy/project_galaxy_files.py index 953365f331b..f4aa7dd5e11 100644 --- a/packages/files/galaxy/project_galaxy_files.py +++ b/packages/files/galaxy/project_galaxy_files.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-files" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/job_execution/galaxy/project_galaxy_job_execution.py b/packages/job_execution/galaxy/project_galaxy_job_execution.py index cc3ad2d577a..0af87c2a916 100644 --- a/packages/job_execution/galaxy/project_galaxy_job_execution.py +++ b/packages/job_execution/galaxy/project_galaxy_job_execution.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-job-execution" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/job_metrics/galaxy/project_galaxy_job_metrics.py b/packages/job_metrics/galaxy/project_galaxy_job_metrics.py index 26599fe4dd6..770035eff42 100644 --- a/packages/job_metrics/galaxy/project_galaxy_job_metrics.py +++ b/packages/job_metrics/galaxy/project_galaxy_job_metrics.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-job-metrics" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/meta/galaxy/project_galaxy_meta.py b/packages/meta/galaxy/project_galaxy_meta.py index de0d64b2e42..a0bb8db0c9d 100644 --- a/packages/meta/galaxy/project_galaxy_meta.py +++ b/packages/meta/galaxy/project_galaxy_meta.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/objectstore/galaxy/project_galaxy_objectstore.py b/packages/objectstore/galaxy/project_galaxy_objectstore.py index 1a0f01ff2f7..a1fec14b63e 100644 --- a/packages/objectstore/galaxy/project_galaxy_objectstore.py +++ b/packages/objectstore/galaxy/project_galaxy_objectstore.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-objectstore" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/selenium/galaxy/project_galaxy_selenium.py b/packages/selenium/galaxy/project_galaxy_selenium.py index e395c50188a..09b540cc040 100644 --- a/packages/selenium/galaxy/project_galaxy_selenium.py +++ b/packages/selenium/galaxy/project_galaxy_selenium.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-selenium" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/test_api/galaxy/project_galaxy_test_api.py b/packages/test_api/galaxy/project_galaxy_test_api.py index ca2e951e1f8..f1d628211ca 100644 --- a/packages/test_api/galaxy/project_galaxy_test_api.py +++ b/packages/test_api/galaxy/project_galaxy_test_api.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-test-api" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/test_base/galaxy/project_galaxy_test_base.py b/packages/test_base/galaxy/project_galaxy_test_base.py index 8d88f8a75bf..0956016a136 100644 --- a/packages/test_base/galaxy/project_galaxy_test_base.py +++ b/packages/test_base/galaxy/project_galaxy_test_base.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-test-base" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/test_driver/galaxy/project_galaxy_test_driver.py b/packages/test_driver/galaxy/project_galaxy_test_driver.py index 5a2ba811087..8592443ed34 100644 --- a/packages/test_driver/galaxy/project_galaxy_test_driver.py +++ b/packages/test_driver/galaxy/project_galaxy_test_driver.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-test-driver" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/test_selenium/galaxy/project_galaxy_test_selenium.py b/packages/test_selenium/galaxy/project_galaxy_test_selenium.py index 5a343542a7b..2128b46be26 100644 --- a/packages/test_selenium/galaxy/project_galaxy_test_selenium.py +++ b/packages/test_selenium/galaxy/project_galaxy_test_selenium.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-test-selenium" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/tool_util/galaxy/project_galaxy_tool_util.py b/packages/tool_util/galaxy/project_galaxy_tool_util.py index 7583abb6666..9e5ec1340e8 100644 --- a/packages/tool_util/galaxy/project_galaxy_tool_util.py +++ b/packages/tool_util/galaxy/project_galaxy_tool_util.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-tool-util" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/util/galaxy/project_galaxy_util.py b/packages/util/galaxy/project_galaxy_util.py index 3d19ad42586..1e3a594ab85 100644 --- a/packages/util/galaxy/project_galaxy_util.py +++ b/packages/util/galaxy/project_galaxy_util.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-util" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/web_framework/galaxy/project_galaxy_web_framework.py b/packages/web_framework/galaxy/project_galaxy_web_framework.py index c46bae229be..6eab0d76698 100644 --- a/packages/web_framework/galaxy/project_galaxy_web_framework.py +++ b/packages/web_framework/galaxy/project_galaxy_web_framework.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-web-framework" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/web_stack/galaxy/project_galaxy_web_stack.py b/packages/web_stack/galaxy/project_galaxy_web_stack.py index ad10d302d3e..dbeea47d0b6 100644 --- a/packages/web_stack/galaxy/project_galaxy_web_stack.py +++ b/packages/web_stack/galaxy/project_galaxy_web_stack.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-web-stack" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" diff --git a/packages/webapps/galaxy/project_galaxy_webapps.py b/packages/webapps/galaxy/project_galaxy_webapps.py index 529d30c7ac3..0815173c1b7 100644 --- a/packages/webapps/galaxy/project_galaxy_webapps.py +++ b/packages/webapps/galaxy/project_galaxy_webapps.py @@ -1,4 +1,4 @@ -__version__ = "22.1.1" +__version__ = "22.1.2.dev0" PROJECT_NAME = "galaxy-webapps" PROJECT_OWNER = PROJECT_USERAME = "galaxyproject" From 88a986c578000ef9296c601743259abfa210ae81 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Mon, 22 Aug 2022 23:14:27 +0200 Subject: [PATCH 389/553] Update version to 22.05.1.dev0 --- lib/galaxy/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/version.py b/lib/galaxy/version.py index 0d5eaa659ed..1e087e43c52 100644 --- a/lib/galaxy/version.py +++ b/lib/galaxy/version.py @@ -1,3 +1,3 @@ VERSION_MAJOR = "22.05" -VERSION_MINOR = "rc1" +VERSION_MINOR = "1.dev0" VERSION = VERSION_MAJOR + (f".{VERSION_MINOR}" if VERSION_MINOR else "") From 36f049410bd12d585df9e36ecb56f0099933188b Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Mon, 22 Aug 2022 23:14:31 +0200 Subject: [PATCH 390/553] Update version to 22.05.1 --- lib/galaxy/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/version.py b/lib/galaxy/version.py index 1e087e43c52..5c76a9fff31 100644 --- a/lib/galaxy/version.py +++ b/lib/galaxy/version.py @@ -1,3 +1,3 @@ VERSION_MAJOR = "22.05" -VERSION_MINOR = "1.dev0" +VERSION_MINOR = "1" VERSION = VERSION_MAJOR + (f".{VERSION_MINOR}" if VERSION_MINOR else "") From 5ebbca6c86bf2cfedefc19a2a3088f323ba08aea Mon Sep 17 00:00:00 2001 From: Ahmed Awan Date: Mon, 22 Aug 2022 18:03:21 -0400 Subject: [PATCH 391/553] Improving Window Manager tour so that it waits for state=ok --- config/plugins/tours/core.windows.yaml | 38 ++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/config/plugins/tours/core.windows.yaml b/config/plugins/tours/core.windows.yaml index 7d3268c10bd..8a290be49ff 100644 --- a/config/plugins/tours/core.windows.yaml +++ b/config/plugins/tours/core.windows.yaml @@ -6,6 +6,9 @@ tags: - "UI" - "visualization" +requirements: + - new_history + steps: - content: "This short tour will walk you through Galaxy's Window Manager feature" @@ -17,7 +20,11 @@ steps: intro: "We will be using the paste feature to create a new dataset." postclick: true - - element: ".upload-text-content" + - element: "#upload-row-0 .upload-title" + intro: "Giving the dataset a name" + textinsert: First Dataset + + - element: "#upload-row-0 .upload-text-content" intro: "...and paste content into the text area field." textinsert: | 1 0.039 0.000 @@ -39,6 +46,23 @@ steps: - ".upload-space_to_tab" - ".popover-close" + - element: "#btn-new" + intro: "We will create another dataset, so that we can try the Window Manager on multiple datasets." + postclick: true + + - element: "#upload-row-1 .upload-title" + intro: "Giving the second dataset a name" + textinsert: Second Dataset + + - element: "#upload-row-1 .upload-text-content" + intro: "...and paste content into the text area field again." + textinsert: | + 1 0.069 0.000 + 2 0.711 0.000 + 3 0.999 0.000 + 4 0.420 0.000 + 5 0.190 0.000 + - element: "#btn-start" intro: "Upload the data into your Galaxy history." postclick: true @@ -52,9 +76,9 @@ steps: postclick: true - element: "#right" - intro: "This is your history. It contains all datasets you are currently working with including our uploaded table." - - - element: "#current-history-panel div.content-item .display-btn" + intro: "This is your history. It contains our two tables being uploaded." + + - component: history_panel.item(hid=1,state=ok).display_button intro: "Clicking the eye-icon usually displays a dataset in the center panel." postclick: true @@ -62,4 +86,8 @@ steps: intro: "However while using the Window Manager, the dataset will be shown as resizable window." - title: "Done." - intro: "You have created a Window. Click on the background and select more datasets." + intro: "You have created a Window. Click on eye-icon for the other dataset to view it in a window as well." + + - component: history_panel.item(hid=2,state=ok).display_button + intro: "View the second dataset in a window as well." + postclick: true From f3eb7ba638590195b497710637b45f753f57af8b Mon Sep 17 00:00:00 2001 From: Ahmed Awan Date: Mon, 22 Aug 2022 18:36:18 -0400 Subject: [PATCH 392/553] Creating new history for Window Manager tour --- .../History/CurrentHistory/HistoryNavigation.vue | 1 + config/plugins/tours/core.windows.yaml | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/client/src/components/History/CurrentHistory/HistoryNavigation.vue b/client/src/components/History/CurrentHistory/HistoryNavigation.vue index 94213a5bb8c..c957e15d50c 100644 --- a/client/src/components/History/CurrentHistory/HistoryNavigation.vue +++ b/client/src/components/History/CurrentHistory/HistoryNavigation.vue @@ -8,6 +8,7 @@ Galaxy's Window Manager feature" + - element: "#current-history-panel .create-hist-btn" + intro: "Before using the Window Manager, we will create a new history for this tour." + postclick: true + - element: "#tool-panel-upload-button" - intro: "Before using the Window Manager, we will upload some tabular data." + intro: "Now, we will upload some tabular data into our new history." postclick: true - element: "#btn-new" From 8a8acc625fcea935f0c7ca178b993de2caacc579 Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Tue, 23 Aug 2022 13:42:05 +0200 Subject: [PATCH 393/553] Fix refactor action dropping outputs on subworkflow connection I thought it would be cleaner to make a distinction between the output name and the output label when reasoning about a subworkflow step in the context of a parent workflow (https://github.com/galaxyproject/galaxy/pull/14473/commits/b0727be9e0b096a2dacacb767a1f4ac0fc3e6540#diff-a50bcc5c08ade11249449c4100ea8c286727df601b52a5b9588eb2a385d97da7R543), in case we'd later want to do something with the label. I don't think I thought about this correctly though, and it breaks connections between steps that were made by referencing the subworkflow's output name. This wasn't necessary for the main goal of https://github.com/galaxyproject/galaxy/pull/14473, so I'm partially reverting that here. Fixes https://github.com/galaxyproject/planemo/pull/1262#issuecomment-1223874571 --- lib/galaxy/workflow/modules.py | 15 ++++++--------- lib/galaxy/workflow/refactor/execute.py | 2 +- lib/galaxy_test/selenium/test_workflow_editor.py | 4 ++-- test/unit/workflows/test_modules.py | 4 ++-- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py index 635fef8dec0..f24120b6863 100644 --- a/lib/galaxy/workflow/modules.py +++ b/lib/galaxy/workflow/modules.py @@ -540,7 +540,12 @@ class SubWorkflowModule(WorkflowModule): data_output["name"] == workflow_output["output_name"] or data_output_uuid == workflow_output_uuid ): - data_output["label"] = label + change_datatype_action = step["post_job_actions"].get( + f"ChangeDatatypeAction{data_output['name']}" + ) + if change_datatype_action: + self.post_job_actions[f"ChangeDatatypeAction{label}"] = change_datatype_action + data_output["name"] = label # That's the right data_output break else: @@ -551,15 +556,7 @@ class SubWorkflowModule(WorkflowModule): f"Workflow output '{workflow_output['output_name']}' defined, but not listed among data outputs" ) continue - post_job_actions = step["post_job_actions"].copy() - change_datatype_action = post_job_actions.pop(f"ChangeDatatypeAction{data_output['name']}", None) - # Post job actions are referred to by tool output name, - # but that's not guaranteed to be unique within a workflow, - # but the label is unique. - if change_datatype_action: - post_job_actions[f"ChangeDatatypeAction{label}"] = change_datatype_action - self.post_job_actions.update(post_job_actions) outputs.append(data_output) return outputs diff --git a/lib/galaxy/workflow/refactor/execute.py b/lib/galaxy/workflow/refactor/execute.py index 76681506b95..2ba45ffc5d2 100644 --- a/lib/galaxy/workflow/refactor/execute.py +++ b/lib/galaxy/workflow/refactor/execute.py @@ -517,7 +517,7 @@ class WorkflowRefactorExecutor: # TODO: find workflow outputs that need to be dropped and report them upgrade_inputs = step.module.get_all_inputs() upgrade_outputs = step.module.get_all_outputs() - upgrade_output_names = [u.get("label") or u["name"] for u in upgrade_outputs] + upgrade_output_names = {u["name"] for u in upgrade_outputs} upgrade_order_index = step_def["id"] upgrade_label = step_def.get("label") all_input_connections = step_def.get("input_connections") diff --git a/lib/galaxy_test/selenium/test_workflow_editor.py b/lib/galaxy_test/selenium/test_workflow_editor.py index 8a4b5cf139a..f39b4357011 100644 --- a/lib/galaxy_test/selenium/test_workflow_editor.py +++ b/lib/galaxy_test/selenium/test_workflow_editor.py @@ -587,8 +587,8 @@ steps: node.output_data_row(output_name="workflow_output", extension="bam").wait_for_visible() # Move canvas, so terminals are in viewport self.move_center_of_canvas(xoffset=100, yoffset=100) - self.workflow_editor_connect("nested_workflow#out_file1", "metadata_bam#input_bam") - self.assert_connected("nested_workflow#out_file1", "metadata_bam#input_bam") + self.workflow_editor_connect("nested_workflow#workflow_output", "metadata_bam#input_bam") + self.assert_connected("nested_workflow#workflow_output", "metadata_bam#input_bam") @selenium_test def test_editor_duplicate_node(self): diff --git a/test/unit/workflows/test_modules.py b/test/unit/workflows/test_modules.py index b72ee0c1e9e..77ad7802146 100644 --- a/test/unit/workflows/test_modules.py +++ b/test/unit/workflows/test_modules.py @@ -244,9 +244,9 @@ def test_subworkflow_new_outputs(): outputs = subworkflow_module.get_data_outputs() assert len(outputs) == 2, len(outputs) output1, output2 = outputs - assert output1["label"] == "out1" + assert output1["name"] == "out1" assert output1["extensions"] == ["input"] - assert output2["label"] == "4:out_file1", output2["label"] + assert output2["name"] == "4:out_file1", output2["name"] class MapOverTestCase(NamedTuple): From 34c4946ae0483b1ab821f6d0f976179ea3815735 Mon Sep 17 00:00:00 2001 From: Laila Los <44241786+ElectronicBlueberry@users.noreply.github.com> Date: Tue, 23 Aug 2022 15:13:34 +0200 Subject: [PATCH 394/553] fix dataset buttons inconsistent hover --- client/src/components/History/Content/ContentItem.vue | 2 +- client/src/style/scss/base.scss | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/client/src/components/History/Content/ContentItem.vue b/client/src/components/History/Content/ContentItem.vue index 89701edd021..dba032d24ea 100644 --- a/client/src/components/History/Content/ContentItem.vue +++ b/client/src/components/History/Content/ContentItem.vue @@ -224,7 +224,7 @@ export default { }, }; -