Update HACKING.rst per recent changes
Added "is not" usage with examples * https://review.openstack.org/#/c/20865/ Fixed "not in" usage description * https://review.openstack.org/#/c/20875/ Fixed some "not X in Y" corner cases. Change-Id: I7534ef73e6fd525fd8f4bee594a4b37524699c08
This commit is contained in:
13
HACKING.rst
13
HACKING.rst
@@ -28,16 +28,23 @@ General
|
|||||||
|
|
||||||
mylist = Foo().list() # OKAY, does not shadow built-in
|
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 not X in Y: # BAD, hard to understand
|
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, intended behavior is ambiguous
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if X not in Y: # OKAY, intuitive
|
if X not in Y: # OKAY, intuitive
|
||||||
pass
|
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
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class JsonFilter(filters.BaseHostFilter):
|
|||||||
if len(args) < 2:
|
if len(args) < 2:
|
||||||
return False
|
return False
|
||||||
if op is operator.contains:
|
if op is operator.contains:
|
||||||
bad = not args[0] in args[1:]
|
bad = args[0] not in args[1:]
|
||||||
else:
|
else:
|
||||||
bad = [arg for arg in args[1:]
|
bad = [arg for arg in args[1:]
|
||||||
if not op(args[0], arg)]
|
if not op(args[0], arg)]
|
||||||
|
|||||||
Reference in New Issue
Block a user