Recurse correctly when filling in default routes

This commit is contained in:
Garrett Holmstrom
2013-04-17 14:29:40 -07:00
parent daeee3a06c
commit 1e0106aa41
5 changed files with 17 additions and 15 deletions

View File

@@ -82,8 +82,6 @@ class MutuallyExclusiveArgList(list):
else:
self.required = False
list.__init__(self, args)
# This must go nowhere since it has no arg values of its own
self.routes = ()
class Filter(object):

View File

@@ -28,7 +28,7 @@ import urllib
import urlparse
from . import Arg, AUTH
from .exceptions import AuthError
from .util import aggregate_subclass_fields
from .util import add_default_routes, aggregate_subclass_fields
ISO8601 = '%Y-%m-%dT%H:%M:%SZ'
@@ -60,9 +60,7 @@ class BaseAuth(object):
def collect_arg_objs(self):
arg_objs = aggregate_subclass_fields(self.__class__, 'ARGS')
for arg_obj in arg_objs:
if arg_obj.routes is None:
arg_obj.routes = self.default_routes
add_default_routes(arg_objs, self.default_routes)
return arg_objs
def preprocess_arg_objs(self, arg_objs):

View File

@@ -32,7 +32,7 @@ from .config import Config
from .exceptions import ArgumentError
from .logging import configure_root_logger
from .suite import RequestBuilder
from .util import aggregate_subclass_fields
from .util import add_default_routes, aggregate_subclass_fields
class BaseCommand(object):
'''
@@ -171,9 +171,7 @@ class BaseCommand(object):
def collect_arg_objs(self):
arg_objs = aggregate_subclass_fields(self.__class__, 'ARGS')
for arg_obj in arg_objs:
if arg_obj.routes is None:
arg_obj.routes = self.default_routes
add_default_routes(arg_objs, self.default_routes)
return arg_objs
def preprocess_arg_objs(self, arg_objs):

View File

@@ -26,7 +26,7 @@ import urlparse
import weakref
from .exceptions import ClientError, ServerError, ServiceInitError
from .util import aggregate_subclass_fields
from .util import add_default_routes, aggregate_subclass_fields
class BaseService(object):
@@ -67,9 +67,7 @@ class BaseService(object):
def collect_arg_objs(self):
service_args = aggregate_subclass_fields(self.__class__, 'ARGS')
for service_arg in service_args:
if service_arg.routes is None:
service_arg.routes = self.default_routes
add_default_routes(service_args, self.default_routes)
if self.auth is not None:
auth_args = self.auth.collect_arg_objs()
else:

View File

@@ -13,9 +13,19 @@
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
import platform
import requestbuilder
import requests
import sys
from . import __version__
def add_default_routes(arglike_obj, default_routes):
if isinstance(arglike_obj, requestbuilder.Arg):
if arglike_obj.routes is None:
arglike_obj.routes = default_routes
elif isinstance(arglike_obj, list):
# Note that MutuallyExclusiveArgList is a list
for item in arglike_obj:
add_default_routes(item, default_routes)
def aggregate_subclass_fields(cls, field_name):