# Configuration file for the Sphinx documentation builder. # # This file only contains a selection of the most common options. For a full # list see the documentation: # https://www.sphinx-doc.org/en/master/usage/configuration.html # -- Path setup -------------------------------------------------------------- # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # NOTE: To generate docs: # $ cd docs # $ rm -rf _build api # $ python -m sphinx -T -b html -d _build/doctrees -D language=en . _build/output/html # pylint:skip-file import logging import os import sys from unittest import mock os.environ["FACESWAP_BACKEND"] = "cpu" os.environ["KERAS_BACKEND"] = "torch" sys.path.insert(0, os.path.abspath('../')) sys.setrecursionlimit(1500) MOCK_MODULES = ["pynvml", "ctypes.windll", "comtypes"] for mod_name in MOCK_MODULES: sys.modules[mod_name] = mock.Mock() # -- Project information ----------------------------------------------------- project = 'faceswap' copyright = '2025, faceswap.dev' author = 'faceswap.dev' # The full version, including alpha/beta/rc tags release = '3.0' # -- General configuration --------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = ['sphinx.ext.napoleon', "sphinx_automodapi.automodapi"] napoleon_custom_sections = ['License'] numpydoc_show_class_members = False automodsumm_inherited_members = True # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # html_theme = 'sphinx_rtd_theme' html_theme_options = { 'analytics_id': 'UA-145659566-2', 'logo_only': True, # Toc options 'navigation_depth': -1, } html_logo = '_static/logo.png' latext_logo = '_static/logo.png' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] master_doc = 'index' # Suppress warnings from all 3rd party libraries _suppressed_warning_count = 0 def _suppress_third_party_warnings(): """ Override Sphinx logging to ignore any warnings generated by 3rd party libraries """ skip = ["lib/python", "site-packages", # system packages/python lib ".variables", ".non_trainable_variables"] # keras layer inheritance root = logging.getLogger("sphinx") for handler in root.handlers: orig_emit = handler.emit def make_filtered_emit(orig_emit): def filtered_emit(record): if record.levelname in ("WARNING", "ERROR"): try: msg = record.getMessage() except TypeError: orig_emit(record) return loc = getattr(record, "location", "") if any(x in msg or x in str(loc) for x in skip): global _suppressed_warning_count _suppressed_warning_count += 1 return orig_emit(record) return filtered_emit handler.emit = make_filtered_emit(orig_emit) def _on_build_finish(app, exception): """ Subtract our suppressed warnings from the total warnings count """ if hasattr(app, "_warncount") and _suppressed_warning_count: setattr(app, "_warncount", max(0, getattr(app, "_warncount", 0) - _suppressed_warning_count)) def setup(app): """ Install our warnings filter and capture suppressed counts """ _suppress_third_party_warnings() app.connect("build-finished", _on_build_finish)