| # Copyright 2015 gRPC authors. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| """A setup module for the gRPC Python package.""" |
| |
| import multiprocessing |
| import os |
| import sys |
| |
| # Manually insert the source directory into the Python path for local module |
| # imports to succeed |
| sys.path.insert(0, os.path.abspath(".")) |
| |
| import grpc_tools.command |
| import setuptools |
| |
| import commands |
| import grpc_version |
| import python_version |
| |
| INSTALL_REQUIRES = ( |
| "coverage>=7.9.0", |
| "grpcio>={version}".format(version=grpc_version.VERSION), |
| "grpcio-channelz>={version}".format(version=grpc_version.VERSION), |
| "grpcio-status>={version}".format(version=grpc_version.VERSION), |
| "grpcio-tools>={version}".format(version=grpc_version.VERSION), |
| "grpcio-health-checking>={version}".format(version=grpc_version.VERSION), |
| "grpcio-observability>={version}".format(version=grpc_version.VERSION), |
| "xds-protos>={version}".format(version=grpc_version.VERSION), |
| "oauth2client>=1.4.7", |
| "protobuf>=6.33.5,<7.0.0", |
| "google-auth>=1.17.2", |
| "requests>=2.14.2", |
| "absl-py>=1.4.0", |
| ) |
| |
| COMMAND_CLASS = { |
| # Run `preprocess` *before* doing any packaging! |
| "preprocess": commands.GatherProto, |
| "build_package_protos": commands.BuildPackageProtos, |
| "build_py": commands.BuildPy, |
| "run_fork": commands.RunFork, |
| "run_interop": commands.RunInterop, |
| "test_lite": commands.TestLite, |
| "test_aio": commands.TestAio, |
| "test_py3_only": commands.TestPy3Only, |
| } |
| |
| TEST_SUITE = "tests" |
| TEST_LOADER = "tests:Loader" |
| TEST_RUNNER = "tests:Runner" |
| TESTS_REQUIRE = INSTALL_REQUIRES |
| |
| CLASSIFIERS = [ |
| "Programming Language :: Python", |
| "Programming Language :: Python :: 3", |
| ] |
| |
| if __name__ == "__main__": |
| multiprocessing.freeze_support() |
| setuptools.setup( |
| install_requires=INSTALL_REQUIRES, |
| cmdclass=COMMAND_CLASS, |
| classifiers=CLASSIFIERS, |
| python_requires=f">={python_version.MIN_PYTHON_VERSION}", |
| tests_require=TESTS_REQUIRE, |
| test_suite=TEST_SUITE, |
| test_loader=TEST_LOADER, |
| test_runner=TEST_RUNNER, |
| ) |