
     )                     V    d Z ddlZddlmZ ddlmZ ddlmZ d Zd Z G d d	e      Z	y)
zSimple tool for generating a client library.

Relevant links:
  https://developers.google.com/discovery/v1/reference/apis#resource
    N)message_registry)service_registry)utilc                      	 ddl } 	 | j                  d      j                  S # t        $ r Y yw xY w# | j                  $ r Y yw xY w)zCReturns version of the currently installed google-apitools package.r   NzX.X.Xzgoogle-apitools)pkg_resourcesImportErrorget_distributionversionDistributionNotFound)r   s    .lib/third_party/apitools/gen/gen_client_lib.py_ApitoolsVersionr      sT    --.?@HHH   -- s   " 1 	..AAc                 L    ddd| j                  di       d}dddd	|d
   d<   |S )z*Sets up dict of standard query parameters.StandardQueryParametersobjectz)Query parameters accepted by all methods.
parameters)idtypedescription
propertiesstringzIA tracing token of the form "token:<tokenid>" to include in api requests.query)r   r   locationr   trace)get)discovery_docstandard_query_schemas     r   _StandardQueryParametersSchemar   *   sL     (B#''b9	 6	4,'0 !     c                       e Zd ZdZ	 	 	 ddZed        Zed        Zed        Zed        Z	ed        Z
ed	        Zed
        Zd Zd Zd Zd Zd Zd Zd Zd Zy)DescriptorGeneratorz.Code generator for a given discovery document.Nc           	         || _         || _        || _        |	| _        t	        j
                  | j                   j                  dd            | _        | j                  j                  | _	        | j                  j                  | _        |j                  dd      | _        || _        || _        || _        || _        || _        t%        j&                  | j                  | j"                  | j                  | j                  | j                  | j                         | _        | j                   j                  di       }t+        |j-                               D ]!  \  }}| j(                  j/                  ||       # t1        | j                         }| j(                  j/                  |d   |       | j(                  j3                          t5        j6                  | j                  | j(                  | j"                  | j                  | j                  |
xs g       | _        | j                   j                  di       }t+        |j-                               D ]!  \  }}| j8                  j;                  ||       # | j                   j                  dg       }|r| j8                  j;                  d	d|i       | j                  j=                  | j8                  j>                  
      | _        |r|| _!        y tA               | _!        y )Nr    revision1schemasr   	resourcesmethodsapi)scopes)"#_DescriptorGenerator__discovery_doc!_DescriptorGenerator__client_info_DescriptorGenerator__outdir _DescriptorGenerator__use_proto2r   CleanDescriptionr   !_DescriptorGenerator__descriptionpackage_DescriptorGenerator__packager
   _DescriptorGenerator__version_DescriptorGenerator__revision)_DescriptorGenerator__init_wildcards_file"_DescriptorGenerator__root_package(_DescriptorGenerator__base_files_package&_DescriptorGenerator__protorpc_package_DescriptorGenerator__namesr   MessageRegistry&_DescriptorGenerator__message_registrysorteditemsAddDescriptorFromSchemar   FixupMessageFieldsr   ServiceRegistry'_DescriptorGenerator__services_registryAddServiceFromResource_replacer)   r   &_DescriptorGenerator__apitools_version)selfr   client_infonamesroot_packageoutdirbase_packageprotorpc_packageinit_wildcards_file
use_proto2unelidable_request_methodsapitools_versionr%   schema_nameschemar   servicesservice_namer'   api_methodss                       r   __init__zDescriptorGenerator.__init__@   s     -(&!22  $$]B79++33++33'++J<%8"*$0!"2 #3"B"Bd.@.@!:!:###% &&**9b9#)'--/#:K##;;V% $;
 !?  !"77!$')>	@
 	224#3#C#C##LL%%&,"$.  ''++K<%+HNN,<%=!L'$$;;g' &> **..y"=$$;;	;/1 "//88++22 9 4 !1 	6F6H 	r   c                     | j                   S N)r+   rD   s    r   rE   zDescriptorGenerator.client_info   s    !!!r   c                     | j                   S rV   )r*   rW   s    r   r   z!DescriptorGenerator.discovery_doc   s    ###r   c                     | j                   S rV   )r8   rW   s    r   rF   zDescriptorGenerator.names   s    ||r   c                     | j                   S rV   )r,   rW   s    r   rH   zDescriptorGenerator.outdir   s    }}r   c                     | j                   S rV   )r1   rW   s    r   r0   zDescriptorGenerator.package   s    ~~r   c                     | j                   S rV   )r-   rW   s    r   rL   zDescriptorGenerator.use_proto2   s       r   c                     | j                   S rV   )rC   rW   s    r   rN   z$DescriptorGenerator.apitools_version   s    &&&r   c                 0    t        j                  |      }|S rV   )r   SimplePrettyPrinterrD   outprinters      r   _GetPrinterzDescriptorGenerator._GetPrinter   s    **3/r   c                    | j                  |      }| j                  r& |d| j                  j                          |d       n |d        |         |d        |         |d        |        | j                  rw |d| j                         | j
                  dk(  rd}nd| j
                  z  } |d	|| j                  j                          |d	|| j                  j                          |         |d
       y)z4Write a simple __init__.py for the generated client.z5"""Common imports for generated %s client library."""z # pylint:disable=wildcard-importz"""Package marker file."""z&from __future__ import absolute_importzimport pkgutilzfrom %s import *.z%s.zfrom %s%s import *z2__path__ = pkgutil.extend_path(__path__, __name__)N)rc   r4   r+   r0   r6   r5   client_rule_namemessages_rule_name)rD   ra   rb   import_prefixs       r   	WriteInitzDescriptorGenerator.WriteInit   s    ""3'%%K&&..06701	89	 !	%%&(A(AB""c) # %(;(; ;(!4#5#5#F#FH(!4#5#5#H#HJIDEr   c                 t    | j                  |      } |d        |d        |         |d        |d       y)z9Write a simple __init__.py for an intermediate directory.z#!/usr/bin/env pythonz&"""Shared __init__.py for apitools."""zfrom pkgutil import extend_pathz*__path__ = extend_path(__path__, __name__)N)rc   r`   s      r   WriteIntermediateInitz)DescriptorGenerator.WriteIntermediateInit   s;    ""3''(89	12<=r   c                    | j                  |      }t        j                  j                         j                  } |d|z          |d        |d        |d        |d        |d        |d        |d        |d        |d        |d	        |d
        |d        |         |d        |d       |j	                  d      5  | j
                  j                  d      }|j                  d      }|j                  d      } |d| j
                  ||        |d        |d       ddd        |d        |d| j                  z          |         |d       |j	                  d      5   |d| j                  | j                          |d| j
                  | j                          |d| j                  d        |d        |d        |d        |d         |d!        |d"       |j	                  d      5   |d#        |d$       ddd        |d%        |d&        |d'| j                  d(| j                  d       ddd        |d)       y# 1 sw Y   :xY w# 1 sw Y   ZxY w# 1 sw Y   +xY w)*z$Write a setup.py for upload to PyPI.z/# Copyright %s Google Inc. All Rights Reserved.#z@# Licensed under the Apache License, Version 2.0 (the"License");zB# you may not use this file except in compliance with the License.z)# You may obtain a copy of the License atz.#   http://www.apache.org/licenses/LICENSE-2.0zE# Unless required by applicable law or agreed to in writing, softwarezC# distributed under the License is distributed on an "AS IS" BASIS,zJ# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.zE# See the License for the specific language governing permissions andz # limitations under the License.zimport setuptoolszREQUIREMENTS = [z    )indentre   r   z"google-apitools>=%s,~=%s.%s",z"httplib2>=0.9",z"oauth2client>=1.4.12",N]z _PACKAGE = "apitools.clients.%s"zsetuptools.setup(zname="google-apitools-%s-%s",zversion="%s.%s",z0description="Autogenerated apitools library for z",z)url="https://github.com/google/apitools",zauthor="Craig Citro",z%author_email="craigcitro@google.com",z$packages=setuptools.find_packages(),zinstall_requires=REQUIREMENTS,zclassifiers=[z("Programming Language :: Python :: 2.7",z5"License :: OSI Approved :: Apache Software License",z],zlicense="Apache 2.0",zkeywords="apitools apitools- ))rc   datetimenowyearIndentrN   splitpopr1   r2   r3   )rD   ra   rb   rt   partsmajorminors          r   WriteSetupPyz DescriptorGenerator.WriteSetupPy   sm   ""3'  $$&++ADHI  	  	 ;<@A  	  	 & 	' " 	#23	#$"#^^6^*))//4EIIaLEIIaLE4))5%9&'-. + 	2T^^CD	#$^^6^*3NNDNN4&))4??<! "?@+,;<:;45O$v.BC $ % / DM+,0 1' +* 	E +*4 /. +*s2   A#I)7BJI6;J)I36I?	;JJc                 X    | j                   j                  | j                  |             y rV   )r:   	WriteFilerc   rD   ra   s     r   WriteMessagesFilez%DescriptorGenerator.WriteMessagesFile  s!    ))$*:*:3*?@r   c                 X    | j                   j                  | j                  |             y rV   )r:   WriteProtoFilerc   r~   s     r   WriteMessagesProtoFilez*DescriptorGenerator.WriteMessagesProtoFile  s!    ..t/?/?/DEr   c                 X    | j                   j                  | j                  |             y rV   )r@   r   rc   r~   s     r   WriteServicesProtoFilez*DescriptorGenerator.WriteServicesProtoFile	  s!      //0@0@0EFr   c                 X    | j                   j                  | j                  |             y rV   )r@   r}   rc   r~   s     r   WriteClientLibraryz&DescriptorGenerator.WriteClientLibrary  s!      **4+;+;C+@Ar   )TFNr"   )__name__
__module____qualname____doc__rT   propertyrE   r   rF   rH   r0   rL   rN   rc   ri   rk   r{   r   r   r   r    r   r   r    r    <   s    8 FJ>B"$?JB " " $ $       ! ! ' 'F6><|AFGBr   r    )
r   rr   apitools.genr   r   r   r   r   r   r    r   r   r   <module>r      s2   "  ) ) 	!$QB& QBr   