summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Schubert <ben.c.schubert@gmail.com>2019-02-15 09:35:40 +0000
committerBenjamin Schubert <ben.c.schubert@gmail.com>2019-02-15 09:35:40 +0000
commit45be9c78d577ac77b08040a5269670dd91774399 (patch)
treea5b8113b1978ca0d079b26f924ba7ea78c14fd7d
parent51dae74715c2934d8770dc92c60925f32295a4e0 (diff)
downloadbuildstream-bschubert/set-as-set.tar.gz
Use sets when checking for existence of an elementbschubert/set-as-set
-rw-r--r--buildstream/_loader/loader.py12
-rw-r--r--buildstream/_profile.py10
-rw-r--r--buildstream/plugins/sources/tar.py4
3 files changed, 11 insertions, 15 deletions
diff --git a/buildstream/_loader/loader.py b/buildstream/_loader/loader.py
index 17d7c63fb..729b36ff5 100644
--- a/buildstream/_loader/loader.py
+++ b/buildstream/_loader/loader.py
@@ -284,17 +284,17 @@ class Loader():
def _check_circular_deps(self, element, check_elements=None, validated=None, sequence=None):
if check_elements is None:
- check_elements = {}
+ check_elements = set()
if validated is None:
- validated = {}
+ validated = set()
if sequence is None:
sequence = []
# Skip already validated branches
- if validated.get(element) is not None:
+ if element in validated:
return
- if check_elements.get(element) is not None:
+ if element in check_elements:
# Create `chain`, the loop of element dependencies from this
# element back to itself, by trimming everything before this
# element from the sequence under consideration.
@@ -306,7 +306,7 @@ class Loader():
.format(element.full_name, " -> ".join(chain)))
# Push / Check each dependency / Pop
- check_elements[element] = True
+ check_elements.add(element)
sequence.append(element.full_name)
for dep in element.dependencies:
dep.element._loader._check_circular_deps(dep.element, check_elements, validated, sequence)
@@ -314,7 +314,7 @@ class Loader():
sequence.pop()
# Eliminate duplicate paths
- validated[element] = True
+ validated.add(element)
# _sort_dependencies():
#
diff --git a/buildstream/_profile.py b/buildstream/_profile.py
index 82902b03b..f29e070c4 100644
--- a/buildstream/_profile.py
+++ b/buildstream/_profile.py
@@ -26,7 +26,7 @@ import datetime
import time
# Track what profile topics are active
-active_topics = {}
+active_topics = set()
active_profiles = {}
initialized = False
@@ -144,14 +144,10 @@ def profile_init():
if setting:
topics = setting.split(':')
for topic in topics:
- active_topics[topic] = True
+ active_topics.add(topic)
initialized = True
def profile_enabled(topic):
profile_init()
- if active_topics.get(topic):
- return True
- if active_topics.get(Topics.ALL):
- return True
- return False
+ return topic in active_topics or Topics.ALL in active_topics
diff --git a/buildstream/plugins/sources/tar.py b/buildstream/plugins/sources/tar.py
index d4e30d9ba..31dc17497 100644
--- a/buildstream/plugins/sources/tar.py
+++ b/buildstream/plugins/sources/tar.py
@@ -154,7 +154,7 @@ class TarSource(DownloadableFileSource):
# directory paths for the archived files.
def _list_tar_paths(self, tar):
- visited = {}
+ visited = set()
for member in tar.getmembers():
# Remove any possible leading './', offer more consistent behavior
@@ -170,7 +170,7 @@ class TarSource(DownloadableFileSource):
for i in range(len(components) - 1):
dir_component = '/'.join([components[j] for j in range(i + 1)])
if dir_component not in visited:
- visited[dir_component] = True
+ visited.add(dir_component)
try:
# Dont yield directory members which actually do
# exist in the archive