Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(584)

Unified Diff: boto/jsonresponse.py

Issue 8386013: Merging in latest boto. (Closed) Base URL: svn://svn.chromium.org/boto
Patch Set: Redoing vendor drop by deleting and then merging. Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « boto/iam/summarymap.py ('k') | boto/manage/cmdshell.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: boto/jsonresponse.py
diff --git a/boto/jsonresponse.py b/boto/jsonresponse.py
index beb50ce5a1809ddfa45de66a107a11325815d425..94338159847d9bba029bbcc68bb81fd2bb6acefe 100644
--- a/boto/jsonresponse.py
+++ b/boto/jsonresponse.py
@@ -55,7 +55,8 @@ class Element(dict):
def __init__(self, connection=None, element_name=None,
stack=None, parent=None, list_marker=('Set',),
- item_marker=('member', 'item')):
+ item_marker=('member', 'item'),
+ pythonize_name=False):
dict.__init__(self)
self.connection = connection
self.element_name = element_name
@@ -65,6 +66,7 @@ class Element(dict):
self.stack = []
else:
self.stack = stack
+ self.pythonize_name = pythonize_name
self.parent = parent
def __getattr__(self, key):
@@ -79,19 +81,25 @@ class Element(dict):
pass
raise AttributeError
+ def get_name(self, name):
+ if self.pythonize_name:
+ name = utils.pythonize_name(name)
+ return name
+
def startElement(self, name, attrs, connection):
self.stack.append(name)
for lm in self.list_marker:
if name.endswith(lm):
l = ListElement(self.connection, name, self.list_marker,
- self.item_marker)
- self[name] = l
+ self.item_marker, self.pythonize_name)
+ self[self.get_name(name)] = l
return l
if len(self.stack) > 0:
element_name = self.stack[-1]
e = Element(self.connection, element_name, self.stack, self,
- self.list_marker, self.item_marker)
- self[element_name] = e
+ self.list_marker, self.item_marker,
+ self.pythonize_name)
+ self[self.get_name(element_name)] = e
return (element_name, e)
else:
return None
@@ -102,28 +110,37 @@ class Element(dict):
value = value.strip()
if value:
if isinstance(self.parent, Element):
- self.parent[name] = value
+ self.parent[self.get_name(name)] = value
elif isinstance(self.parent, ListElement):
self.parent.append(value)
class ListElement(list):
def __init__(self, connection=None, element_name=None,
- list_marker=['Set'], item_marker=('member', 'item')):
+ list_marker=['Set'], item_marker=('member', 'item'),
+ pythonize_name=False):
list.__init__(self)
self.connection = connection
self.element_name = element_name
self.list_marker = list_marker
self.item_marker = item_marker
+ self.pythonize_name = pythonize_name
+
+ def get_name(self, name):
+ if self.pythonize_name:
+ name = utils.pythonize_name(name)
+ return name
def startElement(self, name, attrs, connection):
for lm in self.list_marker:
if name.endswith(lm):
- l = ListElement(self.connection, name, self.item_marker)
- setattr(self, name, l)
+ l = ListElement(self.connection, name, self.item_marker,
+ pythonize_name=self.pythonize_name)
+ setattr(self, self.get_name(name), l)
return l
if name in self.item_marker:
- e = Element(self.connection, name, parent=self)
+ e = Element(self.connection, name, parent=self,
+ pythonize_name=self.pythonize_name)
self.append(e)
return e
else:
@@ -140,4 +157,4 @@ class ListElement(list):
for e in empty:
self.remove(e)
else:
- setattr(self, name, value)
+ setattr(self, self.get_name(name), value)
« no previous file with comments | « boto/iam/summarymap.py ('k') | boto/manage/cmdshell.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698