""" Configuration file for 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 from datetime import datetime # Add the project root and source directories to the path sys.path.insert(0, os.path.abspath('../')) sys.path.insert(0, os.path.abspath('../hcfs')) # -- Project information ----------------------------------------------------- project = 'HCFS' copyright = f'{datetime.now().year}, HCFS Development Team' author = 'HCFS Development Team' # The full version, including alpha/beta/rc tags release = '2.0.0' version = '2.0.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 # extensions. extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.autosummary', 'sphinx.ext.viewcode', 'sphinx.ext.napoleon', 'sphinx.ext.intersphinx', 'sphinx.ext.coverage', 'sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.mathjax', 'sphinx_autodoc_typehints', 'sphinx_copybutton', 'myst_parser', 'sphinxcontrib.openapi', 'sphinxcontrib.httpdomain', 'sphinx_design', 'autoapi.extension', ] # 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. exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # The suffix(es) of source filenames. source_suffix = { '.rst': None, '.md': 'myst_parser', } # The master toctree document. master_doc = 'index' # -- Options for HTML output ------------------------------------------------- # The theme to use for HTML and HTML Help pages. html_theme = 'sphinx_rtd_theme' # Theme options are theme-specific and customize the look and feel of a theme html_theme_options = { 'collapse_navigation': False, 'sticky_navigation': True, 'navigation_depth': 4, 'includehidden': True, 'titles_only': False, 'logo_only': False, 'display_version': True, 'prev_next_buttons_location': 'bottom', 'style_external_links': True, } # Add any paths that contain custom static files (such as style sheets) here html_static_path = ['_static'] # Custom CSS files html_css_files = [ 'custom.css', ] # The name of the Pygments (syntax highlighting) style to use. html_pygments_style = 'sphinx' # Logo and favicon html_logo = '_static/logo.png' html_favicon = '_static/favicon.ico' # -- Extension configuration ------------------------------------------------- # Napoleon settings for Google/NumPy style docstrings napoleon_google_docstring = True napoleon_numpy_docstring = True napoleon_include_init_with_doc = False napoleon_include_private_with_doc = False napoleon_include_special_with_doc = True napoleon_use_admonition_for_examples = False napoleon_use_admonition_for_notes = False napoleon_use_admonition_for_references = False napoleon_use_ivar = False napoleon_use_param = True napoleon_use_rtype = True napoleon_preprocess_types = False napoleon_type_aliases = None napoleon_attr_annotations = True # Autodoc settings autodoc_default_options = { 'members': True, 'member-order': 'bysource', 'special-members': '__init__', 'undoc-members': True, 'exclude-members': '__weakref__' } autodoc_typehints = 'description' autodoc_typehints_description_target = 'documented' # AutoAPI settings for automatic API documentation autoapi_type = 'python' autoapi_dirs = ['../hcfs'] autoapi_root = 'api' autoapi_add_toctree_entry = False autoapi_generate_api_docs = True autoapi_python_class_content = 'both' autoapi_member_order = 'bysource' autoapi_options = [ 'members', 'undoc-members', 'show-inheritance', 'show-module-summary', 'special-members', 'imported-members', ] # Intersphinx mapping for cross-references intersphinx_mapping = { 'python': ('https://docs.python.org/3/', None), 'numpy': ('https://numpy.org/doc/stable/', None), 'scipy': ('https://docs.scipy.org/doc/scipy/', None), 'scikit-learn': ('https://scikit-learn.org/stable/', None), 'pandas': ('https://pandas.pydata.org/docs/', None), 'fastapi': ('https://fastapi.tiangolo.com/', None), 'pydantic': ('https://docs.pydantic.dev/latest/', None), 'httpx': ('https://www.python-httpx.org/', None), } # TODO extension todo_include_todos = True # MyST parser settings myst_enable_extensions = [ "colon_fence", "deflist", "dollarmath", "fieldlist", "html_admonition", "html_image", "linkify", "replacements", "smartquotes", "strikethrough", "substitution", "tasklist", ] # Copy button settings copybutton_prompt_text = r">>> |\.\.\. |\$ |In \[\d*\]: | {2,5}\.\.\.: | {5,8}: " copybutton_prompt_is_regexp = True # -- Options for LaTeX output ------------------------------------------------ latex_engine = 'pdflatex' latex_elements = { 'papersize': 'letterpaper', 'pointsize': '10pt', 'preamble': r''' \usepackage{charter} \usepackage[defaultsans]{lato} \usepackage{inconsolata} ''', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto, manual, or own class]). latex_documents = [ (master_doc, 'HCFS.tex', 'HCFS Documentation', 'HCFS Development Team', 'manual'), ] # -- Options for manual page output ------------------------------------------ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ (master_doc, 'hcfs', 'HCFS Documentation', [author], 1) ] # -- Options for Texinfo output ---------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ (master_doc, 'HCFS', 'HCFS Documentation', author, 'HCFS', 'Context-Aware Hierarchical Context File System.', 'Miscellaneous'), ] # -- Options for Epub output ------------------------------------------------- # Bibliographic Dublin Core info. epub_title = project epub_author = author epub_publisher = author epub_copyright = copyright # A list of files that should not be packed into the epub file. epub_exclude_files = ['search.html'] # -- Custom configuration ---------------------------------------------------- def setup(app): """Custom setup function.""" app.add_css_file('custom.css') # Add custom directives or configurations here pass # API Documentation settings openapi_spec_path = '../openapi.yaml'