diff --git a/describe.py b/describe.py index 2537e7c06ee..0b7d10f3d42 100755 --- a/describe.py +++ b/describe.py @@ -234,7 +234,7 @@ def add_param(pname, desc): pname = m.group(1) desc = m.group(2) add_param(pname, desc) - parameters = ", ".join(parameters) + parameters = ", ".join(sorted(parameters)) else: parameters = "" return parameters diff --git a/googleapiclient/discovery.py b/googleapiclient/discovery.py index 6363809f1e5..b5d46968fa1 100644 --- a/googleapiclient/discovery.py +++ b/googleapiclient/discovery.py @@ -898,7 +898,9 @@ def set_parameters(self, method_desc): comes from the dictionary of methods stored in the 'methods' key in the deserialized discovery document. """ - for arg, desc in six.iteritems(method_desc.get("parameters", {})): + parameters = method_desc.get("parameters", {}) + sorted_parameters = OrderedDict(sorted(parameters.items())) + for arg, desc in six.iteritems(sorted_parameters): param = key2param(arg) self.argmap[param] = arg @@ -1137,7 +1139,7 @@ def method(self, **kwargs): if "body" in all_args: args_ordered.append("body") - for name in all_args: + for name in sorted(all_args): if name not in args_ordered: args_ordered.append(name) @@ -1155,7 +1157,7 @@ def method(self, **kwargs): paramdoc = paramdesc.get("description", "A parameter") if "$ref" in paramdesc: docs.append( - (" %s: object, %s%s%s\n The object takes the" " form of:\n\n%s\n\n") + (" %s: object, %s%s%s\n The object takes the form of:\n\n%s\n\n") % ( arg, paramdoc, diff --git a/googleapiclient/schema.py b/googleapiclient/schema.py index 022cb0acfd3..2d589840cf2 100644 --- a/googleapiclient/schema.py +++ b/googleapiclient/schema.py @@ -65,6 +65,7 @@ import copy +from collections import OrderedDict from googleapiclient import _helpers as util @@ -124,7 +125,7 @@ def prettyPrintByName(self, name): comments that conforms to the given schema. """ # Return with trailing comma and newline removed. - return self._prettyPrintByName(name, seen=[], dent=1)[:-2] + return self._prettyPrintByName(name, seen=[], dent=0)[:-2] @util.positional(2) def _prettyPrintSchema(self, schema, seen=None, dent=0): @@ -155,7 +156,7 @@ def prettyPrintSchema(self, schema): comments that conforms to the given schema. """ # Return with trailing comma and newline removed. - return self._prettyPrintSchema(schema, dent=1)[:-2] + return self._prettyPrintSchema(schema, dent=0)[:-2] def get(self, name, default=None): """Get deserialized JSON schema from the schema name. @@ -253,7 +254,9 @@ def _to_str_impl(self, schema): self.emitEnd("{", schema.get("description", "")) self.indent() if "properties" in schema: - for pname, pschema in six.iteritems(schema.get("properties", {})): + properties = schema.get("properties", {}) + sorted_properties = OrderedDict(sorted(properties.items())) + for pname, pschema in six.iteritems(sorted_properties): self.emitBegin('"%s": ' % pname) self._to_str_impl(pschema) elif "additionalProperties" in schema: diff --git a/tests/test_schema.py b/tests/test_schema.py index 1732d85f4ab..f5fd518f5b2 100644 --- a/tests/test_schema.py +++ b/tests/test_schema.py @@ -32,20 +32,20 @@ def datafile(filename): LOAD_FEED = """{ - "items": [ - { - "longVal": 42, - "kind": "zoo#loadValue", - "enumVal": "A String", - "anyVal": "", # Anything will do. - "nullVal": None, - "stringVal": "A String", - "doubleVal": 3.14, - "booleanVal": True or False, # True or False. - }, - ], - "kind": "zoo#loadFeed", - }""" + "items": [ + { + "longVal": 42, + "kind": "zoo#loadValue", + "enumVal": "A String", + "anyVal": "", # Anything will do. + "nullVal": None, + "stringVal": "A String", + "doubleVal": 3.14, + "booleanVal": True or False, # True or False. + }, + ], + "kind": "zoo#loadFeed", +}""" class SchemasTest(unittest.TestCase):