From 66e8523e1452b03a012be57045ef9cce3614a829 Mon Sep 17 00:00:00 2001 From: Cody Balos Date: Mon, 13 Jan 2025 16:43:39 -0800 Subject: [PATCH] add long_spec property to get fully enumerated spec string (#48389) --- lib/spack/spack/spec.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 06ffbb8327f..731ed343441 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -2052,6 +2052,20 @@ def traverse_edges( visited=visited, ) + @property + def long_spec(self): + """Returns a string of the spec with the dependencies completely + enumerated.""" + root_str = [self.format()] + sorted_dependencies = sorted( + self.traverse(root=False), key=lambda x: (x.name, x.abstract_hash) + ) + sorted_dependencies = [ + d.format("{edge_attributes} " + DEFAULT_FORMAT) for d in sorted_dependencies + ] + spec_str = " ^".join(root_str + sorted_dependencies) + return spec_str.strip() + @property def short_spec(self): """Returns a version of the spec with the dependencies hashed @@ -4165,15 +4179,7 @@ def __str__(self): if not self._dependencies: return self.format() - root_str = [self.format()] - sorted_dependencies = sorted( - self.traverse(root=False), key=lambda x: (x.name, x.abstract_hash) - ) - sorted_dependencies = [ - d.format("{edge_attributes} " + DEFAULT_FORMAT) for d in sorted_dependencies - ] - spec_str = " ^".join(root_str + sorted_dependencies) - return spec_str.strip() + return self.long_spec @property def colored_str(self):