Skip to content

Commit e322609

Browse files
committed
Recursively walk subclass tree to build code->exception class mapping.
1 parent 89788fb commit e322609

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

gcloud/storage/exceptions.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,16 @@ def make_exception(response, content):
164164
return error
165165

166166

167-
for name, value in globals().items():
168-
code = getattr(value, 'code', None)
167+
def _walk_subclasses(klass):
168+
"""Recursively walk subclass tree."""
169+
for sub in klass.__subclasses__():
170+
yield sub
171+
for subsub in _walk_subclasses(sub):
172+
yield subsub
173+
174+
175+
# Build the code->exception class mapping.
176+
for eklass in _walk_subclasses(StorageError):
177+
code = getattr(eklass, 'code', None)
169178
if code is not None:
170-
_HTTP_CODE_TO_EXCEPTION[code] = value
179+
_HTTP_CODE_TO_EXCEPTION[code] = eklass

0 commit comments

Comments
 (0)