From e06bf5a32052d6cf474cb5c3d195f632ffe8b9e4 Mon Sep 17 00:00:00 2001 From: Marius van den Beek Date: Fri, 18 Dec 2015 12:00:41 +0100 Subject: [PATCH 1/4] Allow installation of different repositories with the same name in a single install transaction. --- .../repository_dependency_manager.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py b/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py index 04345cad9a4..7c76a337e09 100644 --- a/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py +++ b/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py @@ -414,6 +414,21 @@ class RepositoryDependencyInstallManager( object ): all_repo_info_dicts_keys = [ d.keys()[ 0 ] for d in all_repo_info_dicts ] if required_repo_info_dict_key not in all_repo_info_dicts_keys: all_repo_info_dicts.append( required_repo_info_dict ) + else: + # required_repo_info_dict_key corresponds to the repo name. + # A single install transaction might require the installation of the same repo by a different owner. + # Therefore, if required_repo_info_dict_key is already in all_repo_info_dicts, + # check that the tool id is already present. If no it is not, we are dealing with the same repo name, + # but a different owner/changeset revision or version and we add the repo to the list of repos to be installed. + tool_id = required_repo_info_dict[ required_repo_info_dict_key ][ 1 ] + is_present = False + for repo_info_dict in all_repo_info_dicts: + for k, v in repo_info_dict.items(): + if required_repo_info_dict_key==k: + if tool_id == v[1]: + is_present = True + if not is_present: + all_repo_info_dicts.append( required_repo_info_dict ) all_required_repo_info_dict[ 'all_repo_info_dicts' ] = all_repo_info_dicts return all_required_repo_info_dict From c6fbf987d2c4422eda793fa817f0ce83931d0119 Mon Sep 17 00:00:00 2001 From: Marius van den Beek Date: Fri, 18 Dec 2015 12:22:00 +0100 Subject: [PATCH 2/4] Whitespaces around operator. --- .../repository_dependencies/repository_dependency_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py b/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py index 7c76a337e09..18d45be4a69 100644 --- a/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py +++ b/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py @@ -424,7 +424,7 @@ class RepositoryDependencyInstallManager( object ): is_present = False for repo_info_dict in all_repo_info_dicts: for k, v in repo_info_dict.items(): - if required_repo_info_dict_key==k: + if required_repo_info_dict_key == k: if tool_id == v[1]: is_present = True if not is_present: From 2c657b98e2945f48e1339f229e7de4de9f40fe4c Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 18 Dec 2015 15:08:15 +0100 Subject: [PATCH 3/4] Break out of loop once we know the repo is already in all_repo_info_dicts. --- .../repository_dependencies/repository_dependency_manager.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py b/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py index 18d45be4a69..84ecad9c750 100644 --- a/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py +++ b/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py @@ -416,7 +416,8 @@ class RepositoryDependencyInstallManager( object ): all_repo_info_dicts.append( required_repo_info_dict ) else: # required_repo_info_dict_key corresponds to the repo name. - # A single install transaction might require the installation of the same repo by a different owner. + # A single install transaction might require the installation of 2 or more repos + # with the same repo name but different owners or versions. # Therefore, if required_repo_info_dict_key is already in all_repo_info_dicts, # check that the tool id is already present. If no it is not, we are dealing with the same repo name, # but a different owner/changeset revision or version and we add the repo to the list of repos to be installed. @@ -427,6 +428,7 @@ class RepositoryDependencyInstallManager( object ): if required_repo_info_dict_key == k: if tool_id == v[1]: is_present = True + break if not is_present: all_repo_info_dicts.append( required_repo_info_dict ) all_required_repo_info_dict[ 'all_repo_info_dicts' ] = all_repo_info_dicts From 9752fa76c54e927918560d474df4fbae6551d4ca Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 18 Dec 2015 15:11:17 +0100 Subject: [PATCH 4/4] Typo --- .../repository_dependencies/repository_dependency_manager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py b/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py index 84ecad9c750..b03417da16f 100644 --- a/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py +++ b/lib/tool_shed/galaxy_install/repository_dependencies/repository_dependency_manager.py @@ -419,7 +419,7 @@ class RepositoryDependencyInstallManager( object ): # A single install transaction might require the installation of 2 or more repos # with the same repo name but different owners or versions. # Therefore, if required_repo_info_dict_key is already in all_repo_info_dicts, - # check that the tool id is already present. If no it is not, we are dealing with the same repo name, + # check that the tool id is already present. If it is not, we are dealing with the same repo name, # but a different owner/changeset revision or version and we add the repo to the list of repos to be installed. tool_id = required_repo_info_dict[ required_repo_info_dict_key ][ 1 ] is_present = False