4141
4242URITEMPLATE = re .compile ('{[^}]*}' )
4343VARNAME = re .compile ('[a-zA-Z0-9_-]+' )
44- DISCOVERY_URI = ('https://www.googleapis.com/discovery/v0.2beta1 /describe/'
44+ DISCOVERY_URI = ('https://www.googleapis.com/discovery/v0.3 /describe/'
4545 '{api}/{apiVersion}' )
46+ DEFAULT_METHOD_DOC = 'A description of how to use this function'
4647
4748
4849def key2param (key ):
@@ -192,8 +193,11 @@ def createMethod(theclass, methodName, methodDesc, futureDesc):
192193
193194 argmap = {}
194195 if httpMethod in ['PUT' , 'POST' ]:
195- argmap ['body' ] = 'body'
196-
196+ if 'parameters' not in methodDesc :
197+ methodDesc ['parameters' ] = {}
198+ methodDesc ['parameters' ]['body' ] = {
199+ 'description' : 'The request body.' ,
200+ }
197201
198202 required_params = [] # Required parameters
199203 pattern_params = {} # Parameters that must match a regex
@@ -272,20 +276,24 @@ def method(self, **kwargs):
272276 headers = headers ,
273277 methodId = methodId )
274278
275- docs = ['A description of how to use this function\n \n ' ]
279+ docs = [methodDesc .get ('description' , DEFAULT_METHOD_DOC ), '\n \n ' ]
280+ if len (argmap ) > 0 :
281+ docs .append ("Args:\n " )
276282 for arg in argmap .iterkeys ():
277- required = ''
283+ required = ""
278284 if arg in required_params :
279- required = ' (required)'
280- docs .append ('%s - A parameter%s\n ' % (arg , required ))
285+ required = " (required)"
286+ paramdoc = methodDesc ['parameters' ][argmap [arg ]].get (
287+ 'description' , 'A parameter' )
288+ docs .append (' %s: %s%s\n ' % (arg , paramdoc , required ))
281289
282290 setattr (method , '__doc__' , '' .join (docs ))
283291 setattr (theclass , methodName , method )
284292
285293 def createNextMethod (theclass , methodName , methodDesc , futureDesc ):
286294 methodId = methodDesc ['rpcMethod' ] + '.next'
287295
288- def method (self , previous ):
296+ def methodNext (self , previous ):
289297 """
290298 Takes a single argument, 'body', which is the results
291299 from the last call, and returns the next set of items
@@ -325,7 +333,7 @@ def method(self, previous):
325333 headers = headers ,
326334 methodId = methodId )
327335
328- setattr (theclass , methodName , method )
336+ setattr (theclass , methodName , methodNext )
329337
330338 # Add basic methods to Resource
331339 if 'methods' in resourceDesc :
@@ -339,30 +347,29 @@ def method(self, previous):
339347 # Add in nested resources
340348 if 'resources' in resourceDesc :
341349
342- def createMethod (theclass , methodName , methodDesc , futureDesc ):
350+ def createResourceMethod (theclass , methodName , methodDesc , futureDesc ):
343351
344- def method (self ):
352+ def methodResource (self ):
345353 return createResource (self ._http , self ._baseUrl , self ._model ,
346354 self ._requestBuilder , self ._developerKey ,
347355 methodDesc , futureDesc )
348356
349- setattr (method , '__doc__' , 'A description of how to use this function ' )
350- setattr (method , '__is_resource__' , True )
351- setattr (theclass , methodName , method )
357+ setattr (methodResource , '__doc__' , 'A collection resource. ' )
358+ setattr (methodResource , '__is_resource__' , True )
359+ setattr (theclass , methodName , methodResource )
352360
353361 for methodName , methodDesc in resourceDesc ['resources' ].iteritems ():
354362 if futureDesc and 'resources' in futureDesc :
355363 future = futureDesc ['resources' ].get (methodName , {})
356364 else :
357365 future = {}
358- createMethod (Resource , methodName , methodDesc ,
359- future )
366+ createResourceMethod (Resource , methodName , methodDesc , future )
360367
361368 # Add <m>_next() methods to Resource
362369 if futureDesc and 'methods' in futureDesc :
363370 for methodName , methodDesc in futureDesc ['methods' ].iteritems ():
364371 if 'next' in methodDesc and methodName in resourceDesc ['methods' ]:
365- createNextMethod (Resource , methodName + ' _next' ,
372+ createNextMethod (Resource , methodName + " _next" ,
366373 resourceDesc ['methods' ][methodName ],
367374 methodDesc ['next' ])
368375
0 commit comments