Imported Upstream version 1.41.0
[platform/upstream/grpc.git] / src / python / grpcio_channelz / channelz_commands.py
1 # Copyright 2018 The 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 CHANNELZ_PROTO = os.path.join(ROOT_DIR,
23                               '../../proto/grpc/channelz/channelz.proto')
24 LICENSE = os.path.join(ROOT_DIR, '../../../LICENSE')
25
26
27 class Preprocess(setuptools.Command):
28     """Command to copy proto modules from grpc/src/proto and LICENSE from
29     the root directory"""
30
31     description = ''
32     user_options = []
33
34     def initialize_options(self):
35         pass
36
37     def finalize_options(self):
38         pass
39
40     def run(self):
41         if os.path.isfile(CHANNELZ_PROTO):
42             shutil.copyfile(
43                 CHANNELZ_PROTO,
44                 os.path.join(ROOT_DIR, 'grpc_channelz/v1/channelz.proto'))
45         if os.path.isfile(LICENSE):
46             shutil.copyfile(LICENSE, os.path.join(ROOT_DIR, 'LICENSE'))
47
48
49 class BuildPackageProtos(setuptools.Command):
50     """Command to generate project *_pb2.py modules from proto files."""
51
52     description = 'build grpc protobuf modules'
53     user_options = []
54
55     def initialize_options(self):
56         pass
57
58     def finalize_options(self):
59         pass
60
61     def run(self):
62         # due to limitations of the proto generator, we require that only *one*
63         # directory is provided as an 'include' directory. We assume it's the '' key
64         # to `self.distribution.package_dir` (and get a key error if it's not
65         # there).
66         from grpc_tools import command
67         command.build_package_protos(self.distribution.package_dir[''])