Home | History | Annotate | Download | only in grpcio_health_checking
      1 # Copyright 2015 gRPC authors.
      2 #
      3 # Licensed under the Apache License, Version 2.0 (the "License");
      4 # you may not use this file except in compliance with the License.
      5 # You may obtain a copy of the License at
      6 #
      7 #     http://www.apache.org/licenses/LICENSE-2.0
      8 #
      9 # Unless required by applicable law or agreed to in writing, software
     10 # distributed under the License is distributed on an "AS IS" BASIS,
     11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 # See the License for the specific language governing permissions and
     13 # limitations under the License.
     14 """Provides distutils command classes for the GRPC Python setup process."""
     15 
     16 import os
     17 import shutil
     18 
     19 import setuptools
     20 
     21 ROOT_DIR = os.path.abspath(os.path.dirname(os.path.abspath(__file__)))
     22 HEALTH_PROTO = os.path.join(ROOT_DIR, '../../proto/grpc/health/v1/health.proto')
     23 
     24 
     25 class CopyProtoModules(setuptools.Command):
     26     """Command to copy proto modules from grpc/src/proto."""
     27 
     28     description = ''
     29     user_options = []
     30 
     31     def initialize_options(self):
     32         pass
     33 
     34     def finalize_options(self):
     35         pass
     36 
     37     def run(self):
     38         if os.path.isfile(HEALTH_PROTO):
     39             shutil.copyfile(HEALTH_PROTO,
     40                             os.path.join(ROOT_DIR,
     41                                          'grpc_health/v1/health.proto'))
     42 
     43 
     44 class BuildPackageProtos(setuptools.Command):
     45     """Command to generate project *_pb2.py modules from proto files."""
     46 
     47     description = 'build grpc protobuf modules'
     48     user_options = []
     49 
     50     def initialize_options(self):
     51         pass
     52 
     53     def finalize_options(self):
     54         pass
     55 
     56     def run(self):
     57         # due to limitations of the proto generator, we require that only *one*
     58         # directory is provided as an 'include' directory. We assume it's the '' key
     59         # to `self.distribution.package_dir` (and get a key error if it's not
     60         # there).
     61         from grpc_tools import command
     62         command.build_package_protos(self.distribution.package_dir[''])
     63