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"""A setup module for the gRPC Python package.""" 15 16import os 17import os.path 18import sys 19 20import setuptools 21 22import grpc_tools.command 23 24PY3 = sys.version_info.major == 3 25 26# Ensure we're in the proper directory whether or not we're being used by pip. 27os.chdir(os.path.dirname(os.path.abspath(__file__))) 28 29# Break import-style to ensure we can actually find our in-repo dependencies. 30import commands 31import grpc_version 32 33LICENSE = 'Apache License 2.0' 34 35PACKAGE_DIRECTORIES = { 36 '': '.', 37} 38 39INSTALL_REQUIRES = ( 40 'coverage>=4.0', 'enum34>=1.0.4', 41 'grpcio>={version}'.format(version=grpc_version.VERSION), 42 'grpcio-tools>={version}'.format(version=grpc_version.VERSION), 43 'grpcio-health-checking>={version}'.format(version=grpc_version.VERSION), 44 'oauth2client>=1.4.7', 'protobuf>=3.6.0', 'six>=1.10', 'google-auth>=1.0.0', 45 'requests>=2.14.2') 46 47if not PY3: 48 INSTALL_REQUIRES += ('futures>=2.2.0',) 49 50COMMAND_CLASS = { 51 # Run `preprocess` *before* doing any packaging! 52 'preprocess': commands.GatherProto, 53 'build_package_protos': grpc_tools.command.BuildPackageProtos, 54 'build_py': commands.BuildPy, 55 'run_fork': commands.RunFork, 56 'run_interop': commands.RunInterop, 57 'test_lite': commands.TestLite, 58 'test_gevent': commands.TestGevent, 59} 60 61PACKAGE_DATA = { 62 'tests.interop': [ 63 'credentials/ca.pem', 64 'credentials/server1.key', 65 'credentials/server1.pem', 66 ], 67 'tests.protoc_plugin.protos.invocation_testing': [ 68 'same.proto', 69 ], 70 'tests.protoc_plugin.protos.invocation_testing.split_messages': [ 71 'messages.proto', 72 ], 73 'tests.protoc_plugin.protos.invocation_testing.split_services': [ 74 'services.proto', 75 ], 76 'tests.testing.proto': [ 77 'requests.proto', 78 'services.proto', 79 ], 80 'tests.unit': [ 81 'credentials/ca.pem', 82 'credentials/server1.key', 83 'credentials/server1.pem', 84 ], 85 'tests': ['tests.json'], 86} 87 88TEST_SUITE = 'tests' 89TEST_LOADER = 'tests:Loader' 90TEST_RUNNER = 'tests:Runner' 91TESTS_REQUIRE = INSTALL_REQUIRES 92 93PACKAGES = setuptools.find_packages('.') 94 95setuptools.setup( 96 name='grpcio-tests', 97 version=grpc_version.VERSION, 98 license=LICENSE, 99 packages=list(PACKAGES), 100 package_dir=PACKAGE_DIRECTORIES, 101 package_data=PACKAGE_DATA, 102 install_requires=INSTALL_REQUIRES, 103 cmdclass=COMMAND_CLASS, 104 tests_require=TESTS_REQUIRE, 105 test_suite=TEST_SUITE, 106 test_loader=TEST_LOADER, 107 test_runner=TEST_RUNNER, 108) 109