| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 | # Copyright 2015, Google Inc.# All rights reserved.## Redistribution and use in source and binary forms, with or without# modification, are permitted provided that the following conditions are# met:##     * Redistributions of source code must retain the above copyright# notice, this list of conditions and the following disclaimer.#     * Redistributions in binary form must reproduce the above# copyright notice, this list of conditions and the following disclaimer# in the documentation and/or other materials provided with the# distribution.#     * Neither the name of Google Inc. nor the names of its# contributors may be used to endorse or promote products derived from# this software without specific prior written permission.## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."""A setup module for the GRPC Python package."""import osimport os.pathimport sysfrom distutils import core as _corefrom distutils import extension as _extensionimport setuptools# Ensure we're in the proper directory whether or not we're being used by pip.os.chdir(os.path.dirname(os.path.abspath(__file__)))# Break import-style to ensure we can actually find our commands module.import commands# Environment variable to determine whether or not the Cython extension should# *use* Cython or use the generated C files. Note that this requires the C files# to have been generated by building first *with* Cython support.BUILD_WITH_CYTHON = os.environ.get('GRPC_PYTHON_BUILD_WITH_CYTHON', False)# Environment variable to determine whether or not to enable coverage analysis# in Cython modules.ENABLE_CYTHON_TRACING = os.environ.get(    'GRPC_PYTHON_ENABLE_CYTHON_TRACING', False)# Environment variable to determine whether or not to include the test files in# the installation.INSTALL_TESTS = os.environ.get('GRPC_PYTHON_INSTALL_TESTS', False)C_EXTENSION_SOURCES = (    'grpc/_adapter/_c/module.c',    'grpc/_adapter/_c/types.c',    'grpc/_adapter/_c/utility.c',    'grpc/_adapter/_c/types/call_credentials.c',    'grpc/_adapter/_c/types/channel_credentials.c',    'grpc/_adapter/_c/types/server_credentials.c',    'grpc/_adapter/_c/types/completion_queue.c',    'grpc/_adapter/_c/types/call.c',    'grpc/_adapter/_c/types/channel.c',    'grpc/_adapter/_c/types/server.c',)CYTHON_EXTENSION_PACKAGE_NAMES = ()CYTHON_EXTENSION_MODULE_NAMES = (    'grpc._cython.cygrpc',    'grpc._cython._cygrpc.call',    'grpc._cython._cygrpc.channel',    'grpc._cython._cygrpc.completion_queue',    'grpc._cython._cygrpc.credentials',    'grpc._cython._cygrpc.records',    'grpc._cython._cygrpc.server',)EXTENSION_INCLUDE_DIRECTORIES = (    '.',)EXTENSION_LIBRARIES = (    'grpc',    'gpr',)if not "darwin" in sys.platform:    EXTENSION_LIBRARIES += ('rt',)C_EXTENSION_MODULE = _core.Extension(    'grpc._adapter._c', sources=list(C_EXTENSION_SOURCES),    include_dirs=list(EXTENSION_INCLUDE_DIRECTORIES),    libraries=list(EXTENSION_LIBRARIES))EXTENSION_MODULES = [C_EXTENSION_MODULE]def cython_extensions(package_names, module_names, include_dirs, libraries,                      build_with_cython=False):  file_extension = 'pyx' if build_with_cython else 'c'  module_files = [name.replace('.', '/') + '.' + file_extension                  for name in module_names]  extensions = [      _extension.Extension(          name=module_name, sources=[module_file],          include_dirs=include_dirs, libraries=libraries,          define_macros=[('CYTHON_TRACE_NOGIL', 1)] if ENABLE_CYTHON_TRACING else []      ) for (module_name, module_file) in zip(module_names, module_files)  ]  if build_with_cython:    import Cython.Build    return Cython.Build.cythonize(        extensions,        compiler_directives={'linetrace': bool(ENABLE_CYTHON_TRACING)})  else:    return extensionsCYTHON_EXTENSION_MODULES = cython_extensions(    list(CYTHON_EXTENSION_PACKAGE_NAMES), list(CYTHON_EXTENSION_MODULE_NAMES),    list(EXTENSION_INCLUDE_DIRECTORIES), list(EXTENSION_LIBRARIES),    bool(BUILD_WITH_CYTHON))PACKAGE_DIRECTORIES = {    '': '.',}INSTALL_REQUIRES = (    'enum34>=1.0.4',    'futures>=2.2.0',)SETUP_REQUIRES = (    'sphinx>=1.3',) + INSTALL_REQUIRESCOMMAND_CLASS = {    'doc': commands.SphinxDocumentation,    'build_proto_modules': commands.BuildProtoModules,    'build_project_metadata': commands.BuildProjectMetadata,    'build_py': commands.BuildPy,    'gather': commands.Gather,    'run_interop': commands.RunInterop,}TEST_PACKAGE_DATA = {    'tests.interop': [        'credentials/ca.pem',        'credentials/server1.key',        'credentials/server1.pem',    ],    'tests.protoc_plugin': [        'protoc_plugin_test.proto',    ],    'tests.unit': [        'credentials/ca.pem',        'credentials/server1.key',        'credentials/server1.pem',    ],}TESTS_REQUIRE = (    'oauth2client>=1.4.7',    'protobuf==3.0.0a3',    'coverage>=4.0',) + INSTALL_REQUIRESTEST_SUITE = 'tests'TEST_LOADER = 'tests:Loader'TEST_RUNNER = 'tests:Runner'PACKAGE_DATA = {}if INSTALL_TESTS:  PACKAGE_DATA = dict(PACKAGE_DATA, **TEST_PACKAGE_DATA)  PACKAGES = setuptools.find_packages('.')else:  PACKAGES = setuptools.find_packages('.', exclude=['tests', 'tests.*'])setuptools.setup(    name='grpcio',    version='0.11.0b2',    ext_modules=EXTENSION_MODULES + CYTHON_EXTENSION_MODULES,    packages=list(PACKAGES),    package_dir=PACKAGE_DIRECTORIES,    install_requires=INSTALL_REQUIRES,    setup_requires=SETUP_REQUIRES,    cmdclass=COMMAND_CLASS,    tests_require=TESTS_REQUIRE,    test_suite=TEST_SUITE,    test_loader=TEST_LOADER,    test_runner=TEST_RUNNER,)
 |