# Copyright 2018 The 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. # -- Path setup -------------------------------------------------------------- import os import sys # Add all packages to sys.path PYTHON_FOLDER = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', '..', '..', 'src', 'python') ALL_PACKAGES = [ 'grpcio', 'grpcio_admin', 'grpcio_channelz', 'grpcio_csds', 'grpcio_health_checking', 'grpcio_observability', 'grpcio_reflection', 'grpcio_status', 'grpcio_testing' ] for pkg in ALL_PACKAGES: # Use .append() instead of insert(0) to let Sphinx find the compiled # Cython extensions from site-packages correctly sys.path.append(os.path.join(PYTHON_FOLDER, pkg)) # -- Project information ----------------------------------------------------- project = 'gRPC Python' copyright = '2025, The gRPC Authors' author = 'The gRPC Authors' # Import generated grpc_version after the path been modified import grpc_version version = '.'.join(grpc_version.VERSION.split('.')[:3]) release = grpc_version.VERSION if 'dev' in grpc_version.VERSION: branch = 'master' else: branch = 'v%s.%s.x' % tuple(grpc_version.VERSION.split('.')[:2]) # -- General configuration --------------------------------------------------- templates_path = ['_templates'] source_suffix = ['.rst', '.md'] master_doc = 'index' language = 'en' exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] pygments_style = None # --- Extensions Configuration ----------------------------------------------- extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.viewcode', 'sphinx.ext.todo', 'sphinx.ext.napoleon', 'sphinx.ext.coverage', 'sphinx.ext.autodoc.typehints', ] napoleon_google_docstring = True napoleon_numpy_docstring = True napoleon_include_special_with_doc = True autodoc_default_options = { 'members': None, } autodoc_mock_imports = ["envoy"] autodoc_typehints = 'description' # -- HTML Configuration ------------------------------------------------- html_theme = 'pydata_sphinx_theme' html_title = f"gRPC Python Docs v{version}" html_theme_options = { "navbar_center": [], "header_links_before_dropdown": 15, "secondary_sidebar_items": ["page-toc", "edit-this-page"], "show_toc_level": 2, } html_theme_options["analytics"] = { "google_analytics_id": "UA-60127042-1", } html_sidebars = { "**": ["sidebar-nav-bs"] } html_static_path = ["_static"] html_css_files = [ "custom.css" ] # -- Options for manual page output ------------------------------------------ man_pages = [(master_doc, 'grpcio', 'grpcio Documentation', [author], 1)] # -- Options for Texinfo output ---------------------------------------------- texinfo_documents = [ (master_doc, 'grpcio', 'grpcio Documentation', author, 'grpcio', 'One line description of project.', 'Miscellaneous'), ] # -- Options for Epub output ------------------------------------------------- epub_title = project epub_exclude_files = ['search.html'] # -- Options for todo extension ---------------------------------------------- todo_include_todos = True # -- Options for substitutions ----------------------------------------------- rst_epilog = '.. |channel_arg_names_link| replace:: https://github.com/grpc/grpc/blob/%s/include/grpc/impl/channel_arg_names.h' % branch