summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorHarmen Stoppels <harmenstoppels@gmail.com>2022-03-08 10:50:48 +0100
committerGitHub <noreply@github.com>2022-03-08 10:50:48 +0100
commita39a6c4ea7863031d1c89fea05b3b3be76e25f2f (patch)
tree6c51c7a5594eb8148acc9a629a328eacdd56179b /lib
parent4b5e07114118b14a08e70f56b3515b5f65aa8c56 (diff)
downloadspack-a39a6c4ea7863031d1c89fea05b3b3be76e25f2f.tar.gz
spack-a39a6c4ea7863031d1c89fea05b3b3be76e25f2f.tar.bz2
spack-a39a6c4ea7863031d1c89fea05b3b3be76e25f2f.tar.xz
spack-a39a6c4ea7863031d1c89fea05b3b3be76e25f2f.zip
version.py: set is_commit in constructor (#29369)
Speeds up comparison on `Version` by ~2.5x, e.g. ```python In [1]: v = spack.version.Version('1.0.0'); w = spack.version.Version('1.0.2') In [2]: %timeit v < w 1.47 µs ± 5.59 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) 535 ns ± 1.75 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each) ```
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/version.py13
1 files changed, 3 insertions, 10 deletions
diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py
index 385f8f6c03..9108b1feb5 100644
--- a/lib/spack/spack/version.py
+++ b/lib/spack/spack/version.py
@@ -167,7 +167,7 @@ class VersionStrComponent(object):
class Version(object):
"""Class to represent versions"""
- __slots__ = ['version', 'separators', 'string', 'commit_lookup']
+ __slots__ = ['version', 'separators', 'string', 'is_commit', 'commit_lookup']
def __init__(self, string):
if not isinstance(string, str):
@@ -189,6 +189,8 @@ class Version(object):
)
self.separators = tuple(m[2] for m in segments)
+ self.is_commit = len(self.string) == 40 and COMMIT_VERSION.match(self.string)
+
def _cmp(self, other_lookups=None):
commit_lookup = self.commit_lookup or other_lookups
@@ -206,15 +208,6 @@ class Version(object):
return self.version
@property
- def is_commit(self):
- """
- Determine if the original string is referencing a commit.
- """
- if self.string in infinity_versions:
- return False
- return COMMIT_VERSION.match(self.string) is not None
-
- @property
def dotted(self):
"""The dotted representation of the version.