| # 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 inspect | |
| import os | |
| import sys | |
| from pathlib import Path | |
| # -- Project information ----------------------------------------------------- | |
| project = "S3PRL" | |
| copyright = "2022, S3PRL Team" | |
| author = "S3PRL Team" | |
| # The full version, including alpha/beta/rc tags | |
| with (Path(__file__).parent.parent.parent / "s3prl" / "version.txt").open() as f: | |
| release = f.read() | |
| def linkcode_resolve(domain, info): | |
| def find_source(): | |
| obj = sys.modules[info["module"]] | |
| for part in info["fullname"].split("."): | |
| obj = getattr(obj, part) | |
| if isinstance(obj, property): | |
| return None | |
| file_parts = Path(inspect.getsourcefile(obj)).parts | |
| reversed_parts = [] | |
| for part in reversed(file_parts): | |
| if part == "s3prl": | |
| reversed_parts.append(part) | |
| break | |
| else: | |
| reversed_parts.append(part) | |
| fn = "/".join(reversed(reversed_parts)) | |
| source, lineno = inspect.getsourcelines(obj) | |
| return fn, lineno, lineno + len(source) - 1 | |
| if domain != "py" or not info["module"]: | |
| return None | |
| tag = "master" if "dev" in release else ("v" + release) # s3prl github version | |
| try: | |
| filename = "%s#L%d-L%d" % find_source() # specify file page with line number | |
| except Exception: | |
| filename = ( | |
| info["module"].replace(".", "/") + ".py" | |
| ) # cannot find corresponding codeblock, use the file page instead | |
| return "https://github.com/s3prl/s3prl/blob/%s/%s" % (tag, filename) | |
| # -- 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. | |
| # add extensions | |
| extensions = [ | |
| "sphinx.ext.autodoc", | |
| "sphinx.ext.napoleon", | |
| "sphinx.ext.viewcode", | |
| "sphinx.ext.linkcode", | |
| "sphinx.ext.autosummary", | |
| ] | |
| autosummary_generate = True | |
| html_js_files = [ | |
| "js/custom.js", | |
| ] | |
| html_css_files = ["css/custom.css"] | |
| # 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 = [] | |
| # -- 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 = "furo" | |
| # 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"] | |
| # Uncomment the following if you want to document __call__ | |
| # | |
| # def skip(app, what, name, obj, would_skip, options): | |
| # if name == "__call__": | |
| # return False | |
| # return would_skip | |
| # | |
| # def setup(app): | |
| # app.connect("autodoc-skip-member", skip) | |
| autosummary_imported_members = True | |
| autosummary_ignore_module_all = False | |
| autodoc_member_order = "bysource" | |