devserver: eliminate mutable default arguments
Fixes a potential error due to Python's declaration-time binding of
default arguments. In essence, the rule of thumb is not to use default
values that are mutable objects.
BUG=None
TEST=Unittests; devserver starts and runs
Change-Id: Ib5a45f2f500c6d73eb94d0342f834a90097cb058
Reviewed-on: https://gerrit.chromium.org/gerrit/35416
Reviewed-by: Chris Sosa <sosa@chromium.org>
Commit-Ready: Gilad Arnold <garnold@chromium.org>
Tested-by: Gilad Arnold <garnold@chromium.org>
diff --git a/devserver.py b/devserver.py
index 711611b..1f3320f 100755
--- a/devserver.py
+++ b/devserver.py
@@ -187,7 +187,7 @@
return hasattr(name, 'exposed') and name.exposed
-def _GetExposedMethod(root, nested_member, ignored=[]):
+def _GetExposedMethod(root, nested_member, ignored=None):
"""Returns a CherryPy-exposed method, if such exists.
Args:
@@ -199,13 +199,13 @@
the |root| object, if the function is exposed and not ignored; None
otherwise.
"""
- method = (nested_member not in ignored and
+ method = (not (ignored and nested_member in ignored) and
_GetRecursiveMemberObject(root, nested_member.split('/')))
if (method and type(method) == types.FunctionType and _IsExposed(method)):
return method
-def _FindExposedMethods(root, prefix, unlisted=[]):
+def _FindExposedMethods(root, prefix, unlisted=None):
"""Finds exposed CherryPy methods.
Args:
@@ -218,7 +218,7 @@
method_list = []
for member in sorted(root.__class__.__dict__.keys()):
prefixed_member = prefix + '/' + member if prefix else member
- if prefixed_member in unlisted:
+ if unlisted and prefixed_member in unlisted:
continue
member_obj = root.__class__.__dict__[member]
if _IsExposed(member_obj):