| """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 |
| """ |
|
|
| |
| import os |
| import sys |
| import inspect |
| import warnings |
|
|
| from pathlib import Path |
| from typing import Any, Dict |
|
|
| import openfactcheck |
| from sphinx.application import Sphinx |
| from sphinx.locale import _ |
|
|
| sys.path.insert(0, os.path.abspath('../../src/openfactcheck')) |
| sys.path.append(str(Path(".").resolve())) |
|
|
| |
|
|
| project = 'OpenFactCheck' |
| copyright = '2024, MBZUAI' |
| author = 'OpenFactCheck Team and Contributors' |
|
|
| |
|
|
| extensions = [ |
| "sphinx.ext.napoleon", |
| "sphinx.ext.autodoc", |
| "sphinx.ext.autosummary", |
| "sphinx.ext.todo", |
| "sphinx.ext.viewcode", |
| "sphinx.ext.intersphinx", |
| "sphinx.ext.graphviz", |
| "sphinx.ext.linkcode", |
| "sphinx.ext.coverage", |
| "sphinx.ext.doctest", |
| "sphinx.ext.extlinks", |
| "sphinx.ext.ifconfig", |
| "sphinx.ext.mathjax", |
| "sphinxext.rediraffe", |
| "sphinx_design", |
| "sphinx_copybutton", |
| "sphinx_togglebutton", |
| "sphinx_favicon", |
| "myst_parser", |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
| "_extension.gallery_directive", |
| "_extension.component_directive", |
| ] |
|
|
| |
|
|
| |
| templates_path = ["_templates"] |
|
|
| |
| |
| |
| exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "**.ipynb_checkpoints"] |
|
|
| intersphinx_mapping = {"sphinx": ("https://www.sphinx-doc.org/en/master", None)} |
|
|
| |
|
|
| |
| if not os.environ.get("READTHEDOCS"): |
| extensions += ["sphinx_sitemap"] |
|
|
| html_baseurl = os.environ.get("SITEMAP_URL_BASE", "http://127.0.0.1:8000/") |
| sitemap_locales = [None] |
| sitemap_url_scheme = "{link}" |
|
|
| |
|
|
| |
| |
| |
| |
|
|
| |
|
|
| |
| language = "en" |
|
|
| |
|
|
| |
| |
| |
| |
| |
|
|
| |
|
|
| graphviz_output_format = "svg" |
| inheritance_graph_attrs = dict( |
| rankdir="LR", |
| fontsize=14, |
| ratio="compress", |
| ) |
|
|
| |
| togglebutton_hint = str(_("Click to expand")) |
| togglebutton_hint_hide = str(_("Click to collapse")) |
|
|
| |
| |
| |
| |
| copybutton_selector = ":not(.prompt) > div.highlight pre" |
|
|
| |
|
|
| html_theme = "pydata_sphinx_theme" |
| html_logo = "_static/logo/logo.svg" |
| html_favicon = "_static/favicon.svg" |
| html_sourcelink_suffix = "" |
| html_last_updated_fmt = "" |
|
|
| |
| json_url = "https://openfactcheck.readthedocs.io/en/latest/_static/versions.json" |
|
|
| |
| version_match = os.environ.get("READTHEDOCS_VERSION") |
| release = openfactcheck.__version__ |
|
|
| |
| |
| |
| if not version_match or version_match.isdigit() or version_match == "latest": |
| |
| if "dev" in release or "rc" in release: |
| version_match = "dev" |
| |
| |
| json_url = "_static/versions.json" |
| else: |
| version_match = f"v{release}" |
| elif version_match == "stable": |
| version_match = f"v{release}" |
|
|
| html_theme_options = { |
| "external_links": [], |
| "header_links_before_dropdown": 4, |
| "icon_links": [ |
| { |
| "name": "GitHub", |
| "url": "https://github.com/hasaniqbal777/openfactcheck", |
| "icon": "fa-brands fa-github", |
| }, |
| { |
| "name": "PyPI", |
| "url": "https://pypi.org/project/openfactcheck", |
| "icon": "fa-custom fa-pypi", |
| }, |
| { |
| "name": "HuggingFace Space", |
| "url": "https://huggingface.co/spaces/hasaniqbal777/OpenFactCheck", |
| "icon": "fa-solid fa-rocket", |
| }, |
| ], |
| |
| |
| |
| "logo": { |
| "image_light": "_static/logo/logo_dark.svg", |
| "image_dark": "_static/logo/logo_light.svg", |
| }, |
| "use_edit_page_button": True, |
| "show_toc_level": 1, |
| "navbar_align": "left", |
| |
| |
| "show_version_warning_banner": True, |
| |
| |
| "navbar_end": ["version-switcher", "theme-switcher", "navbar-icon-links"], |
| |
| "primary_sidebar_end": ["sidebar-ethical-ads"], |
| |
| |
| "footer_start": ["copyright"], |
| |
| "secondary_sidebar_items": { |
| "**/*": ["page-toc", "edit-this-page", "sourcelink"], |
| "examples/no-sidebar": [], |
| }, |
| "switcher": { |
| "json_url": json_url, |
| "version_match": version_match, |
| }, |
| "back_to_top_button": False, |
| } |
|
|
| html_context = { |
| "github_user": "hasaniqbal777", |
| "github_repo": "openfactcheck", |
| "github_version": "main", |
| "doc_path": "docs", |
| } |
|
|
| |
| |
| |
| html_static_path = ["_static"] |
| html_css_files = [ |
| "_css/custom.css", |
| ] |
| html_js_files = ["custom-icons.js"] |
| todo_include_todos = True |
|
|
| |
| rediraffe_redirects = {} |
|
|
| |
|
|
| |
| |
| favicons = [ |
| |
| "favicon-32x32.png", |
| "favicon-16x16.png", |
| {"rel": "shortcut icon", "sizes": "any", "href": "favicon.ico"}, |
| |
| "android-chrome-192x192.png", |
| "android-chrome-512x512.png", |
| |
| {"rel": "mask-icon", "href": "favicon.svg"}, |
| {"rel": "apple-touch-icon", "href": "apple-touch-icon.png"} |
| ] |
|
|
| |
| autosummary_generate = True |
| autodoc_typehints = "description" |
| autodoc_member_order = "groupwise" |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
|
|
| |
| def linkcode_resolve(domain, info) -> str | None: |
| """ |
| Determine the URL corresponding to Python object |
| """ |
| if domain != "py": |
| return None |
|
|
| modname = info["module"] |
| fullname = info["fullname"] |
|
|
| submod = sys.modules.get(modname) |
| if submod is None: |
| return None |
|
|
| obj = submod |
| for part in fullname.split("."): |
| try: |
| with warnings.catch_warnings(): |
| |
| warnings.simplefilter("ignore", FutureWarning) |
| obj = getattr(obj, part) |
| except AttributeError: |
| return None |
|
|
| try: |
| fn = inspect.getsourcefile(inspect.unwrap(obj)) |
| except TypeError: |
| try: |
| fn = inspect.getsourcefile(inspect.unwrap(obj.fget)) |
| except (AttributeError, TypeError): |
| fn = None |
| if not fn: |
| return None |
|
|
| try: |
| source, lineno = inspect.getsourcelines(obj) |
| except TypeError: |
| try: |
| source, lineno = inspect.getsourcelines(obj.fget) |
| except (AttributeError, TypeError): |
| lineno = None |
| except OSError: |
| lineno = None |
|
|
| if lineno: |
| linespec = f"#L{lineno}-L{lineno + len(source) - 1}" |
| else: |
| linespec = "" |
|
|
| fn = os.path.relpath(fn, start=os.path.dirname(openfactcheck.__file__)) |
|
|
| if "+" in openfactcheck.__version__: |
| return f"https://github.com/hasaniqbal777/openfactcheck/blob/main/src/openfactcheck/{fn}{linespec}" |
| else: |
| return ( |
| f"https://github.com/hasaniqbal777/openfactcheck/blob/" |
| f"v{openfactcheck.__version__}/src/openfactcheck/{fn}{linespec}" |
| ) |
|
|
| def setup_to_main( |
| app: Sphinx, pagename: str, templatename: str, context, doctree |
| ) -> None: |
| """Add a function that jinja can access for returning an "edit this page" link pointing to `main`.""" |
|
|
| def to_main(link: str) -> str: |
| """Transform "edit on github" links and make sure they always point to the main branch. |
| |
| Args: |
| link: the link to the github edit interface |
| |
| Returns: |
| the link to the tip of the main branch for the same file |
| """ |
| links = link.split("/") |
| idx = links.index("edit") |
| return "/".join(links[: idx + 1]) + "/main/" + "/".join(links[idx + 2 :]) |
|
|
| context["to_main"] = to_main |
|
|
| def setup(app: Sphinx) -> Dict[str, Any]: |
| """Add custom configuration to sphinx app. |
| |
| Args: |
| app: the Sphinx application |
| Returns: |
| the 2 parallel parameters set to ``True``. |
| """ |
| app.connect("html-page-context", setup_to_main) |
|
|
| return { |
| "parallel_read_safe": True, |
| "parallel_write_safe": True, |
| } |