Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(117)

Unified Diff: tools/telemetry/catapult_base/dependency_manager/dependency_info.py

Issue 1391403003: Add priority groups to local paths in the dependency manager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/catapult_base/dependency_manager/dependency_info.py
diff --git a/tools/telemetry/catapult_base/dependency_manager/dependency_info.py b/tools/telemetry/catapult_base/dependency_manager/dependency_info.py
index c2c860281add26c8af299d536c77bda58a934f60..4714c23ce40c14d6a191f5dcea532aa0396aa1fa 100644
--- a/tools/telemetry/catapult_base/dependency_manager/dependency_info.py
+++ b/tools/telemetry/catapult_base/dependency_manager/dependency_info.py
@@ -2,7 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-
class DependencyInfo(object):
def __init__(self, dependency, platform, config_file, cs_bucket=None,
cs_hash=None, download_path=None, cs_remote_path=None,
@@ -40,13 +39,13 @@ class DependencyInfo(object):
self._dependency = dependency
self._platform = platform
self._config_files = [config_file]
- self._local_paths = local_paths or []
+ self._local_paths = self._ParseLocalPaths(local_paths)
nednguyen 2015/10/09 16:20:07 self._local_paths_groups
aiolos (Not reviewing) 2015/10/09 16:52:00 See my response in the comment on _ParseLocalPaths
self._download_path = download_path
self._cs_remote_path = cs_remote_path
self._cs_bucket = cs_bucket
self._cs_hash = cs_hash
self._version_in_cs = version_in_cs
- self.VerifyCloudStorageInfo()
+ self._VerifyCloudStorageInfo()
def Update(self, new_dep_info):
"""Add the information from |new_dep_info| to this instance.
@@ -74,9 +73,16 @@ class DependencyInfo(object):
self._cs_hash = new_dep_info.cs_hash
self._version_in_cs = new_dep_info.version_in_cs
if new_dep_info.local_paths:
- for path in new_dep_info.local_paths:
- if path not in self._local_paths:
- self._local_paths.append(path)
+ for priority_group in new_dep_info.local_paths:
+ group_list = []
+ for path in priority_group:
+ if not self.IsPathInLocalPaths(path):
+ group_list.append(path)
+ if group_list:
+ self._local_paths.append(group_list)
+
+ def IsPathInLocalPaths(self, path):
+ return any(path in priority_group for priority_group in self._local_paths)
@property
def dependency(self):
@@ -116,10 +122,22 @@ class DependencyInfo(object):
@property
def has_cs_info(self):
- self.VerifyCloudStorageInfo()
+ self._VerifyCloudStorageInfo()
return self.cs_hash
- def VerifyCloudStorageInfo(self):
+ @staticmethod
+ def _ParseLocalPaths(local_paths):
nednguyen 2015/10/09 16:20:07 We should restrict the type of local_paths to list
aiolos (Not reviewing) 2015/10/09 16:52:00 I'm not sure why that's surprising, since priority
nednguyen 2015/10/09 17:04:04 The fact that priority groups is an optional featu
+ if not local_paths:
+ return []
+ list_of_lists = []
+ for element in local_paths:
+ if isinstance(element, basestring):
+ list_of_lists.append([element])
+ else:
+ list_of_lists.append(element)
+ return list_of_lists
+
+ def _VerifyCloudStorageInfo(self):
"""Ensure either all or none of the needed remote information is specified.
"""
if ((self.cs_bucket or self.cs_remote_path or self.download_path or

Powered by Google App Engine
This is Rietveld 408576698