From 631247ffac33270ff68c8721e36df4d0542f416c Mon Sep 17 00:00:00 2001 From: Zhongyue Luo Date: Mon, 4 Feb 2013 11:18:43 +0800 Subject: Update HACKING.rst per recent changes Added "is not" usage with examples Fixed "not in" usage description https://review.openstack.org/#/c/20576/ and https://review.openstack.org/#/c/20879/ Fixes a previous "not X in Y" grep corner case Change-Id: I92ae642887de734a8562a528003d8092f5ff27d4 --- HACKING.rst | 13 ++++++++++--- openstack/common/scheduler/filters/json_filter.py | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/HACKING.rst b/HACKING.rst index 3f6a3ed..3cea316 100644 --- a/HACKING.rst +++ b/HACKING.rst @@ -26,16 +26,23 @@ General mylist = Foo().list() # OKAY, does not shadow built-in +- Use the "is not" operator when testing for unequal identities. Example:: -- Use the "not in" operator for collection membership evaluation. Example:: + if not X is Y: # BAD, intended behavior is ambiguous + pass + + if X is not Y: # OKAY, intuitive + pass + +- Use the "not in" operator for evaluating membership in a collection. Example:: - if not X in Y: # BAD, hard to understand + if not X in Y: # BAD, intended behavior is ambiguous pass if X not in Y: # OKAY, intuitive pass - if not (X in Y or X is Z): # OKAY, still better than all those 'not's + if not (X in Y or X in Z): # OKAY, still better than all those 'not's pass diff --git a/openstack/common/scheduler/filters/json_filter.py b/openstack/common/scheduler/filters/json_filter.py index 273d55e..9118bc2 100644 --- a/openstack/common/scheduler/filters/json_filter.py +++ b/openstack/common/scheduler/filters/json_filter.py @@ -32,7 +32,7 @@ class JsonFilter(filters.BaseHostFilter): if len(args) < 2: return False if op is operator.contains: - bad = not args[0] in args[1:] + bad = args[0] not in args[1:] else: bad = [arg for arg in args[1:] if not op(args[0], arg)] -- cgit