X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/9e3175428470403d01cdee9c710d5d38e8610860..5436810921a2649a30f42b82ff6563a1af16d40f:/docs/conf.py?ds=sidebyside diff --git a/docs/conf.py b/docs/conf.py index 4a3c67c..e9fdebb 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -12,55 +12,75 @@ # 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 -import sys +import string +from pathlib import Path + +from pkg_resources import get_distribution + +CURRENT_DIR = Path(__file__).parent -from recommonmark.parser import CommonMarkParser +def make_pypi_svg(version: str) -> None: + template: Path = CURRENT_DIR / "_static" / "pypi_template.svg" + target: Path = CURRENT_DIR / "_static" / "pypi.svg" + with open(str(template), "r", encoding="utf8") as f: + svg: str = string.Template(f.read()).substitute(version=version) + with open(str(target), "w", encoding="utf8") as f: + f.write(svg) -sys.path.insert(0, os.path.abspath('.' )) + +# Necessary so Click doesn't hit an encode error when called by +# sphinxcontrib-programoutput on Windows. +os.putenv("pythonioencoding", "utf-8") # -- Project information ----------------------------------------------------- -project = 'Black' -copyright = '2018, Łukasz Langa and contributors to Black' -author = 'Łukasz Langa and contributors to Black' +project = "Black" +copyright = "2018-Present, Łukasz Langa and contributors to Black" +author = "Łukasz Langa and contributors to Black" # Autopopulate version -import black +# The version, including alpha/beta/rc tags, but not commit hash and datestamps +release = get_distribution("black").version.split("+")[0] # The short X.Y version. -# TODO: fix for 2 digit month -version = f'{black.__version__[:4]}' -# The full version, including alpha/beta/rc tags. -release = black.__version__ +version = release +for sp in "abcfr": + version = version.split(sp)[0] + +make_pypi_svg(release) + # -- General configuration --------------------------------------------------- # If your documentation needs a minimal Sphinx version, state it here. -# -# needs_sphinx = '1.0' +needs_sphinx = "3.0" # 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.ext.intersphinx', + "sphinx.ext.autodoc", + "sphinx.ext.intersphinx", + "sphinx.ext.napoleon", + "myst_parser", + "sphinxcontrib.programoutput", + "sphinx_copybutton", ] -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +# If you need extensions of a certain version or higher, list them here. +needs_extensions = {"myst_parser": "0.13.7"} -source_parsers = { - '.md': CommonMarkParser, -} +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] # The suffix(es) of source filenames. # You can specify multiple suffix as a list of string: -source_suffix = ['.rst', '.md'] +source_suffix = [".rst", ".md"] # The master toctree document. -master_doc = 'index' +master_doc = "index" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. @@ -72,46 +92,40 @@ language = None # 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'] + +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' +pygments_style = "sphinx" + +# We need headers to be linkable to so ask MyST-Parser to autogenerate anchor IDs for +# headers up to and including level 3. +myst_heading_anchors = 3 + +# Prettier support formatting some MyST syntax but not all, so let's disable the +# unsupported yet still enabled by default ones. +myst_disable_syntax = [ + "colon_fence", + "myst_block_break", + "myst_line_comment", + "math_block", +] +# Optional MyST Syntaxes +myst_enable_extensions = [] # -- 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 = 'alabaster' - -html_sidebars = { - '**': [ - 'about.html', - 'navigation.html', - 'relations.html', - 'sourcelink.html', - 'searchbox.html' - ] -} - -html_theme_options = { - 'show_related': True, - 'description': '“Any color you like.”', - 'github_button': True, - 'github_user': 'ambv', - 'github_repo': 'black', - 'github_type': 'star', - 'show_powered_by': True, - 'fixed_sidebar': True, - 'logo': 'logo2.png', -} - +html_theme = "furo" +html_logo = "_static/logo2-readme.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'] +html_static_path = ["_static"] # Custom sidebar templates, must be a dictionary that maps document names # to template names. @@ -127,35 +141,22 @@ html_static_path = ['_static'] # -- Options for HTMLHelp output --------------------------------------------- # Output file base name for HTML help builder. -htmlhelp_basename = 'blackdoc' +htmlhelp_basename = "blackdoc" # -- Options for LaTeX output ------------------------------------------------ -latex_elements = { - # The paper size ('letterpaper' or 'a4paper'). - # - # 'papersize': 'letterpaper', - - # The font size ('10pt', '11pt' or '12pt'). - # - # 'pointsize': '10pt', - - # Additional stuff for the LaTeX preamble. - # - # 'preamble': '', - - # Latex figure (float) alignment - # - # 'figure_align': 'htbp', -} - # 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, 'black.tex', 'Documentation for Black', - 'Łukasz Langa and contributors to Black', 'manual'), + ( + master_doc, + "black.tex", + "Documentation for Black", + "Łukasz Langa and contributors to Black", + "manual", + ) ] @@ -163,10 +164,7 @@ latex_documents = [ # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). -man_pages = [ - (master_doc, 'black', 'Documentation for Black', - [author], 1) -] +man_pages = [(master_doc, "black", "Documentation for Black", [author], 1)] # -- Options for Texinfo output ---------------------------------------------- @@ -175,9 +173,15 @@ man_pages = [ # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ - (master_doc, 'Black', 'Documentation for Black', - author, 'Black', 'The uncompromising Python code formatter', - 'Miscellaneous'), + ( + master_doc, + "Black", + "Documentation for Black", + author, + "Black", + "The uncompromising Python code formatter", + "Miscellaneous", + ) ] @@ -199,12 +203,14 @@ epub_copyright = copyright # epub_uid = '' # A list of files that should not be packed into the epub file. -epub_exclude_files = ['search.html'] +epub_exclude_files = ["search.html"] # -- Extension configuration ------------------------------------------------- +autodoc_member_order = "bysource" + # -- Options for intersphinx extension --------------------------------------- # Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'https://docs.python.org/3/': None} +intersphinx_mapping = {"https://docs.python.org/3/": None}