summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2016-03-14 04:55:30 -0700
committerTodd Gamblin <tgamblin@llnl.gov>2016-03-14 04:55:30 -0700
commit003fd4d834d3e06ea89c7f3c2fa13241b0730f06 (patch)
tree626fa242eaa85b97663a83f33be1ad0a48f1f7dc /lib
parent1179217334386984211645d508d8e02692297183 (diff)
downloadspack-003fd4d834d3e06ea89c7f3c2fa13241b0730f06.tar.gz
spack-003fd4d834d3e06ea89c7f3c2fa13241b0730f06.tar.bz2
spack-003fd4d834d3e06ea89c7f3c2fa13241b0730f06.tar.xz
spack-003fd4d834d3e06ea89c7f3c2fa13241b0730f06.zip
Optimize __eq__ and __ne__ in key_ordering
- use `is` when possible before calling `_cmp_key()`
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/llnl/util/lang.py4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py
index 1c4d1ed623..13d301f84e 100644
--- a/lib/spack/llnl/util/lang.py
+++ b/lib/spack/llnl/util/lang.py
@@ -235,11 +235,11 @@ def key_ordering(cls):
if not has_method(cls, '_cmp_key'):
raise TypeError("'%s' doesn't define _cmp_key()." % cls.__name__)
- setter('__eq__', lambda s,o: o is not None and s._cmp_key() == o._cmp_key())
+ setter('__eq__', lambda s,o: (s is o) or (o is not None and s._cmp_key() == o._cmp_key()))
setter('__lt__', lambda s,o: o is not None and s._cmp_key() < o._cmp_key())
setter('__le__', lambda s,o: o is not None and s._cmp_key() <= o._cmp_key())
- setter('__ne__', lambda s,o: o is None or s._cmp_key() != o._cmp_key())
+ setter('__ne__', lambda s,o: (s is not o) and (o is None or s._cmp_key() != o._cmp_key()))
setter('__gt__', lambda s,o: o is None or s._cmp_key() > o._cmp_key())
setter('__ge__', lambda s,o: o is None or s._cmp_key() >= o._cmp_key())