text: # 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.
  #
  import os, sys, k1lib
  sys.path.insert(0, os.path.abspath('../k1lib'))
  
  
  # -- Project information -----------------------------------------------------
  
  project = 'k1lib'
  copyright = '2021, Quang Ho'
  author = 'Quang Ho'
  
  # -- 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.autodoc",
      "sphinx_autorun",
      "sphinx_toolbox.collapse",
      'sphinx.ext.intersphinx',
      'sphinx.ext.viewcode',
  ]
  
  autodoc_member_order = 'bysource'
  
  def skip(app, what, name, obj, would_skip, options):
      if name == "__init__":
          if (doc := obj.__doc__) is None: return True
          return doc.strip() == ""
      if name in {"__ror__", "__invert__"}: return False
      return would_skip
  
  def setup(app):
      app.connect("autodoc-skip-member", skip)
  
  # 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', '**/.ipynb_checkpoints', '.ipynb_checkpoints', '**/_*', '_*', "literals/*", "literals/**/*"]
  
  
  # -- Options for HTML output -------------------------------------------------
  
  html_theme = 'sphinx_rtd_theme' # 'alabaster'
  html_theme_options = {"navigation_depth": 20}
  
  # 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']
  
  intersphinx_mapping = {
      'python': ('https://docs.python.org/3', None),
      'numpy': ('https://numpy.org/doc/stable', None),
      'torch': ('https://pytorch.org/docs/master/', None),
      'matplotlib': ('https://matplotlib.org/stable/', None),
      'graphviz': ('https://graphviz.readthedocs.io/en/stable/', None),
      'PIL': ('https://pillow.readthedocs.io/en/stable/', None),
  }
  
  # generating literals
  
  with open("literals/settings.rst", "w") as f:
      with k1lib.captureStdout() as out:
          print(k1lib.settings.__repr__())
      f.write(".. code-block:: text\n\n" + "\n".join([f"   {e}" for e in out]))
  